Академический Документы
Профессиональный Документы
Культура Документы
Nombre
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit1
bit0
BANCO DE REGISTROS 0
00h
INDF
01h
TMR0
02h
PCL
03h
STATUS
IRP
04h
FSR
05h
PORTA
--
--
--
06h
PORTB
RB7
RB6
RB5
07h
RP1
RP0
T0#
PD#
DC
RB4/TOCKI
RA3
RA2
RA1
RA0
RB4
RB3
RB2
RB1
RB0
RBIE
TOIF
INTF
RBIE
08h
EEDATA
09h
EEADR
0Ah
PCLATH
--
--
--
0Bh
INTCON
GIE
EEIE
TOIE
INTE
BANCO DE REGISTROS 1
80h
INDF
81h
OPTION
RBPU#
82h
PCL
83h
STATUS
IRP
84h
FSR
85h
TRISA
--
86h
TRISB
87h
INTEDG
RP1
TOSC
RP0
--
--
TOSE
PSA
PS2
PS1
PS0
T0#
PD#
DC
88h
EECON1
--
89h
EECON2
--
--
EEIF
WRERR
WRWN
8Ah
PCLATH
--
--
--
8Bh
INTCON
GIE
EEIE
TOIE
INTE
RBIE
TOIF
WR
RD
INTF
RBIE
R/W-0
R/W-0
R/W-0
R-1
R-1
R/W-X
R/W-X
R/W-X
IRP
RP1
RP0
T0#
PD#
DC
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit1
bit0
R = bit de lectura
W = bit de escritura
-n = Valor del bit despus de un Reset
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
RBPU#
INTEDG
TOCS
TOSE
PSA
PS2
PS1
PS0
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit1
bit0
R = bit de lectura
W = bit de escritura
-n = Valor del bit despus de un Reset
bit 2-0 PS2:PSO: Rango con el que acta el Divisor de frecuencia
PS2 PS1 PS0
000
1:2
1:1
001
1:4
1:2
010
1:8
1:4
011
1:16
1:8
100
1:32
1:16
101
1:64
1:32
110
1:128
1:64
111
1:256
1:128
1: Flanco Ascendente
0: Flanco Descendente
bit 7 BPRU : Resistencia Pull-up Puerto B
1: Desactivadas
0: Activadas
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-X
GIE
EEIE
TOIE
INTE
RBIE
TOIF
INTF
RBIF
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit1
bit0
R = bit de lectura
W = bit de escritura
-n = Valor del bit despus de un Reset
0: Interrupcin desactivada
bit 4 INTE: Activacin de la interrupcin externa INT
1: Interrupcin activada
0: Interrupcin desactivada
bit 5 T0IE: Activacin de la interrupcin del TMR0
1: Interrupcin activada
0: Interrupcin desactivada
bit 6 EEIE: Activacin de la interrupcin de la memoria EEPROM
1: Interrupcin activada
0: Interrupcin desactivada
bit 7 GIE: Activacin Global de Interrupciones
1: Concedido el permiso de interrupciones
0: No hay posibilidad de interrupciones
U
bit 6
U
bit 5
R/W-0
R/W-x
R/W-0
R/W-0
R/W-0
EEIF
WRERR
WREN
WR
RD
bit 4
bit 3
bit 2
bit1
bit0
R = bit de lectura
W = bit de escritura
S = bit no implementado se lee como 0
-n = Valor del bit despus de un Reset
LAS INTERRUPCIONES
Las interrupciones constituyen quiz el mecanismo ms importante para la conexin del microcontrolador con el mundo
exterior, sincronizando la ejecucin de programas con acontecimientos externos.
El funcionamiento de las interrupciones es similar al de las subrutinas de las cuales se diferencian principalmente en los
procedimientos que las ponen en marcha. As como las subrutinas se ejecutan cada vez que en el programa aparece una
instruccin CALL, las interrupciones se ponen en marcha al aparecer en cualquier instante un evento externo al programa,
es decir por un mecanismo hardw are.
El PIC16C84/PIC16F84 dispone de 4 posibles fuentes de interrupcin:
1.
2.
3.
4.
Cuando se produce cualquiera de los sucesos indicados anteriormente, se origina una peticin de interrupcin, que si se
acepta, guarda el valor del PC actual en la Pila, pone a cero el bit GIE (Global Interrupt Enable), lo que prohibe cualquier
otra interrupcin y se carga el PC con el valor 0004H , que es la posicin del vector de interrupcin, y comienza a ejecutarse
el programa de atencin a la interrupcin que se encuentra a partir de esta direccin.
Cada causa de interrupcin est controlada mediante dos bit. Uno de ellos acta como sealizador o flag que indica si se ha
producido o no la interrupcin, y la otra funciona como bit de permiso o prohibicin de la interrupcin en s, tal y como se
muestra en la siguiente figura.
Los bits de control que se encuentran en el registro INTCON (0Bh 8Bh) habilitan y configuran las interrupciones. Para
que se pueda producir interrupcin por alguna de estas fuentes, el bit correspondiente debe estar a 1, mientras que los bits
sealizadores o flags que estn en los registros INTCON y EEDATA (08h) informan si se ha producido la interrupcin
cuando se ponen a 1. Cualquiera de las interrupciones tambin puede sacar al procesador del modo de reposo.
El bit GIE (Global Interrupt Enable) es el de activacin global del permiso de interrupcin, y se borra automticamente
cuando se reconoce una interrupcin para evitar que se produzca ninguna otra mientras se est atendiendo a la primera. Al
retornar de la interrupcin con una instruccin RETFIE, el bit GIE se vuelve a activar ponindose a 1. Para el resto de los bit
de indicacin de interrupcin (es decir, el resto de los flags) no se ha previsto mecanismo de puesta a cero, por lo que es e l
programa de atencin a la interrupcin el que debe realizar el tratamiento de la correspondiente interrupcin y adems, el
que debe poner el o los flags de indicacin de interrupcin a 0. De no ser as, no se podr salir de la rutina de atencin a la
interrupcin.
El microcontrolador solo dispone de un vector de interrupcin en la direccin 0004h; esto quiere decir que, sea cual sea la
fuente de la interrupcin, el PC se carga con 0004h. Por lo tanto, el programa de atencin a la interrupcin debe encargarse
de comprobar el estado de cada uno de los flags para saber cual es el dispositivo que produce la interrupcin y actuar
segn el caso.
Como ya hemos dicho el nico registro que se salva en la PILA es PC, luego si se necesita preservar algn otro registro
debe ser el propio programa de atencin a la interrupcin el que se encargue de salvar s u estado al inicio de la rutina y de
devolverlos al final del mismo, de igual modo que se haca en las subrutinas.
Resumiendo, las acciones que se realizan automticamente el microcontrolador y las que el programador debe tener en
cuenta en sus programas son las siguientes:
1.
2.
3.
4.
5.
6.
7.
8.
Cuando se activa una posible causa de interrupcin, el flag correspondiente se activa. Si el bit de permiso
correspondiente est a 1 y el bit de habilitacin de todas las interrupciones (GIE) est a 1, se produce la
interrupcin.
Para evitar que se produzca otra interrupcin mientras se est atendiendo a otra anterior, el bit GIE se pone a 0.
El valor del PC se guarda en la PILA
El PC se carga con el valor 0004h, que es el vector de interrupciones
El programador, debe comenzar la rutina de atencin a la interrupcin con un salto a la posicin de memoria
donde se encuentra el programa, seguidamente se guardan todos los registros que puedan ser modificados por
esta, seguidamente si estn habilitadas varias vas de interrupcin, se debe explorar el valor de los flag para
determinar la causa de la interrupcin.
Dependiendo de la causa de la interrupcin, la rutina de interrupcin se bifurca a la subrutina correspondiente.
Se deben devolver los valores que tenan los registros antes de producirse la interrupcin y se deben borrar por
softw are los flags que indican las fuentes de las interrupciones, antes del retorno al programa principal.
Cuando se llega a la ltima instruccin de la rutina de interrupcin, RETURN, se carga el PC con el v alor que se
guard inicialmente en la PILA y el bit GIE se pone automticamente a 1.
LA
EEPROM
DE
DATOS
INTERRUPCIN
POR
El rea de EEPROM dispone de 64 bytes donde opcionalmente, se pueden almacenar datos que no se pier den al
desconectar la alimentacin. El PIC 16C84 y el 16F84 soportan un milln de ciclos de escritura/borrado y son capaz de
guardar la informacin sin alteracin durante ms de 40 aos.
La memoria EEPROM no est mapeada en la zona de memoria de datos donde se encuentran los registros SFR y GPR.
Para poder leerla y escribirla durante el funcionamiento normal del microcontrolador hay que utilizar los registros especiales
EEDATA, EEADR, EECON1 y EECON2.
El Registro EEADR, se encuentra en la posicin de memoria 09h del banco 0, en el se carga directamente la direccin a la
que acceder de la EEPROM de datos. Las 64 posiciones de un byte ocupan las direcciones de un mapa que comienza en la
posicin 00h y termina en la 3Fh, por eso los 2 bits de ms peso del registro EEADR siempre valen 0.
Los bit RD y WR indican respectivamente lectura o escritura. No hay que ponerlos a 0 solo a 1. Se borran
automticamente cuando la operacin de lectura ha sido completada.
El registro EECON2 no est implementado fsicamente, por lo que es imposible leerlo (si se intenta leer, todos sus bits se
ponen a 0). Se emplea como dispositivo de seguridad durante el proceso de escritura de la EEPROM, para evitar las
interferencias en el largo intervalo de tiempo que precisa su desarrollo. La seguridad se consigue escribiendo los valores
concretos 55h y AAh. Un ciclo de escritura en una posicin EEPROM de datos tiene una duracin de 10 ms, que es un
tiempo muy grande para la velocidad del procesador.
Proceso de lectura de una posicin de memoria de la EEPROM: Comprende los siguientes pasos:
1.
2.
3.
4.
Seguidamente se muestra un programa capaz de leer la posicin de memoria MEM1, de la EEPROM de datos.
LECTURA
bcf STATUS,RP0
movlw MEM1
; Selecciona banco 0
; Direccin a leer de la EEPROM
movw f EEADER
ESPERA
bsf STATUS,RP0
; Selecciona banco 1
bsf EECON1,RD
;Activar Lectura
btfsc EECON1,RD
goto ESPERA
bcf STATUS,RP0
;Selecciona banco 0
movf EEDATA,W
Proceso de escritura de una posicin de memoria de la EEPROM: Comprende los siguientes pasos:
1.
2.
3.
4.
5.
Esta ltima instruccin inicia el proceso de escritura propiamente dicho. Cuando se termina el bit EEIF est a 1 y,
si ha sido activada la interrupcin EEPROM haciendo uso del bit EEIE de INCONT, esta interrupcin se genera.
Al acabar el proceso se pone a 0 el bit WR automticamente.
Mediante programa hay que poner a 0 el bit EEIF.
Un sistema para comprobar si se ha producido la escritura correctamente en la memoria EEPROM consiste en restar el
dato escrito con el que existe en el registro EEDATA. Si no se ha producido error el flag Z pasa a valer 1.
Seguidamente se muestra un programa que escribe en la posicin de memoria MEN1, de la EEPROM el dato DATO1.
ESCRITURA:
bcf STATUS,RP0
;Selecciona el banco 0
movlw MEN1
movw f EEADR
movlw DATO1
movw f EEDATA
bsf STATUS,RP0
;Selecciona el banco 1
movlw 0xaa ;
movw f EECON2
bsf EECON1,WR
;Comienza la escritura
ESPERA:
btfsc EECON1,WR
goto ESPERA
bcf STATUS,R0
;Selecciona el banco 0
Microchip recomienda que se deshabiliten las interrupciones durante la secuencia de, aadiendo las siguientes
instrucciones al principio y final de la secuencia.
BCF INTCON,GIE ;Deshabilita interrupcin
BSF INTCON,GIE ;Habilita interrupcin
Proceso de verificacin de la escritura. Dependiendo de la aplicacin, es aconsejable que se compruebe que los dat os se
estn escribiendo correctamente; aunque esto no suele ser necesario en la mayora de las ocasiones, para las posiciones
de memoria EEPROM es aconsejable.
10