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
Ir a la versión completa