1. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
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.
27/10/2011 Página 1
2. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
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
olvide
cambiar el
MOVLW 0xA0 ; cargo w con 10100000
dato dato 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
27/10/2011 Página 2