Programación Específica > Microcontroladores

 Rutina Tiempo

(1/1)

iova:
El tema es el sig : debo hacer unas rutinas de tiempo con el fin de esperar nada mas...o sea no necesito que se active una interrupcion lugo de que TMR0 llegue a 256. Las rutinas que encontre son las siguientes:

Wait100mSec                                        
         MOVLW  D'0006'      ; 6 x 16.384msec = 98.304msec
         MOVWF  COUNT
         GOTO   WaitLoop
500mSeg
         MOVLW  D'0030'      ; 30 x 16.384msec = 491.52msec
         MOVWF  COUNT
WaitLoop
         MOVLW  D'0192'      ; 256-64=192,  64 x 256usec = 16.384msec
         MOVWF  TMR0         ; Aca que ocurre?TMR0 cuenta hasta 256 y sigue la instruccion siguiente???No hace falta mas nada??
Wait16
         CLRWDT
         MOVF   TMR0, W
         BNZ    Wait16            ; esta instruccion BNZ que es???Que hace???

         DECFSZ COUNT, F
         GOTO   WaitLoop
         RETLW  0


Estoy tratando de adaptar un codigo de Receptor de X-10 para hacer un Tx y Rx de protocolo X10 para un ventilador de techo (luego preguntare bien tema del dimmer jeje). Necesito rutinas de espera de tiempos de 500mSeg, 100mSeg y 250uSeg (valores cercanos sirven) usare XT de 4 Mhz.

Desde ya gracias!!!!!!!!!(En cuanto termine Rx subire el Trabajo asi me dan una idea de como implementar el Tx )

iova:
O sea, mi idea es perder tiempo ...nada mas...no necesito que me avise algo por eso pregunto si debo configurar INTCON y T0IE tambien o lo puedo dejar asi como esta ahi y tendre ese retardo y luego seguira con la proxima instruccion....o conviene hacerlo de otra forma las rutinas de tiempo muerto?????

Mollense:
Esta es una rutina muy sencilla que yo uso para esperar un determinado tiempo.
En cuanto al tiempo de espera es muy facil de manejar, debes calularlo de acuerdo al cristal que uses y a los ciclos de reloj de cada instrucción que uses en tu rutina de espera.


--- Código: Text --- TIEMPO   CLRF CONT1   MOVLW 20H   MOVWF CONT2  RESTA1   DECFSZ  CONT1,F   GOTO  RESTA1    DECFSZ  CONT2,F   GOTO  RESTA1    RETURNEND  
 :hola:

iova:
Gracias por la respuesta...he intentado a tu manera de conseguir los tiempos muertos de 16384 mseg, 100mseg y 500mseg pero  cdo lo corro en un simulador la cuenta me da cualquier cosa.........(estoy usando crystal de 4 mhz)..seguire probando y buscando...gracias!!!!

Mollense:

--- Cita de: "iova" --- Gracias por la respuesta...he intentado a tu manera de conseguir los tiempos muertos de 16384 mseg, 100mseg y 500mseg pero  cdo lo corro en un simulador la cuenta me da cualquier cosa.........(estoy usando crystal de 4 mhz)..seguire probando y buscando...gracias!!!!
--- Fin de la cita ---
Es lógico que te suceda, pero los simuladores siempre van a tardar más tiempo por cada instrucción que el circuito una vez montado (Por lo menos los que yo conozco). Yo sostengo lo que te dije y te recomiendo que lo pruebes aunque sea en un protoboard.

Saludos  :hola:

Navegación

[0] Índice de Mensajes

Ir a la versión completa