Está en la página 1de 0

Temporizador TMR0

Contador ascendente de 8 bits,


puede recibir pulsos desde el exterior
por la patita T0CKl o puede contar
los impulsos internos proporcionados
por CLKOUT cuya frecuencia Fosc/4.
Ing. Diana Valdivieso Herrera
Temporizador TMR0
El TMR0 se comporta como un
registro de propsito especial
ubicado en la posicin 1 del banco 0
de la memoria de datos, puede ser
escrito (movwf) y ledo (movf) en
cualquier momento.
Ing. Diana Valdivieso Herrera
Registro Option
Ing. Diana Valdivieso Herrera
El registro Option es un registro de
propsito especial ubicado en la
posicin 1 del banco 1, nos permite
configurar TMR0.
Ing. Diana Valdivieso Herrera
Ing. Diana Valdivieso Herrera
TMR0 como contador
inicio bsf 03,5
clrf trisb
movlw 1F
movwf trisa
movlw EF
movwf option
bcf 03,5
clrf tmr0
movf tmr0,0
Ing. Diana Valdivieso Herrera
TMR0 como temporizador
En este caso se utiliza el
desbordamiento del TMR0, para
controlar la duracin de un evento
en el programa, en este caso es
necesario verificar el registro INTCON.
Ing. Diana Valdivieso Herrera
Registro INTCON
Este registro ocupa la direccin 0BH del
banco 0 y est duplicado en 8BH del
banco 1.
Ing. Diana Valdivieso Herrera
De momento el bit que nos interesa es TOIF
(TMR0 Overflow Interrupt Flag bit), este flag
indica que se ha producido un
desbordamiento del Timer 0, es decir que
ha pasado de b11111111 a b00000000.
TOIF=0. El TMR0 no se ha desbordado.
TOIF=1. El TMR0 se ha desbordado (debe
borrarse por software)



Ing. Diana Valdivieso Herrera
Como se trata de un contador
ascendente, este debe ser cargado con
el valor que se desea contar restado de
256. Es decir para contar 100 impulsos se
debe cargar el valor decimal 156
Ing. Diana Valdivieso Herrera
Temporizacin=4(1/F)*Preescaler*(256-tmr0)

Temporizacin=tiempo deseado
Preescaler=rango del divisor
Tmr0=valor cargado en tmr0
Ing. Diana Valdivieso Herrera
El watchdog (WDT)
Es un contador de 8 bits, provoca un reset
cuando se desborda y esto ocurre cuando
el programa est colgado.
Puede ser bloqueado, mediante uno de los
bits de la palabra de configuracin
(utilizando la directiva __Config).
Ing. Diana Valdivieso Herrera
El watchdog se activa cada 18 ms, pero
este tiempo se puede ampliar hasta 2.3
segundos utilizando el divisor de frecuencia.
Ing. Diana Valdivieso Herrera
EEPROM de Datos
Consta de 64 bytes.
No estn mapeados en la memoria de
datos.
Para poder leerla y escribirla se utilizan 4
registros:
EEDATA
EEADR
EECON1
EECON2
Ing. Diana Valdivieso Herrera
Ing. Diana Valdivieso Herrera
Registros utilizados para
acceder a la EEPROM
EEDATA (direccin 8 del banco 0), guarda los
datos que se leen o escriben en la EEPROM.
EEADR (direccin 9 del banco 0) guarda la
direccin de memoria a acceder, puesto que
slo se necesitan 6 bits para direccionar 64
bytes, los 2 bits de ms peso de este registro
siempre son cero.
EECON2 (direccin 9 del banco 1), no
implementado, sirve como dispositivo de
seguridad.

Ing. Diana Valdivieso Herrera
Registros utilizados para
acceder a la EEPROM
EECON1(direccin 8 banco 1), sirve para el
control de las operaciones con la EEPROM,
a continuacin se muestra su distribucin.

Ing. Diana Valdivieso Herrera
Registro EECON1
RD: Lectura (1: cuando se va a leer la
EEPROM, pasa a 0 al terminar).
WR: Escritura (1: cuando se va a
escribir la EEPROM, pasa a 0 al
terminar).
WREN: Permiso de escritura (1:
habilita la escritura).

Ing. Diana Valdivieso Herrera
WRERR: Indicador de error en la
escritura (1: cuando la escritura
termina antes de tiempo).
EEIF: Indicador de final de escritura
(1: la escritura se complet con xito)
Ing. Diana Valdivieso Herrera
Proceso de Escritura
1 se carga en el registro EEDATA el
dato a grabar.
2 se carga en el registro EEADR la
direccin de la posicin a escribir.
3 se recomienda deshabilitar las
interrupciones.

Ing. Diana Valdivieso Herrera
4 se ejecuta la siguiente secuencia:
movlw 0x55
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR
5 esperar a que termine la escritura, el bit
EEI F del registro EECON1 se pone a 1y WR
se pone a 0.
6 deshabilitar la escritura y poner a 0 EEIF
Ing. Diana Valdivieso Herrera
Ejemplo
bcf status,rp0
movlw 00
movwf eeadr
movlw 12
movwf eedata
bsf status,rp0
bsf eecon1,wren
movlw 55
movwf eecon2
movlw 0aa
movwf eecon2
bsf eecon1,wr

Ing. Diana Valdivieso Herrera
Proceso de Lectura
1 El registro EEADR debe contener la
direccin de memoria a leer.
2 Puesta a 1 del bit RD del registro
EECON1.
3 Esperar a que la operacin termine,
el microcontrolador pone a 0 el bit RD.
4 Lectura en el registro EEDATA del
dato direccionado.
Ing. Diana Valdivieso Herrera
Ejemplo
bcf status,rp0
movlw 00
movwf eeadr
bsf status,rp0
bsf eecon1,rd
bcf status,rp0
movf eedata,w


Ing. Diana Valdivieso Herrera
Interrupciones
Tienen 4 causas:
1. Activacin de la patita RB0/INT.
2. Desbordamiento del temporizador TMR0.
3. Cambio de estado en una de las patitas
(RB4-RB7).
4. Finalizacin de la escritura en la EEPROM
de datos.



Ing. Diana Valdivieso Herrera
Interrupciones
Si las interrupciones estn permitidas:
Se deposita el valor de PC en la pila.
Se pone GIE a 0.
Se carga el PC con el valor 0004H.
Se debe verificar mediante programa de
que interrupcin se trata.
Ing. Diana Valdivieso Herrera
Registro Intcon
Como vimos anteriormente este registro se
encuentra ubicado en las direcciones 0BH
y 8BH.
Ing. Diana Valdivieso Herrera
Registro Intcon
GIE (Permiso Global de Interrupciones)
1: Permite la ejecucin de todas las
interrupciones cuyos bits individuales lo
permitan. 0: Las prohbe.
EEIE (Permiso de Interrupcin por fin de
escritura de la EEPROM)
1: Permite la interrupcin por fin de escritura
de la EEPROM.

Ing. Diana Valdivieso Herrera
Registro Intcon
TOIE (Permiso de Interrupcin por
sobrepasamiento del TMR0)
1: Permite la interrupcin.
INTE (Permiso de interrupcin por
activacin de la patita RB0/INT)
1: Permite la interrupcin.

Ing. Diana Valdivieso Herrera
Registro Intcon
RBIE (Permiso de interrupcin por cambio
de estado RB7: RB4)
1: Permite la interrupcin.
TOIF (Sealizador de sobrepasamiento del
TMR0)
1: Se pone a 1 al desbordarse TMR0


Ing. Diana Valdivieso Herrera
Registro Intcon
INTF (Sealizador de activacin de la
patita RB0/INT)
1: Toma este valor al activarse RB0/INT.
RBIF (Sealizador de cambio de estado
en las patitas RB7:RB4)
1: Toma este valor cuando detecta un
cambio de estado en alguna de estas
lneas.
Ing. Diana Valdivieso Herrera
Interrupcin externa INT
Se da con la activacin de la patita
RB0/INT, el bit INTF se pone a 1 y si INTE y
GIE estn en 1 se produce la
interrupcin.
Para utilizar esta interrupcin, se debe
configurar INTDEG del registro OPTION
(bit 6), para indicar al PIC el flanco
activo de la patita RB0/INT (flanco
ascendente=1,flanco descendente=0).
Ing. Diana Valdivieso Herrera
Interrupcin por
desbordamiento del TMR0
Ocurre cada vez que el contador pasa
de FFH a 00H. El indicador TOIF se pone
a 1 y si GIE y TOIE estn activas (valor
lgico 1) se produce la interrupcin.
Es necesario recargar el TMR0 cada vez
que se desborda, de lo contrario sigue
contando desde 00H hasta FFH.
Ing. Diana Valdivieso Herrera
Interrupcin por cambio de
estado en RB7-RB4
Esta interrupcin esta pensada para
trabajar con un teclado matricial
conectado a estas lneas, de modo que
cada vez que se presione una tecla se
activara la interrupcin. Su sealizador
es RBIF, para que se produzca la
interrupcin deben estar en 1 GIE y RBIE.
Ing. Diana Valdivieso Herrera
Interrupcin por finalizacin de
escritura en la EEPROM de datos
Debido al tiempo considerable que tarda
escribir en la EEPROM, 10 ms, es
recomendable utilizar la interrupcin que se
genera al finalizar la escritura, como en los
casos anteriores el sealizador EEIF se pone
en 1 y si GIE y EEIE son 1, la interrupcin se
realiza. Durante la escritura las
interrupciones deben estar prohibidas.
Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

También podría gustarte