Sunteți pe pagina 1din 53

Caractersticas del los

PIC 16F87X
Procesador de arquitectura RISC avanzada
Juego de 35 instrucciones con 14 bits de longitud. Todas ellas se ejecutan en
un ciclo de instruccin menos las de salto que tardan 2.
Frecuencia de 20 Mhz
Hasta 8K palabras de 14 bits para la memoria de cdigo, tipo flash.
Hasta 368 bytes de memoria de datos RAM
Hasta 256 bytes de memoria de datos EEPROM
Hasta 14 fuentes de interrupcin internas y externas
Pila con 8 niveles
Modos de direccionamiento directo, indirecto y relativo
Perro guardin (WDT)
Cdigo de proteccin programable
Modo Sleep de bajo consumo
Programacin serie en circuito con 2 patitas
Voltaje de alimentacin comprendido entre 2 y 5.5 voltios
Bajo consumo (menos de 2 mA a 5 V y 5 Mhz)
PIC 16F87X
Casi todos los fabricantes de microprocesadores lo son
tambin de microcontroladores, en el mercado existen
una serie de marcas bastante conocidas y reconocidas
como es el caso de Microchip, Motorola, Hitachi, ATMEL
etc. se ha seleccionado a Microchip y en particular la
serie 16F87X, debido a la abundante informacin y
herramientas de diseo existente en el mercado (tanto
local como internacional). Tambin salta a la vista el
hecho que es sencillo en el manejo y contiene un
promedio elevado en sus parmetros (velocidad,
consumo, tamao, alimentacin).
MICROCONTROLADORES
Pines del PIC 16F87X
Pines del PIC 16F87X
PIN Descripcin
OSC1/CLKIN(9) Entrada para el oscilador o cristal externo.
OSC2/CLKOUT (10) Salida del oscilador. Este pin debe conectarse
al cristal o resonador. En caso de usar una
red RC este pin se puede usar como tren de
pulsos o reloj cuya frecuencia es 1/4 de OSC1
MCLR/VPP(1) Este pin es el reset del microcontrolador,
tambin se usa como entrada o pulso de
grabacin al momento de programar el
dispositivo.
Pines del PIC 16F87X
PIN Descripcin
RA0/AN0(2) Puede actuar como lnea digital de E/S o
como entrada analgica del conversor AD
RA1/AN1(3) (canal 0 y canal 1 respectivamente)
RA2/AN2/VREF-(4) Puede actuar como lnea digital de E/S o
como entrada analgica del conversor AD
(canal 2) o entrada negativa de voltaje de
referencia
RA3/AN3/VREF+(5) Puede actuar como lnea digital de E/S o
como entrada analgica del conversor AD
(canal 3) o entrada positiva de voltaje de
referencia
Pines del PIC 16F87X
PIN Descripcin
RA4/T0CKI (6) Lnea digital de E/S o entrada del reloj del
timer 0. Salida con colector abierto
RA5/SS#/AN4(7) Lnea digital de E/S, entrada analgica o
seleccin como esclavo de la puerta serie
sncrona.
RB0/INT(21) Puerto B pin 0, bidireccional. Este pin puede
ser la entrada para solicitar una interrupcin.
Pines del PIC 16F87X
PIN Descripcin
RB1(22) Puerto B bits 1 y 2 respectivamente,
RB2(23) bidireccionales.
RB3/PGM(24) Puerto B bit 3, bidireccional o entrada del
voltaje bajo para programacin.

RB4(25) Puerto B bits 4 y 5, bidireccionales. Pueden


RB5(26) programarse como peticin de interrupcin
cuando el pin cambia de estado.
Pines del PIC 16F87X
PIN Descripcin
RB6/PGC(27) Puerto B bit 6, bidireccional. Puede
programarse como peticin de interrupcin
cuando el pin cambia de estado. En la
programacin serie recibe las seales de
reloj.
RB7/PGD(28) Puerto B pin 7, bidireccional. Puede
programarse como peticin de interrupcin
cuando el pin cambia de estado. En la
programacin serie acta como entrada de
datos.
RC0/T1OSO/ Lnea digital de E/S o salida del oscilador del
T1CKI(11) timer 1 o como entrada de reloj del timer 1
Pines del PIC 16F87X

PIN Descripcin
RC1/T1OSI/ Lnea digital de E/S o entrada al oscilador del
CCP2(12) timer 1 o entrada al mdulo captura 2/salida
comparacin 2/ salida del PWM 2
RC2/CCP1(13) E/S digital. Tambin puede actuar como
entrada captura 1,/salida comparacin 1/
salida de PWM 1
RC3/SCK/SCL E/S digital o entrada de reloj serie sncrona
(14) /salida de los mdulos SP1 e I2C.
Pines del PIC 16F87X

PIN Descripcin
RC4/SDI/SDA E/S digital o entrada de datos en modo SPI o
(15) I/O datos en modo I2C.
RC5/SDO(16) E/S digital o salida digital en modo SPI

RC6/TX/CK(17) E/S digital o patita de transmisin de USART


asncrono o como reloj del sncrono.
Pines del PIC 16F87X

PIN Descripcin
RC7/RX/DT(18) E/S digital o receptor del USART asncrono o
como datos en el sncrono.
RD0/PSP0- Las ocho patitas de esta puerta pueden
RD7/PSP7 actuar como E/S digitales o como lneas para
(19-22, 27-30) la transferencia de informacin en la
comunicacin de la puerta paralela esclava.
Solo estn disponibles en los PIC 16F874/7.
RE0/RD#/AN5 (8) E/S digital o seal de lectura para la puerta
paralela esclava o entrada analgica canal 5.
Pines del PIC 16F87X

PIN Descripcin
RE1/WR#/AN6 (9) E/S digital o seal de escritura para la puerta
paralela esclava o entrada analgica canal 6.
RE2/CS#/AN7 (10) E/S digital o seal de activacin/desactivacin
de la puerta paralela esclava o entrada
analgica canal 7.
VSS(8,19) Tierra y Fuente (5V) respectivamente.
VDD(20,32)
Arquitectura interna del PIC 16F87x

En el diagrama podemos identificar la


memoria del Programa en la parte
superior izquierda con 8K posiciones
por 14 bits, tambin se presenta la
memoria de datos (RAM) de 368
posiciones por 8 bits. La memoria
EEPROM de datos con 256 posiciones
x 8 bits. El procesador propiamente
dicho esta formado por la ALU y el
registro de trabajo W, de instrucciones y
el decoder ms la unidad de control.
Tenemos los perifricos I/O Port A, B, C,
D, E el TMR0 (temporizador contador de
eventos), TMR1, TMR2 y otros mdulos.
Ciclos de Instruccin
El oscilador o cristal genera los pulsos Q1,
Q2, Q3 y Q4. Toda instruccin tiene
asociada dos procesos, bsqueda y
ejecucin, cada uno de ellos ocupa un ciclo
de instruccin. La primera tarea que se lleva
a cabo es la bsqueda, internamente el
contador de programa se incrementa en Q1.
La bsqueda de la siguiente instruccin se
lleva a cabo en Q4. La instruccin es
ejecutada en el siguiente ciclo de
instruccin como lo muestra el diagrama.
en Q2 y Q3 se produce la decodificacin y
ejecucin de la instruccin.
Se emplea la tcnica pipe-line que
consiste en realizar las dos fases en
paralelo.
el tiempo de ejecucin de una instruccin es
un ciclo de instruccin salvo que sea una
instruccin de salto o bifurcacin en cuyo
caso el tiempo es de dos ciclos de
instruccin dado que el procesador no sabe
hacia donde va a saltar.
Ciclos de Instruccin
Ejercicio:
Un PIC 16F877 con un
cristal de 20MHz ejecuta
un programa con 2000
instrucciones de las
cuales 500 son de salto.
Qu tiempo tarda en
ejecutarlo?
Ciclos de Instruccin
Solucin:
Tosc= 1/20MHz
Ciclo = 4 Tosc
T_ejecucin =
1500 * ciclo + 500 (2 * ciclo)

T_ejecucin = 500 s
Organizacin de la memoria en los
PIC 16F87X
SFR (Special Function Register)
Registros de propsito especial,
son registros que ayudan a
configurar el hardware interno as
como sirven para escribir o leer
valores de los diferentes
componente que constituyen el
microcontrolador. Por ejemplo el
registro TRISA que nos permite
configurar el modo de trabajo de
las lneas del puerto A.

GFR (General Function register)


Registros de propsito general,
son posiciones de memoria que
podemos usar para almacenar
valores que emplean nuestros
programas.
La palabra de Configuracin en los
PIC 16F87X

Es una posicin reservada de la memoria de


programa que ocupa la direccin 2007H y solo
es accesible durante la programacin.
Registros de Control

El registro de Estado (STATUS):


almacena informacin relacionada con:
La ltima operacin aritmtica lgica
realizada en la ALU.
El estado de reset del microcontrolador.
El banco de memoria que actualmente se
tiene en uso.
Registro STATUS

Bit 7: IRP Register Bank Select Bit (es un bit que se usa para
las operaciones de direccionamiento indirecto).
0 = Si se trabaja sobre el banco 0 1 ( posiciones de memoria
que van desde 00h hasta FFh)
1 = Si trabajamos con el banco 2 3 (posiciones de memoria que
van desde 100h hasta 1FFh)
Registro STATUS

Bit 6-5: RP1, RP0 Register Bank Select (bits usados en el


direccionamiento directo)
00 = Banco 0 , (posiciones de memoria 00-7Fh)
01 = Banco 1, (posiciones de memoria 80-FFh)
10 = Banco 2, (posiciones de memoria 100-17Fh)
11 = Banco 3, (posiciones de memoria 180-1FFh)
Los banco pueden contener hasta 128 posiciones.
Registro STATUS

Bit 4: -T0 Time out bit


1 = Asume el valor de 1 despus de encenderse el PIC o por la
aplicacin de la instruccin CLRWDT o por la aplicacin de la
instruccin SLEEP
0 = Cuando se ha vencido el periodo programado en el Watchdog
Registro STATUS

Bit 3 : -PD Power down bit

1 = Despus de encender el microcontrolador o por la aplicacin de una


instruccin CLRWDT.
0 = Cuando se ejecuta la instruccin SLEEP.
Registro STATUS

Bit 2: Z Zero Bit

1 = Cuando el resultado de una instruccin aritmtica lgica da por


resultado 0.
0 = Si el resultado de la operacin aritmtica o lgica da por resultado
un valor distinto de cero
Registro STATUS

Bit 1: DC Digit carry/borrow bit usado como acarreo en las


instrucciones de suma ( ej: ADDWF y ADDWL) en caso se lleve a
cabo una operacin de resta se procede a tomarlo como bit de
prstamo). Este bit trabaja con los 4 bits inferiores o nible bajo.

1 = Si se ha producido el acarreo en el nible bajo


0 = No se ha producido acarreo en el nible bajo
Registro STATUS

Bit 0: C: Carry/borrow bit Similar al anterior con la diferencia


que toma el acarreo de todo el registro es decir trabaja en 8 bits.

1 = Si se ha producido el acarreo en el nible Alto.


0 = No se ha producido acarreo en el nible Alto.
Registros de Control

El registro de Control de interrupciones


(INTCON):

Da permiso de atencin a las


interrupciones externas, por TMR0 y por
otro perifrico.
Qu es una Interrupcin?

Una interrupcin es una seal asincrnica desde el


hardware que indica la necesidad de atencin. O un
evento sincrnico en software que indica la necesidad
de un cambio en ejecucin.

Las interrupciones son una tcnica comnmente usada


en la multitarea, especialmente en la computacin en
tiempo real. El acto de interrupcin es usualmente
llamado IRQ (interrupt request).
Registro INTCON
Bit 7 : GIE Permiso global de interrupciones.

1 = Permitido.
0 = No permitido.
Registro INTCON
Bit 6 : PEIE Permiso a interrupciones de perifricos que no se
controlan con INTCON.

1 = Permitido.
0 = No permitido.
Registro INTCON
Bit 5 : T0IE Permiso a interrupcin de TMR0.

1 = Permitido.
0 = No permitido.
Registro INTCON
Bit 4 : INTE Permiso a interrupcin externa por RBO/INT.

1 = Permitido.
0 = No permitido.
Registro INTCON
Bit 3: RBIE Permiso a interrupcin por cambio en RB4-RB7.

1 = Permitido.
0 = No permitido.
Registro INTCON
Bit 2: T0IF Sealizador de desborde en TMR0.

1 = Desborde.
0 = No ha desbordado.
Registro INTCON
Bit 1: INTF Sealizador de activacin de la patita RBO/INT.

1 = Activada.
0 = No ha sido activada.
Registro INTCON
Bit 0: RBIF Sealizador de cambio en RB4-RB7.

1 = Ha cambiado.
0 = No ha cambiado.
Registro INTCON
Ejercicio: Realice las lneas de cdigo ASM necesarias para :
- Permitir las interrupciones.
- Prohibir la interrupcin por escritura de la EEPROM.
- Permitir la interrupcin por desborde del TMR0.
- Permitir la interrupcin externa por RB0/INT por flanco de
bajada.
- Prohibir la interrupcin por cambio en RB4:RB7.
Registros de Control

El registro de Opciones (OPTION):


Asigna el divisor de frecuencias al TMR0 o al
perro guardin.
Elige el rango del divisor.
Selecciona el tipo de reloj del TMR0, externo o
interno y el tipo de flanco.
Selecciona el flanco activo para interrupcin
externa.
Activa o desactiva los resistores de pull-up de la
puerta B.
Registro OPTION
Bit 7 : RBPU# Resistencias de Pull-Up en puerta B.

1 = Desactivadas.
0 = Activadas.
Registro OPTION
Bit 6 : INTEDG Flanco activo de la interrupcin externa.

1 = Ascendente.
0 = Descendente.
Registro OPTION
Bit 5 : T0CS Tipo de reloj para TMR0

1 = Externo a travs de T0CKI (contador).


0 = Interno Fosc/4 temporizador.
Registro OPTION
Bit 4 : T0SE Tipo de flanco para T0CKI

1 = Descendente.
0 = Ascendente.
Registro OPTION
Bit 3 : PSA Asignacin del divisor de frecuencia

1 = Al perro guardin.
0 = Al TMR0.
Registro OPTION
Bits 2,1,0 : PS2, PS1, PS0 valor del divisor de frecuencia

PS2 PS1 PSO TMR0 WDT


0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128
Registro OPTION
Ejercicio: Qu cdigo binario se debe cargar en le registro OPTION para :
- Desactivar los resistores de pull-Up en el puerto B.
- Asignar el divisor de frecuencia al TMR0.
- Configurar el TMR0 como temporizador.
- Incremento con flanco de subida.
- Divisor de frecuencia de 1:64.

Recuerde que el registro OPTION se encuentra solo en el banco 1 y 3


MANEJO DE
INTERRUPCIONES

Interrupcin por evento en RB0/INT


Recursos especiales de los
PIC 16F87X
Temporizadores y contadores: TMR0 8 bits con
predivisor, TMR1 16 bits con predivisor, TMR2 8 bits con
predivisor y postdivisor.
Dos Mdulos CCP: capturar y comparar impulsos y
PWM.
Comunicacin serie: Subsistemas y maquinas, USART
(RS- 232) y Circuitos integrados MSSP (I2C y SPI).
Comunicacin paralelo: protocolo PSP 8 lneas de
datos puerta D y 3 de control puerta E.
Conversor A/D: 10 bits 8 canales de entrada.
Temporizadores y contadores.

El Mdulo TMR0:
- Puede ser usado para generar periodos
de tiempo ( si funciona como
temporizador) o puede ser usado para
registrar el paso de eventos (si trabaja
como contador de eventos).
- Su funcionamiento es controlado por los
registros OPTION e INTCON
El Mdulo TMR0

Posicin de Banco 0 Posicin de Banco 1


memoria memoria

01H TMR0 81H OPTION

0BH INTCON 8BH INTCON

La misma distribucin se repite en


los bancos 2 y 3
El Mdulo TMR0

Las principales caractersticas del mdulo TMR0 son:


Puede ejecutar hasta 256 cuentas (0-255) debido a que el registro TMR0
es de 8 bits.

El registro TMR0 puede ser ledo para saber cual es valor actual del conteo
o puede ser escrito para colocar un valor inicial.

Posee un bloque de preescalamiento que permite ampliar el rango de las


cuentas.

Selector interno para definir si trabaja como temporizador o como contador


de eventos.

Genera una seal de interrupcin cuando se produce un desborde en el


registro TMR0 (cuando pasa de 0xFF a 00). Bit T0IF del registro INTCON .

Selector para indicar si detecta flanco de subida o bajada cuando opera


como contador de eventos. Bit T0SE del registro OPTION.
El Mdulo TMR0
Ecuaciones para calculo de tiempos en el
TMR0:
Temporizacin = 4*Tosc* (rango del divisor)*(pulsos a contar TMR0)

Pulsos a contar TMR0 = 4*Tosc*(Temporizacin)*(rango del divisor)

Valor a cargar en TMR0 = (256 pulsos a contar TMR0)

Ejemplo: con un cristal de 4MHz, con 55 (10) cargado en TMR0 y rango


en 1:64, calcular temporizacin.
Pulsos a contar TMR0 = (256 55) = 201 (10)

Temporizacin = 4 * 0.25s *(201) * (63) = 12.66 ms

Recuerde que el valor a cargar en TMR0 es un complemento a 2.

S-ar putea să vă placă și