You are on page 1of 48

Microcontrolador PIC16F87XA CPU con set de instrucciones RISC:

35 instrucciones de una sola palabra (14 bit). Arquitectura de Buses Hardvard. Todas las instrucciones de un solo ciclo, excepto para los saltos de programa, los cuales dos tiempos: (Ej: GOTO, CALL). Velocidad de funcionamiento: 32 KHz - 20 MHz de reloj de entrada DC - 200 ns ciclo de instruccin (mnimo) 4K x 14 palabras de memoria Flash de programa. 192 registros x 8 bytes de datos para el usuario en la memoria (SRAM). 128 registros x 8 bytes de memoria EEPROM de datos Compatible con otros microcontroladores de 28 pines PIC16C873 y PIC16F876A. 14 fuentes de interrupciones.

Microcontrolador PIC16F87XA Caractersticas Perifricas: Timer0: de 8-bit con prescaler Timer1: Temporizador/Contador de16-bit con prescaler, se puede incrementar durante modo SLEEP a travs de cristal externo / reloj. Timer2: Temporizador/Contador de 8 bits / contador con registro de 8 bits con prescaler y postscaler Dos mdulos de captura, comparacin y PWM. Mdulos Capture es de 16 bits, mx. resolucin es de 12,5 ns. Mdulos Comparacin es de 16 bits, mx. resolucin es de 200 ns. - Modulo PWM mx. resolucin es de 10 bits. Puerto serie sncrono (SSP) con SPI (Master modo) e I2C (maestro / esclavo). Universal Synchronous Asynchronous Receiver Transmitter (USART / SCI) con deteccin de direccin de 9 bits. Puertos paralelos A, B y C Circuito de de deteccin Brown Brown-out (BOR)

Seleccin de opciones del oscilador.


Circuitos de programacin a travs de dos pines.

Caractersticas Analgicas: Conversor Digital de 10 bits, con hasta 5 canales analgicos (A / D):
Mdulo Comparador analgico con: Dos comparadores analgicos -Modulo de tensin de Referencia con voltajes programable en el chip (VREF). -Multiplexado de entradas programables de dispositivos y tensin de referencia interna -Salidas del comparador es accesible desde el exterior.

Caractersticas especiales del microcontrolador: 100.000 Ciclos de borrado / escritura de memoria de programa Flash tpica.
1.000.000 Ciclos de borrado / escritura de datos de la memoria EEPROM tpica.

Auto-reprogramable por software.


Circuitos de programacin serie (ICSP ) a travs de dos pines Tensin de programacin nica de 5V en programacin de serie

Watchdog Timer (WDT) con su propio oscilador RC en el chip para una


operacin confiable. Cdigo de proteccin de Programacin. Modo de suspensin para Ahorro de energa (SLEEP). TECNOLOGA CMOS: Bajo consumo de energa, alta velocidad de Flash / Tecnologa de la EEPROM Amplio rango de voltaje (3.0V a 5.5V)

Dispositivos comerciales y de rangos de temperatura industrial

Encapsulado

Los dispositivos PIC16F873A/876A slo estn disponibles en 28-pines. Los dispositivos PIC16F874A/877A estn disponibles en 40 pines.

Arquitectura Interna (Harvard)

Arquitectura Interna Hardvard (PIC 16F873A)


Memoria de Datos (SRAM)

Memoria de Programa

Bus de Direcciones 13 bit

CPU
PC (13 Bits) IR Instruction Register STACK (8 niveles)

Bus de Banco0 Banco1 Banco2 Banco3 Direcc. 9 bit

Reg. Propsitos Especiales

(Flash)
2K registros x 14 bit
Bus de Instrucc. 14 bit

ID Decoders of Bus de Instruction Datos


8 bit

Reg. Propsitos Generales

ALU W

STATUS TMR0 TMR1 TMR2 Oscilador EEPROMd USART atos comunic. Puerto A Puerto B CAD Vref CCP1

WDT, RESET, /BOR, Interrupciones

MODULOS PERIFERICOS

Ciclo de instruccin en Pipeline


El microcontrolador ejecuta la secuencia de instrucciones en base a la cadencia de un oscilador principal (resonador o cristal o RC)
Un Ciclo de instruccin esta compuesto de 4 ciclos de reloj principal y se denominan Q1,Q2,Q3,Q4. Las instrucciones son ejecutadas en pipelining, esto es que mientras el CPU realiza la bsqueda (Fetch) de una instruccin, simultneamente realiza la descodificacin y ejecucin de la instruccin anterior. Ambas acciones se realizan en un ciclo de instruccin. Si una instruccin cambia el contador de programa para realizar un salto (Ejemplo: GOTO, CALL, SKIP) son necesarios dos ciclos para la ejecucin. INTRUCTION PIPELINE FLOW Fetch 1 Execute 1 Fetch 2 Execute 2 Fetch 3 Execute 3 Fetch 4 1. MOVL 0x55 2.MOVWF PORTB 3.CALL SUB1 4.BSF PORTA,3 Flush Fetch SUB1 Execut. SUB1

Esquema del Ciclo de Reloj en la Ejecucin

La instruccin es buscada en la memoria de instrucciones y guardada en el registro IR en el ciclo Q1.

La descodificacin y ejecucin son realizadas durante los ciclos Q2, Q3, Q4.
La lectura de la memoria de datos se realiza durante el ciclo Q2 y la escritura en Q4. El contenido del PC es incrementado en Q4.

Formato Bsico de una Instruccin


Cdigo de Operaciones Operando

El cdigo de Operaciones contiene la operacin que debe ser realizada por la CPU de microcontrolador. Ejemplo Suma, Desplazamiento, Salvar dato, Salto etc. El operando contiene datos, direccin de registro, constantes o valores de salto necesario operacin a realizar por la CPU.

Ciclo de Bsqueda (Fetch) y Ejecucin de las Instrucciones Bsqueda y Descodificacin


1.- El Microcontrolador cuando sale del estado de reset, inicia su ejecucin de las instrucciones en la direccin 0000h (Vector de reset)
2.- El PC coloca la direccin en el Bus de Direcciones y la instruccin seleccionada es cargada (FETCH) en el registro de instrucciones (IR). Incrementa PC=(PC)+1. 3.- La instruccin es decodificada mediante el Decodificador de Instrucciones ID y la maquina extrae el cdigo de instrucciones (0p. Code) del operando.

Ejecucin de las Instrucciones


4.- La instruccin es ejecutada por la CPU. Si es una operacin aritmtica o lgica esta es realizada en la ALU (Unidad Aritmtica Lgica) y el resultado es generalmente acumulado en el registro de trabajo (W). Si es una operacin de salto el PC es modificado sumadole el valor de salto contenido en el operando. Si es una operacin de guardado de dato esta es realizada en la los registro de datos (8Bits) en la memoria de datos.

5.- Las condiciones que resultan de la operacin aritmtica o lgica en la ALU son acumulada en el registro de estado STATUS_REG en los bit C, DC, Z

6.- Las operaciones de salto con retorno CALL o en las operaciones de Interrupciones el valor del PC (PC+1) de 13 bit, es transferido al STACK para acumular la direccin de retorno a la siguiente instruccin.

Estas direcciones de retorno son recuperadas cuando se ejecutan las instrucciones RETURN, RETLW de subrutinas o RETFIE para las interrupciones.

Organizacin de la memoria
Hay tres bloques de memoria en los dispositivos PIC16F87XA. La memoria de programa de 4K registros de 14 bit. La memoria de datos SRAM de 13 registros principales de propsitos especficos, 39 registro de programacin y control de Mdulos perifricos 192 registros de propsitos generales (usuario) Modulo de memoria EEPROM (128 registros x 8 bit) La arquitectura Hardvard que posee buses separados puede realizarse accesos concurrentes tanto a la memoria de Instrucciones como a la memoria de datos.

Organizacin de la Memoria de Programa


Los dispositivos PIC16F87XA tienen un contador de programa (PC) de 13-bits capaz de acceder hasta 8K palabras x 14 bits en el espacio de memoria de programa.
Los dispositivos PIC16F873A/874A poseen 4K palabras x 14 bits (4K instrucciones). La direccion de los registros de la memoria se extienden desde 0000h a FFFFh

El vector de Reset est en 0000h y el vector de interrupcin esta en 0004h.

Memoria de Programa (FLASH) del PIC 16F873A

14 bits

STACK
La familia PIC16F87XA tiene un Stack o Pila de 8-niveles de profundidad x 13-bits de ancho implementado en hardware en la CPU. El PC se inserta en la pila cuando se ejecuta una instruccin CALL, o una interrupcin causa de una derivacin.

La pila funciona como un bfer circular. Esto significa que despus de la pila se ha llenado ocho veces, el noveno valor empujado a la pila, sobrescribe el valor que se almacena en el primer lugar. El dcimo empuje sobrescribe el segundo pulso (y etc.).
La direccin acumulado en la pila es recuperada en el caso de una instruccin RETURN, RETLW o una ejecucin de la instruccin RETFIE.

Nota 1: No hay bits de estado para indicar el desbordamiento de la pila o las condiciones previas de desbordamiento. Nota 2: No hay instrucciones especficas mnemotecnicas llamada PUSH o POP.

Organizacin de la Memoria de Datos.


La memoria se divide en varios bancos que contienen los registros de propsito general (RPG) y los Registros de funciones especiales (RPE).
Los bits RP1 (STATUS <6>) y RP0 (STATUS <5>) son los bits de seleccin de los bancos.

Cada banco se extiende desde 00h hasta 7Fh (128 bytes) que es el valor f en el operando de las instrucciones que direccionan registros.
La memoria de datos es de lectura escritura implementada con tecnologa RAM esttica (SRAM). Los lugares superiores de cada banco estn reservados para los Registros de Funciones Especial. Se utilizan para la programacin de Microcontrolador y sus perifricos. Los Registros de Funciones Especiales pueden clasificarse en dos juegos: Ncleo (CPU) y Perifricos. Las zonas de los Bancos 1 y 2 de los Registros de Propsito General estn reflejados en otros bancos (redundancia)) para posibilitar la reduccin de cdigo y un acceso ms rpido. Se utilizan para acumular las variable del usuario.

Memoria de Datos
La memoria de datos en el PIC 16F873 est implementada en tecnologa RAM esttica (SRAM). La memoria de datos esta particionada en cuatro bancos de 128 registros. La memoria completa posee 512 registros no todos accesible. El procesador utiliza 9 bit para direccionarlos. Banco de datos 0 (000h,07Fh), Banco de datos 1 (080h,0FFh) Banco de datos 2 (100h,17Fh), Banco de datos 3 (180h,1FFh)
Banco 0 00h 32 Registros x 8 bits RPE 128 Filas (7 Bit) campo 80h 32 Registros x 8 bits RPE 120h Banco 1 100h 32 Registros x 8 bits RPE Registros redundantes en Banco 0 Banco 2 180h 32 Registros x 8 bits RPE Registros redundante s en Banco 1 Banco 3 Zona de Registros de Propositos Especificos RPE (FSR)

20h 96 Registros A0h 96 RPG Registros RPG

f Instr.
7Fh BIT STATUS FFh 17Fh 1FFh

Zona de Registros de Propsitos de Generales RPG (FGR)

RP1:RP0=00

RP1:RP0=01

RP1:RP0=10

RP1:RP0=11

Listado de los Registro de Propsitos Especficos


Banco 0, 1, 2, 3

RET

Registro de Propsitos Generales


Total 192 registros Los Registros del Banco 0 redundan en el Banco 2 Los Registros del Banco 1 redundan en el Banco 3
96 Registros RPG
96 Registros RPG Registros redundantes en Banco 0

Registros redundantes en Banco 1

Zona de Registros de Propsitos de Generales RPG (FGR)

Banco 0 RP1:RP0 00

Banco 1 RP1:RP0 01

Banco 2 RP1:RP0 10

Banco 3 RP1:RP0 11

Los registros de propsitos especficos: algunos estn destinados por el fabricante para la programacin y control de la maquina (CORE) y otros registros para control de los perifricos. Los registros de propsitos generales son destinados por el fabricante para el guardado de datos y constante del usuario.

2.2.2.1 Registro de Estado El registro de estado contiene el estado de la unidad aritmtica y Lgica (ALU), los estado de Reset y los bits para seleccionar el banco de datos a usar de la memoria. Los bits /TO y /PD no son de escritura y reflejan el estado de la CPU despues de un RESET. Solo se pueden escribir los bit IRP (Direccionamiento Indirecto) y los bit RP1:RP0 Para seleccin de los bancos en el direccionamiento directo.

Estado de la ALU

Bit 7 IRP: Bit de Seleccin del par de Bancos (usado para direccionamiento indirecto) 1 = Bank 2, 3 (100h-1FFh) 0 = Bank 0, 1 (00h-FFh) Bits 6-5 - RP1: RP0: bits para Seleccin del Banco de registros (usado para direccionamiento directo) 11 = Bank 3 (180h-1FFh) 01 = Bank 1 (80h-FFh) 10 = Bank 2 (100h-17Fh) 00 = Bank 0 (00h-7Fh) Bit 4 - /TO: Bit de Time-out (fin de cuenta del WDT). 1 = Despus del encendido, CLRWDT instruccin o una instruccin SLEEP. 0 = Fin de el tiempo de espera (Time-out) del WDT. Bit 3: - /PD: bit de Power-down (modo bajo consumo o modo Sleep). 1 = Despus del encendido del sistema o por la instruccin CLRWDT 0 = En modo bajo consumo por ejecucin de la instruccin SLEEP

Bit 2 - Z: Bit Zero. 1 = El resultado de una operacin aritmtica o lgica es cero. 0 = El resultado de una operacin aritmtica o lgica no es cero.

Bit 1 - DC: Digit carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) 1 = Un carry-out del 4 bit del resultado ha ocurrido. 0= No ha ocurrido un carry-out del 4 bit del resultado. Bit 0 - C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions). 1 = Un carry-out del bit mas significativo (7 bit) del resultado ha ocurrido. 0 = No ha ocurrido un carry-out del bit mas significativo (7 bit) del resultado.
Nota: Para el pedido (borrow), se invierte la polaridad. Una resta es ejecutado por la adicin de los dos complemento del segundo operando. Para girar (RRF, RLF) las instrucciones, este bit est cargado ya sea con el bit mas significativo o menos significativo del registro fuente.

MODO DE DIRECCIONAMIENTO DIRECTO


En el modo de Direccionamiento Directo el operando de la instruccin, indica la direccin del registro a ser accedido. El procesador constituye una direccin de 9 bit (512 registros) que se arma con 7 bits del operando mas dos bit de RP1, RP0.

Ejemplo de direccionamiento directo: ; guarda (f) (W) si d=0

MOVF f , d

; guarda (f) (f) si d=1

Esta instruccin mueve a destino, un dato de 8 bit contenido en el registro cuya direccin est indicado por el campo f (7 bit), en el banco seleccionado por RP1: RP0.

f:

Este operando contiene la direccin de fila (7 Bits) de los 128 registros a operar en cualquiera de los bancos que son seleccionados por RP1:RP0.

d : Indica el destino. El destino es el registro de trabajo W ( si d=0) o el mismo


registro f (si d=1).

Ejemplo de Direccionamiento Directo


En el direccionamiento directo la direccin del registro de datos a operar esta indicado en el operando (7 bits). El banco es seleccionado por RP0 y RP1 del registro STATUS.
Ejemplo:
BCF BCF 0x03, 5 ; 0 RP0 (Bit 5, STATUS) 0X03, 6 ; 0 RP1 (Bit 6, STATUS Bco 0 ; contenido (2Fh)=C5h (W).

00

MOVF 0x2F, 0

80h

100h

C5
2Fh

55
AFh

f (Direccin de fila)

C5

FFh

17Fh

ver

Ejemplo de Direccionamiento Directo


Ejemplo: BSF STATUS, RP0; 1 RP0 (Bit 5, STATUS)

BCF

STATUS, RP1; 0 1 RP0 selecciona Bco. 1

01

MOVF 0x2F,0; carga contenido del registro ; (AFh)=55 en W.

80h

100h

2Fh

AFh

55

55

PCL y PCLATH

El contador de programa (PC) es un registro de 13 bits de ancho. La byte bajo esta contenido en el registro PCL que es un registro de lectura y el de escritura de propsitos especficos. Los bits superior (PC <12:08>) no se puede leer directamente, pero si de manera indirecta a travs de registro PCLATH. En cualquier Reset, los bits superiores del PC se borrarn.
La figura muestra las dos situaciones para la carga del PC. En el ejemplo superior de la figura muestra cmo el PC se carga en una escritura en PCL (PCLATH <PCH 04:00>). El ejemplo de abajo en la figura muestra cmo el PC se carga durante una llamada o mediante la instruccin GOTO (PCLATH <4:3> PCH).

SALTO CALCULADO
Un GOTO o salto calculado se logra mediante la adicin de un desplazamiento al contador de programa (ADDWF PCL). Cuando se realiza una Tabla de lectura con el mtodo del GOTO calculado, se deber tener cuidado si la ubicacin de la Tabla (PC) cruza un Lmite de memoria (cada bloque es de 256 bytes).

PCH 12 PCLATH 0Ah; 8Ah; 10Ah; 18Ah 8 7

PCL 0

02h; 82h; 102h; 182h

ALU
5 0

El registro PCL puede ser accedido para lectura y modificado en la escritura en forma directa. El registro PCH (12:8) solo puede ser cargado a travs del registro intermedio PCLATH (5:0) La carga del registro PCLATHPCH se realiza nicamente en las instrucciones: GOTO, CALL, en la instrucciones SKIP y en la escritura del PCL.

Ejemplo de realizacin de una Tabla de Conversin usando Salto Calculado


El ejemplo convierte valores decimales a una palabra de 7 bit que se extrae por el puerto paralelo PORT B para excitar a un display de 7 segmentos.

Valor en decimal Valor a 7 segmentos 00 01 02 03 04 05 06 07 0011 1111=7F 0000 0011=03 01011011=B7 01001111=4F 00100110=46 01101101=6D 01111101=7D 00000111=07 Puerto B

RA0 = segmento a
RA1 = segmento b RA2 = segmento c RA3 = segmento c

RA4 = segmento c
RA5 = segmento c RA6 = segmento g RA7 .

a
f e g b c

030
031 032

MOVF REGHEXA,0; carga valor un valor Hexa a convertir en W


CALL RUTCONV ; Salta Subrutina PCH,PCL TOS (STACK)= 032

MOWF PORTB; extrae valor a display 7 segmento

120 RUTCONV ANDLW 0x07; enmascara los bit 121 122 123 124 125 126 127 127 128 ADDWF PCL,PCL ; suma W+PCLPCL; PCLATH PCL RETLW 0X7F; retorna con valor en w RETLW 0X03 ; retorna con valor en w RETLW 0XB7 ; retorna con valor en w RETLW 0X4F ; retorna con valor en w RETLW 0X46 ; retorna con valor en w RETLW 0X6D ; retorna con valor en w RETLW 0X7D ; retorna con valor en w RETLW 0X07; retorna con valor en w

TOS PCH,PCL PCH,PCL= 032

El registro de trabajo retorna con el valor (W)=46h que extrae por el puerto PORTB

Ejemplo de la rutina de Tabla de Conversin: El valor inicial en (REGHEXA)= 04h; en la primera instruccin carga W=0x04 y salta a subrutina RUTCONV.

En subrutina RUTCONV
PCL=PCL+W PCL= 22h + 04h= PCL= 26h PCLATH=01hPCH ; al escribir PCL se carga valor de PCLATH en PCH. Direccin final del PC= PCH, PCL= 0126 h En la direccin 0126h encuentra la instruccin RETLW con un valor de retorno en W igual a 46h El Valor 46h es extrado por el PORTB en el siguiente paso.

De esta manera se pueden implementar diferentes tablas de conversin de variables segn se necesiten

Cambio de valor del PC por Instruccin de GOTO o CALL

Ejemplo de salto cercano en la pagina


50 MOVF 0x3F,0 ; carga contenido registro en W

052 GOTO LEJOS

; Salto incondicional carga PCLATH y PCL con valor


;destino

052

MOWF 0x20;

120 LEJOS ANDLW 0xF0; enmascara los bit

Ejemplo de Salto (CALL) a otra pagina (pgina 1)

MODO DE DIRECCIONAMIENTO INDIRECTO


El direccionamiento indirecto posibilita al microcontrolador realizar bsquedas indexadas y se lo utiliza principalmente para el manejo de tablas.
Ejemplo: BCF STATUS,IRP; selecciona 1 par de Bancos.

3F

MOVLW 0x3F MOVWF FSR ; carga en FSR la direccin 3Fh MOVF INDF,0; carga contenido del registro en W.

3Fh W

55

55

EL DIRECCIONAMIENTO INDIRECTO
El direccionamiento indirecto posibilita al microcontrolador realizar bsquedas indexadas y se lo utiliza principalmente para el manejo de tablas: Un programa que borre 20 direcciones de memoria consecutivas a partir de la direccin 30h se implementa como: CONTADOR EQU 0X20 ORG 0X0100

0100H

MOVLW 0x20
MOVWF CONT MOVLW 0x30 MOVWF FSR

; Carga el numero de registros a borrar


; en registro CONT (Contador) ; Carga direccin inicial de registros ; en FSR ; Borra el registro direccionado por FSR

LAZ0

CLRF

INDF

DECFSZ CONT,CONT ; decrementa contador salta (Skip) si es cero GOTO LAZO ; repite lazo 30 veces

RETURN

Registro INTCON El registro INTCON es un registro de lectura y escritura, que contiene los bits de habilitacin y bits de bandera para desbordamiento del registro de TMR0, cambios de nivel del puerto RB y pin de interrumpcin externa RB0/INT. Nota: los bits de interrupcin del registro se establecen cuando una condicin de interrupcin se produce, independientemente del estado de sus correspondientes bits de permiso o del bit global, GIE (INTCON <7>). El software para el usuario debe asegurarse que el bit indicador de interrupcin est limpios (0) antes de habilitar una interrupcin.

Bit 7 - GIE: Global Interrupt Enable bit. 1 = Habilita todas las interrupciones desenmascaradas. 0 = Deshabilita todas las interrupciones.

Bit 6 - PEIE: Bit de habilitacin de interrupciones de los dispositivos Perifricos. 1 = Habilita todas las interrupciones desenmascaradas. 0 = Deshabilita todas las interrupciones. Bit 5 - TMR0IE: Bit de habilitacin de interrupcin por Overflow del TMR0. 1 = Habilita la interrupcin de TMR0. 0 = Deshabilita la interrupcin de TMR0. Bit 4 - INTE: Bit de habilitacin de interrupcin externa por RB0/INT. 1 = Habilita la interrupcin externa RB0/INT. 0 = Deshabilita la interrupcin externa RB0/INT.

Bit 3 - RBIE: Bit de habilitacin de interrupcin al cambio de nivel en el puerto RB4 a RB7.
Bit 2 - TMR0IF: Flag de interrupcin indicador desbordamiento del TMR0. 1 = registro TMR0 se ha desbordado (debe estar habilitado de software) 0 = registro TMR0 no desbordamiento.

Bit 1 - INTF: Flag indicador de interrupcin por flancos externos (seleccionables ascendente o descendente ) en pin RB0/INT 1 = La interrupcin externa RB0/INT por flanco activo ha ocurrido (debe estar habilitado de software) 0 = La interrupcin externa RB0/INT no ocurri
Bit 0 - RBIF: Flag de interrupcin al cambio de nivel en el puerto RB4 a RB7. 1 = Al menos uno de los pines RB7 a RB4 ha cambiado de estado, (un estado de desequilibrio continuar fijando el bit RBIF). Una lectura del PORTB pondr fin a la condicin de cambio y permitir que el bit se borre (Debe estar habilitado por software). 0 = Ninguno de los pines RB7: RB4 han cambiado de estado.

REGISTRO PIE1 El registro PIE1 contiene los bits individuales para permitir las interrupciones de los perifricos. Nota: El bit PEIE del registro INTCON <6> se debe establecer a 1 para permitir la interrupcin de cualquier perifrico.

Bit 7 PSPIE1: est reservada para los microcontroladores de 40 pines, en los dispositivos PIC16F873A/876A; mantener este bit siempre en cero (0).

Bit 6 - ADIE: Bit de habilitacin de la interrupcin del Conversor A/D. 1= Activa la interrupcin del conversor A/D. 0 = Deshabilita la interrupcin del conversor A/D.
Bit 5 - RCIE: Bit de habilitacin del la interrupcin de recepcin de la USART. 1 = Habilita la interrupcin de recepcin de la USART. 0 = Deshabilita la interrupcin de recepcin de la USART.

Bit 4 - TXIE: Bit de habilitacin del la interrupcin de transmisin de la USART. 1= Habilita la interrupcin de transmisin USART. 0 = Deshabilita la interrupcin de transmisin USART. Bit 3 - SSPIE: Bit de habilitacin de interrupcin del puerto serie sincrnico 1 = Habilita la interrupcin SSP 0 = Deshabilita la interrupcin SSP Bit 2 - CCP1IE: Bit de habilitacin de interrupcin CCP1. 1 = Habilita la interrupcin de CCP1 0 = Deshabilita la interrupcin de CCP1 Bit 1 TMR2IE: Bit de habilitacin de interrupcin por comparacin de TMR2 y PR2 1 = Habilita la interrupcin por comparacin del TMR2 y PR2. 0 = Deshabilita la interrupcin por comparacin del TMR2 y PR2. Bit 0 TMR1IE: Bit de habilitacin de interrupcin por desbordamiento de TMR1. 1 = Habilita la interrupcin de desbordamiento del TMR1. 0 = Deshabilita la interrupcin de desbordamiento de TMR1.

Registro PIR1 El registro PIR1 contiene los Flags individuales de las interrupciones de los perifricos. Nota: Cuando estos bits o Flags son colocado a 1 ocurren una interrupcin, siempre que el bit de habilitacin global GIE del registro INTCON<7> este habilitado. El propio usuario debe contemplar en su software de asegurarse limpiar los correspondientes bits antes de habilitar una interrupcin.

Bit 7 PSPIF: PSPIF est reservada para los microcontroladores de 40 pines, en los dispositivos PIC16F873A/876A; este bit siempre esta en cero (0).
Bit 6 ADIF: Bit Flag de Interrupcin del Conversor A/D 1 = Una conversin en el dispositivo A/D se ha completado. 0 = The A/conversin no esta completa. Bit 5 RCIF: Bit (Flag) de interrupcin de recepcin de la USART 1 = El buffer receptor de la USART est llena 0 = El buffer receptor de la USART est vaco

Bit 4 - TXIF: Bit Flag de la interrupcin de transmisin de la USART 1 = El buffer de transmisin USART est lleno 0 = El buffer de transmisin USART est vaco Bit 3 - SSPIF: Bit Flag de interrupcin del Puerto Serie Sincrnico (SSP) 1= indica que una condicin de interrupcin ha ocurrido en el SSP y debe ser limpiada por software antes de retornar de la rutina de interrupcin. La condicin que colocar este bit en 1 son: SPI Una transmisin/recepcin ha ocurrido I2C Slave Una transmisin/recepcin ha ocurrido. Bit 2 - CCP1IF: Bit Flag de interrupcin CCP1.

Modo Captura: 1 = Una captura en el registro TMR1 ha ocurrido (Debe ser limpiado por sofware). 0 = No ha ocurrido Una captura en el registro TMR1.
Modo Compare: 1 = Una comparacin con en el registro TMR1 ha ocurrido (Debe ser limpiado por sofware). 0 = No ha ocurrido Una comparacin con en el registro TMR1 Modo PWM: No es usado en este modo.

Bit 1 TMR2IF: Bit Flag de interrupcin de comparacin entre TMR2 a PR2 1 = Una comparacin entre TMR2 y PR2 ha ocurrido (Debe ser limpiado por sofware). 0 = No ha ocurrido una comparacin entre TMR2 y PR2. Bit 0 TMR1IF: Bit Flag de interrupcin por Overflow en TMR1 1 = El registro TMR1 ha rebasado (overflowed) (Debe ser limpiado por sofware). 0 = El registro TMR1 no ha rebasado (overflowed). Registro PIE2 El registro PIE2 contiene los bits individuales de habilitacin de interrupcin de perifricos CCP2, la interrupcin por coalicin de bus del SSP, Interrupcin por fin de escritura de EEPROM y de la interrupcin del comparador. Nota: El bit PEIE en el registro INTCON<6> debe estar habilitado para permitir cualquier interrupcin de los perifricos.

Bit 7: No implementado: se lee como 0. Bit 6 CMIE: Bit de habilitacin de la interrupcion del comparador. 1 = Habilitacin de la interrupcin del comparador. 0 = Deshabilitanla interrupcin del comparador. Bit 5: No implementado: se lee como 0. Bit 4 EEIE: Bit de habilitacin de interrupcin de la EEPROM. 1 = Habilitacin de la interrupcin de la EEPROM. 0 = Deshabilita la interrupcin de la EEPROM. Bit 3 BCLIE: Bit de habilitacin de interrupcin por Colisin del Bus. 1 = Habilitacin de la interrupcin por bus colisin. 0 = Deshabilita la interrupcin por bus colisin. Bit 2-1: No implementados: se leen como 0. Bit 0 CCP2IE: Bit de habilitacin de interrupcin de CCP2. 1 = Habilitacin de la interrupcin de CCP2. 0 = Deshabilitanla interrupcin de CCP2.

Registro PIR2
El registro PIR2 contiene los bits Flag de las interrupciones: del CCP2, Coalicin del Bus del SSP, Escritura de la EEPROM e interrupcin del comparador:

Nota: Cuando estos bit Flag son colocados a 1 ocurre una interrupcin, dependiendo del estado de los bits de habilitacin y del bit global del registro INTCON. El usuario por software debe asegurarse que el apropiado bit flag de interrupcin es limpiado antes de habilitarlo.

Bit 7: No implementado: se lee como 0.


Bit 6 CMIF: Bit Flag de interrupcin del Comparador. 1 = La entrada del comparador ha cambiado (debe ser limpiado por software). 0 = La entrada del comparador ha cambiado. Bit 5: No implementado: se lee como 0.

Bit 4 EEIF: Bit Flag de interrupcin por escritura de la EEPROM 1 = La operacin de escritura ha concluido (debe ser limpiado por software). 0 = La operacin de escritura ha concluido o no se ha iniciado.
Bit 3 BCLIF: Bit Flag de interrupcin por coalicin en el Bus 1 = Una coalicin en el Bus ha ocurrido en el SSP cuando fue configurado en modo Master la I2C 0 = No ha ocurrido una coalicin en el Bus. Bit 2-1: No implementado: se lee como 0. Bit 0 CCP2IF: Bit Flag de interrupcin CCP2. Modo Capture: 1 = Una captura ha ocurrido en el registro TMR1 (debe ser limpiado por software). 0 = No ocurri una captura en TMR1.

Modo Compare: 1 = Una comparacin ha ocurrido en el registro TMR1 (debe ser limpiado por software). 0 = No ha ocurrido una comparacin en el registro TMR.
Modo PWM: No usado.

Registro PCON El registro de Control de Energa, contiene los Flags para permitir diferenciar entre un Power- on Reset (POR), un Brown-out Reset (BOR), un Reset del Watchdog (WDT) y un MCLR reset externo. Nota: el estado del BOR no es conocido en un Power-on Reset. Este debe ser colocado a 1 por el usuario y chequeado en subsecuente Resets para observar si el BOR esta limpio. Indicando que un Brown out ha ocurrido.

bit 1 - /POR: Bit de estado de un Power-on Reset. 1 = No ha ocurrido un Power-on Reset. 0 = Un Power-on Reset ha ocurrido (Debe ser colocado a 1 por software despus que un Power-on Reset ha ocurrido). bit 0 - /BOR: Bit de estado de un Brown-out Reset. 1 = No ha ocurrido un Brown-out Reset. 0 = Un Brown-out Reset ha ocurrido (Debe ser colocado a 1 por software despus que un Brown-out Reset ocurrido).

You might also like