uso del tmr0
TRANSCRIPT
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
27/10/2011 Página 1
Uso de timer como generador de base de tiempos
Se desea realizar una temporización de 0.5 s utilizando el TMR0 del
PIC16F84A.
La frecuencia de trabajo del PIC es de 4 MHz, por lo que el timer
incrementa su cuenta cada µs (Tosc= ) dicho lo
anterior debemos contar 500,000µs.
500,000=(estados a contar)*(TMR0)*(Prescaler)*(contador)
Si el máximo es 256 selecciono un valor multiplo de 500,000, en este caso 250, este
valor se asigna al TMR0
256-250=6, entonces el prescaler seleccionado será el más cercano es 8
Prescaler=8*valor de contador
Prescaler=8*250µs=2,000µs cargando el TMR0 a 250
Si repito lo anterior cargando el timer 250 veces con ese valor obtenemos en un
ciclo 500,000µs (250*2,000 )
Otro ejemplo: se desea una temporización de 10ms utilizando el TMR0
10,000/250=40
256-40=216; cargamos el TMR0 con 216
Temp=10 ms; Prescaler=10000us/(216*1us)
Prescaler=256*40us=10240us ó 10.24ms (me paso por 240us)
Si selecciono 217 como valor de TMR0 entonces tendremos,
Prescaler=256*39us=9,984us (diferencia de 16us) el segundo caso es más
exacto.
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
27/10/2011 Página 2
Ejemplo de programacion del pic
;-------Configuración de puertos------- ORG 0x00 GOTO inicio ORG 0x04 ; Atiendo la interrupción BTFSS PORTB,0 ; si el LED está apagado GOTO LED ; voy a LED y lo enciendo BCF PORTB,0 ; sino apago el LED BCF INTCON,2 ; limpio la bandera T0IF RETFIE ; regreso habilitando la interrupción LED BSF PORTB,0 ; enciendo el LED BCF INTCON,2 ; borro la bandera T0IF RETFIE ; regreso habilitando la interrupción inicio BSF STATUS,5 ; configurando puertos CLRF TRISB ; puerto B es salida MOVLW 0x07 ; cargo w con 00000111 MOVWF OPTION_REG ; el Divisor = 256 BCF STATUS,5 MOVLW 0xA0 ; cargo w con 10100000 MOVWF INTCON ; habilitamos GIE y T0IE CLRF PORTB ; limpiamos PORTB tiempo MOVLW 0xD9 ; cargo w con 217 MOVWF TMR0 ; lo paso a TMR0 NADA BTFSS INTCON,2 ; me quedo haciendo nada GOTO NADA ; hasta que TMR0 desborde, y entonces GOTO tiempo ; volveré a cargar TMR0 ;------------------------------------------ END
olvide
cambiar el
dato dato