SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: iova en Jueves 26 de Octubre de 2006, 02:18
-
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 )
-
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?????
-
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.
TIEMPO CLRF CONT1
MOVLW 20H
MOVWF CONT2
RESTA1 DECFSZ CONT1,F
GOTO RESTA1
DECFSZ CONT2,F
GOTO RESTA1
RETURN
END
:hola:
-
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!!!!
-
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!!!!
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: