TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: todopic en 17 de Agosto de 2002, 21:19:00

Título: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 17 de Agosto de 2002, 21:19:00
Interesante programa que, introduciendo el tiempo, genera el codigo asembler... <img border=0 src="http://pics.miarroba.com/caretos/wink.gif">


PIC_DEL SP (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=5968.0;attach=378)
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: Veguepic en 14 de Mayo de 2006, 22:11:46
Repongo el programa que se perdio por la migracion.

Creo deberia tener chincheta pues es muy util.

Saludos
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: BrunoF en 15 de Mayo de 2006, 01:05:26
Hola veguepic, te comento. Muchos adjuntos de mi@  se perdieron en la migracion.Tampoco puedo acceder(ni recuerdo) cuales temas tenian chincheta en mi@. Si me hechan una mano para recordar, les agradecere y con gusto les pondre chincheta.
Muchas gracias x la reposicion.
Bruno.
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: Veguepic en 15 de Mayo de 2006, 01:52:02
Hola BrunoF, pude acceder a mi@ y solo faltaria chincheta al de los Desensambladores que ya actualice los archivos.

http://www.todopic.com.ar/foros/index.php?topic=5966.0

Saludos

Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: Jarechiga en 18 de Mayo de 2006, 13:10:39
Buen programa

Yo suelo usar esta pagina
http://www.piclist.com/cgi-bin/delay.exe
(ojo no parece ser descargable)

Al parecer el programa posteado genera codigo mas compacto.
Ventajas ? Desventajas?

Yo solo veo ventajas, pues usa menos lineas y mi codigo queda mas entendible. Supongo que de igual manera utiliza menos memoria.

Otras caracteristicas:
Picdel_sp.exe
-Te dice niveles de stack necesarios (muy util cuando trabajo con el 16F5X que solo tiene 2 niveles)

http://www.piclist.com/techref/microchip/delays.htm
-Puedes elejir el nombre de las funciones
-Puedes elejir el nombre de los registros

Ambos son buenos y de ahora en adelante los usare de acuerdo a la necesidad

Otros ejemplos:
http://www.piclist.com/techref/microchip/delays.htm
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: Leon Pic en 31 de Agosto de 2007, 16:35:07
Hola Jarechiga muy buenos link, yo solo utilizaba el de todopic que es muy bueno y me venía salvando, pero ahora voy a utilizar según el caso.

Saludos.  :-/ :-/
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: alogic.on en 14 de Octubre de 2007, 07:52:26
Hola
yo para los calculos soy lo que se dice un poco bruto  :D encontre este programa que aunque la version completa es la que tiene mas posibildades la free no está nada mal, calcula los tiempos de los tmr con 8 y 16 bits y la F/osc.... mejor verlo  :mrgreen:
http://www.mister-e.org/pages/utilitiespag.html
he de decir que al cabo de unos meses instalado el programa se autocrakea te permite usar todas las utilidades
un saludo
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: scabreram en 22 de Octubre de 2007, 00:08:02
GRACIAS A TODOS
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: Scan_I en 22 de Mayo de 2009, 20:20:15
Estimados amigos, como gran novato, Yo empleo el Niple, me bajé la versión demo (gratis) que no me sirve para mis proyectos, pero me genera el asm para cualquier retardo.
Acabo de descargar el programita Picdel_sp, ya os contaré...

saludos
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: jesuscas64 en 26 de Enero de 2011, 03:10:06
BUeno chicos yo hice unas macros de assembler para eso, tu solo colocas en el Mplab  Retardo  valor, unidad y te da el retardo va desde 1 seg hasta 65535 seg, igual aplica para ms y us. Ej: Retardo 1,MS (1ms), Retardo 10,SEG. Esta probado ...  :D  solo incluyes en tu programa #include <macros.inc>, #include <subrutinas.inc>. Bueno tambien hay un programa pa eso que se llama pikloops, viene integrado con piklab IDE. Es bueno para generar retardos. Pero prefiero mis macros ...
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 26 de Enero de 2011, 03:28:54
Hola Jesus, estamos ansiosos para poder "ver" tú macro   ;-) :mrgreen:

Norberto
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: c@Lic_0 en 04 de Febrero de 2011, 15:32:28
estoy totalmente de acuerdo con norberto  8) :-/ :D :D
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: bigluis en 28 de Febrero de 2011, 20:39:57
 :8} :8} :8} no pude utilizar el programa PIC_DEL_SP porque tengo la version de 64bits de win7  :8} :8} :8}
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: agauss en 19 de Marzo de 2011, 03:36:27
Conozco el programa, bastante util aunque me gusta mas el tener que tomarse la molestia de generarlas uno mismo, definitivamente un excelente ejercicio para adentrarse en el ensamblador:

Código: [Seleccionar]
delay:  movlw  .81
        movwf  PDel

DLoop:  decfsz PDel,1
        goto   DLoop

        nop
        nop

        return

La ecuacion para esta rutina seria:

delay(Tcy) = 3*PDel + 7

Entonces para un crystal de 4Mhz tendriamos un tiempo por ciclo Tcy = 1us de acuerdo a la expresion: Tcy = 4/Fosc, entonces la demora en tiempo seria de 250us.

La rutina con PICdel seria esta:

Código: [Seleccionar]
PDelay: movlw     .61
        movwf     PDel0

PLoop0: clrwdt
        decfsz    PDel0,1
        goto      PLoop0

        clrwdt

        return

Cuya ecuacion seria:

PDelay(Tcy) = 4*PDel0 + 6

Con el mismo crystal de 4Mhz.

En conclusion para un rapidin: PICdel

Para conocer ensamblador definitivamente; hazlo tu mismo  :), es cuestion de gustos, pero esto de las rutinas de demora es facinante (Just do it!!!).

saludos...

Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: Camello83 en 29 de Julio de 2011, 16:37:09
muy buen post.... ya probé varios codigos y funcionan bien! gracias por compartirlo
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: groundman en 01 de Noviembre de 2011, 15:11:37
Hola.yo estoy usando el PDEL ver SP_1 y para el 18f2550 no me da el código correcto.
Almenos en el proteus los tiempos no se corresponden.habra otro generador de demoras para esta serie?
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: estancos en 12 de Enero de 2012, 22:39:34
Interesante programa que, introduciendo el tiempo, genera el codigo asembler... <img border=0 src="http://pics.miarroba.com/caretos/wink.gif">


PIC_DEL SP (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=5968.0;attach=378)

Hola, soy nuevo en este foro y también en lo que respecta a los pic. Llegué a esto de los pic´s buscando resolver algunos problemas artísticos ya que en realidad mi interés tiene que ver con las artes audiovisuales, claro que me gusta mucho la electrónica y demás. Pero bueno, paso a detallar una duda que tengo. Tratando de practicar con un 16F84A intenté temporizar  con asembler (lo poco que se de asembler son apenas algunas cosas que leí de internet) a partir de bucles sin usar el tmr0. Lo que quería hacer es automatizar una bomba portátil para la pileta, pero resulta que todo me anda bárbaro cuando uso espacios de tiempo cortos. Cuando intento armar lo mismo pero con largos periodos de tiempo no me funciona. Por ejemplo quería que la bomba se encendiera durante unos 45´, se apagara durante unas 10hs. etc., etc. Use el generador de código incluso, pero tampoco hubo caso. Cuando compilo con mplab no me marca error, e incluso use el icprog para quemar el pic y tampoco me marcó error, sin embargo sí me marca error el proteus. El led con el que estuve probando se queda encendido. Bueno, agradezco si alguien me puede dar una mano. Saludos. Leonardo 
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 12 de Enero de 2012, 23:54:39
Hola Estancos, necesitariamos ver el programa para poder ayudar...  :mrgreen:
pero basicamente, puedes con el programa ejecutar una demora de 250 milisegundos..
si a esa rutina la llamas 4 veces... al finalizar ya tienes un segundo
si a ese segundo lo llamas 60 veces, tienes el minuto
y asi hasta obtener tus 10 horas...

sube tu programa ok
Saludos
Norberto
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: fabianjsm en 13 de Enero de 2012, 08:16:12
Si estas generando la rutina de retardo con alguna de las aplicaciones citadas anteriormente no deberías tener problemas.
También podrías bajar la frecuencia del oscilador para desperdiciar mas tiempo con menos ciclos de reloj.
Recurriendo a estos bucles tan largos la alimentación debe ser confiable, de modo que el micro no reinicie por ninguna razón durante el transcurso de todo el tiempo.
De última podrías recurrir a un reloj externo tal como el DS1307  :lol:
Esperamos tu código fuente.
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: estancos en 13 de Enero de 2012, 12:52:07
Si estas generando la rutina de retardo con alguna de las aplicaciones citadas anteriormente no deberías tener problemas.
También podrías bajar la frecuencia del oscilador para desperdiciar mas tiempo con menos ciclos de reloj.
Recurriendo a estos bucles tan largos la alimentación debe ser confiable, de modo que el micro no reinicie por ninguna razón durante el transcurso de todo el tiempo.
De última podrías recurrir a un reloj externo tal como el DS1307  :lol:
Esperamos tu código fuente.

Hola  gente, de nuevo. acá les pego el código. Fui sacando las distintas rutinas del generador de código, y las armé de acuerdo a lo que pensé que estaría bien. Les agradezco la ayuda.
Leonardo

;---------------Encabezado-------------

   LIST   p=16f84a        
   radix   hex        

;------------mapa de memoria---------

estado   equ   0x03        
TRISB   equ   0x06        
ptob   equ   0x06

;-------Configuración de puertos-------

reset   org       0x00
      goto   inicio
      org      0x05      
inicio   bsf    estado,5          
      movlw   b'00000000'   
      movwf   TRISB      
      bcf    estado,5        

;----Aquí enciende la bomba 45'-----

ahora   bsf      ptob,0        

   cblock   0x0a
   d1
   d2
   d3
   d4
   endc
   movlw   0xFF
   movwf   d1
   movlw   0xA3
   movwf   d2
   movlw   0xE2
   movwf   d3
   movlw   0x12
   movwf   d4
Delay_0
   decfsz   d1,f
   goto   $+2
   decfsz   d2,f
   goto   $+2
   decfsz   d3,f
   goto   $+2
   decfsz   d4,f
   goto   Delay_0
   goto   $+1   
   bcf      ptob,0

;-----apaga durante 10:15hs-----

   cblock   
   e1
   e2
   e3
   e4
   endc
   movlw   0xFF
   movwf   e1
   movlw   0x09
   movwf   e2
   movlw   0x62
   movwf   e3
   movlw   0xF5
   movwf   e4
Delay_1
   decfsz   e1,f
   goto   $+2
   decfsz   e2,f
   goto   $+2
   decfsz   e3,f
   goto   $+2
   decfsz   e4,f
   goto   Delay_1
   goto   $+1
   bsf      ptob,0


;-----enciende durante 45'-----

   cblock   
   f1
   f2
   f3
   f4
   endc
   movlw   0xFF
   movwf   f1
   movlw   0xA3
   movwf   f2
   movlw   0xE2
   movwf   f3
   movlw   0x12
   movwf   f4
Delay_2
   decfsz   f1, f
   goto   $+2
   decfsz   f2, f
   goto   $+2
   decfsz   f3, f
   goto   $+2
   decfsz   f4, f
   goto   Delay_2
   goto   $+1
   bcf      ptob,0

;-----apaga durante 12:15hs-----

   cblock   
   g1
   g2
   g3
   g4
   g1_4
   endc
   movlw   0x5C
   movwf   g1
   movlw   0xE0
   movwf   g2
   movlw   0xF6
   movwf   g3
   movlw   0xEF
   movwf   g4
   movlw   0x01
   movwf   g1_4
Delay_3
   decfsz   g1, f
   goto   $+2
   decfsz   g2, f
   goto   $+2
   decfsz   g3, f
   goto   $+2
   decfsz   g4, f
   goto   $+2
   decfsz   g1_4, f
   goto   Delay_3
   goto   $+1
   nop
   goto   ahora

   end
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 13 de Enero de 2012, 14:33:32
Hola, lo primero que encuentro, es que está mal empleado el cblock, ya que aunque sea el primero, tendria que tener la direccion donde colocar los registros.. por ejemplo 20h  (depende del micro) 0ch etc


por ejemplo , este retardo es de un cuarto segundo
;-------------------------------------------------------------
; Generado con PDEL ver SP  r 1.0  el 13/01/2012 Hs 14:27:31
; Descripcion: Delay 250000 ciclos
;-------------------------------------------------------------
DEMORA  movlw     .197      ; 1 set numero de repeticion  (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .253      ; 1 set numero de repeticion  (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 ciclo delay
        decfsz    PDel1, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2 
        return              ; 2+2 Fin.
;-------------------------------------------------------------


entonces podria llamarlo con CALL 4 VECES

UN_SEGUNDO
     CALL DEMORA
     CALL  DEMORA
     CALL DEMORA
     CALL  DEMORA
   RETURN

;----------------------------------------------------
UN_MINUTO   ;    ESTO PRODUCE UNA DEMORA DE UN MINUTO
     MOVLW  .60
    MOVWF MINUTO     ;(tienes que declarar el registro MINUTO)
   CALL UN_SEGUNDO
   DECFSZ  MINUTO,F   ;REALIZO 60 VECES ESTE CICLO
   GOTO $-2                 ;AL TERMINAR, RETORNA
   RETURN
;------------------------------------------------------

UNA_HORA
    MOVLW  .60
    MOVWF HORA     ;(tienes que declarar el registro HORA)
   CALL UN_SEGUNDO
   DECFSZ  HORA,F   ;REALIZO 60 VECES ESTE CICLO
   GOTO $-2                 ;AL TERMINAR, RETORNA
   RETURN
;-----------------------------------------------------






Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 13 de Enero de 2012, 14:35:53
No se por que se me "subio" solo lo que escribi antes...

entonces, en tu programa
enciendes la bomba


bsf bomba ; encendida
CALL UNA_HORA  ;llama a la demora por una hora
bcf bomba  ; apagado de la bomba


espero se entienda ok?

Saludos!
Norberto
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: estancos en 13 de Enero de 2012, 16:42:44
Muchas gracias Norberto, voy a ver si lo pruebo hacer como vos me decís.
Estaba tratando de esquivar el "perro guardián" e incluso el tmr por que no termino de entender muy bien cómo aplicarlo. Respecto del cblock solo lo copié y lo pegué tal como me lo daba el generador. Bueno, voy a ver como me va con lo que subiste.
Gracias.
Leonardo
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 13 de Enero de 2012, 18:03:50
Hola Estancos, tené en cuenta, que te faltan colocar dentro del cblock, todos los registros, es decir, pdel1, pdle2, pdel0, un_minuto, una_hora,un_segundo
y lo que te presente, seria para una hora.. tendras que hacerlo para tus requerimientos ok?
allí no empleo ni perro guardián ni timer0
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: estancos en 25 de Enero de 2012, 00:27:16
Hola Estancos, tené en cuenta, que te faltan colocar dentro del cblock, todos los registros, es decir, pdel1, pdle2, pdel0, un_minuto, una_hora,un_segundo
y lo que te presente, seria para una hora.. tendras que hacerlo para tus requerimientos ok?
allí no empleo ni perro guardián ni timer0
Hola Norberto, disculpá la demora en contestar. Vos sabés que al final lo único que hice fue designarle las direcciones al cblock, tal como me dijiste al principio, y me anduvo bárbaro! La verdad es que a estas instrucciones no las había usado hasta ahora, o sea que solo copié y pegué pero en realidad no las entiendo. Voy a tener que ponerme a estudiar un poco...
Ah, a propósito, no sabés cómo puedo armar una fuente para que me alimente con 5v el pic y con 12v el relé? Compré para probar una de esas comunes que son tipo cargador de baterias para celulares, pero resulta que tenía que conectar una de 12v al relé y una de 5v al pic porque sino no andaba. Bueno, muchas gracias.
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: todopic en 25 de Enero de 2012, 11:09:48
tenes que emplear un regulador 7805, entras con la tension de 12, que empleas para alimentar el rele, y a la salida , obtenes los 5v para el micro. Atencion al diodo necesario para la bobina del rele, y los capacitores de filtro para el regulador. Busca que en el foro hay circuitos.
Saludos
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: luisccl en 27 de Febrero de 2013, 14:42:17
Pues tengo el problema que no corre en Windows 7 64bits, lo cual es una lastima ya que todos hablan muy bien de el, no saben como podria hacerlo correr aca??, intente modo de compatibilidad y nada... es realmente una lastima :(

Interesante programa que, introduciendo el tiempo, genera el codigo asembler... <img border=0 src="http://pics.miarroba.com/caretos/wink.gif">


PIC_DEL SP (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=5968.0;attach=378)
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: VOLTIO en 04 de Septiembre de 2014, 13:46:29
buen dia , hoy baje este programita para hacer demoras y como ahora en mi pc tengo win7 me encontre que no funciona , alguien sabe de algun otro ??
gracias
Título: Re: programa para GENERAR DEMORAS en asembler
Publicado por: jhozate en 04 de Septiembre de 2014, 14:38:07
no te vale ejecutarlo en modo compatibilidad?
Título: Re:programa para GENERAR DEMORAS en asembler
Publicado por: Argonaut en 17 de Febrero de 2016, 13:16:39
La Santísima Madre mía del hermoso PIC  :-/ :-/ :-/ :-/ Ole...ole me he caído en el hilo cierto  :-) que valiosas informaciones, como anillo en mis dedos, pues es esto mismo en que estoy tratando de hacer en un proyecto de temporizador cíclico, que por cierto me está derritiendo el celebro, el programa pic_del sp no me va, por usar Windows 10 a 64bits, pero la pagina web si que funciona, y justo hay me voy intentar cosas. Gracias a todos.
Título: Re:programa para GENERAR DEMORAS en asembler
Publicado por: johanna en 09 de Septiembre de 2016, 16:33:54
Xfa me podrian ayudar con esto en mips assembler    for (i = 0; i <100; i ++)
                                                                                      i ++;

como puedo hacer ese arreglo


Título: Re:programa para GENERAR DEMORAS en asembler
Publicado por: KILLERJC en 09 de Septiembre de 2016, 17:06:29
EDIT, acabo de leer, y es MIPS ASM. Luego veo. Voy a intentarlo:

Código: ASM
  1. add     $3, $0, $0   ; un registro a 0
  2.         addi    $2, $0, 100 ; un registro a 100
  3. loop
  4.         addi    $2, $2, 1  ; Incremento en 1
  5.         bne     $2, $3, salida  ; Compruebo si no es igual
  6.         addi    $2, $2, 1  ; incremento en 1
  7.  
  8. salida
  9.        ;aca otro codigo

El tema es que corresponde a un M4K que tiene un branch delay de 1, es decir que la siguiente instruccion a partir del salto se ejecutaria por el pipeline. Si no por las dudas podrias hacer

Código: ASM
  1. add     $3, $0, $0   ; un registro a 0
  2.         addi    $2, $0, 100 ; un registro a 100
  3. loop
  4.         addi    $2, $2, 2  ; Incremento en 2
  5.         bne     $2, $3, salida  ; Compruebo si no es igual
  6.         nop
  7.  
  8. salida

Obviamente no probado solo de curioso.
Título: Re:programa para GENERAR DEMORAS en asembler
Publicado por: mariano_pic en 13 de Agosto de 2025, 18:19:07
Amigos, un saludo luego de muchos años.
Con la nostalgia de los viejos tiempos he creado una versión 32-64 bits de este programa como un tributo al recuerdo
y para aquellas personas que quieren aprender el ASM de los PIC y tienen problemas con las demoras.

Espero este tributo sea del agrado de todos.
Acá les dejo el link para los que gusten probar.

https://github.com/AdminMariano/PICDelayGenerator.exe (https://github.com/AdminMariano/PICDelayGenerator.exe)