Anda di halaman 1dari 74

PIC 16F877

Ing. Diana Valdivieso Herrera

PIC 16F877
PIC 16F84A

PIC 16F877

Memoria Programa

1024 * 14

8192 * 14

Memoria Datos
RAM / EEPROM

68 / 64

368 / 256

Deteccin de baja
tensin

No

Si

Lneas E/S

13

33

Comunicacin Serie No

Usart/Mssp

CCP

No

Temporizadores

1 (8 bits), Wdt

1(16), 2(8), Wdt


Ing. Diana Valdivieso Herrera

PIC 16F877
PIC 16F84A

PIC 16F877

Frecuencia Mxima

20 MHz

20 MHz

Interrupciones

14

Comunicacin
Paralelo

No

Si

Encapsulado

18 pines

40 pines

Conv. A/D

No

8 (10 bits)

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

PIC 16F877
Cinco puertos de entrada/ salida. Los
puertos son los siguientes:

Port A 6 pines

Port B 8 pines

Port C8 pines

Port D 8 pines

Port E 3 pines
Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Conversor Anlogo Digital


El 16F877 posee un conversor A/D de
10 bits de resolucin y 8 canales .
Sus
entradas
se
encuentran
multiplexadas con 5 de los 6 pines
del puerto A y con los 3 pines del
puerto E.
Ing. Diana Valdivieso Herrera

Conversor Anlogo Digital

Ing. Diana Valdivieso Herrera

Conversor Anlogo Digital


La seal analgica ingresa
a un
condensador de captura y retencin
(sample and hold) y despus se introduce
en el convertidor.
El convertidor A/D es de aproximaciones
sucesivas da como resultado una palabra
de 10 bits.

Ing. Diana Valdivieso Herrera

Conversor Anlogo Digital


La resolucin que tiene cada bit
procedente de la conversin tiene un valor
que es funcin de la tensin de referencia
Vref, de acuerdo con la frmula siguiente:
(+ )
=

Ing. Diana Valdivieso Herrera

Conversor Anlogo Digital


La
tensin
de
referencia
puede
implementarse con la tensin interna de
alimentacin VDD o con una externa que se
introduce por el pin RA3/AN3/VREF+, en este
caso la polaridad negativa se aplica por el
pin RA2/AN2/VREF-.
El convertidor A/D es capaz de seguir
trabajando mientras el pic esta en modo
SLEEP. Para ello el oscilador interno RC
debe conectarse al conversor A/D.
Ing. Diana Valdivieso Herrera

Configuracin del conversor


A/D
Para el correcto
funcionamiento del
conversor A/D se requiere configurar los
siguientes registros:
Registro ADRESH: Parte alta del resultado
de la conversin.
Registro ADRESL: Parte baja del resultado
de la conversin.
ADCON0: Registro de control 0.
ADCON1: Registro de control 1.
Ing. Diana Valdivieso Herrera

Configuracin del conversor


A/D

Ing. Diana Valdivieso Herrera

Configuracin del conversor


A/D

Ing. Diana Valdivieso Herrera

Registro ADCON0
Este registro controla la operacin del A/D.
Bit 7-6: Bits de seleccin del reloj de conversin
ADCS1

ADCS0

TAD

Frecuencia

2 * TOSC

FOSC /2

8 * TOSC

FOSC /8

32 * TOSC

FOSC /32

Oscilador RC interno

Nota: TAD nunca debe ser menor de 1.6 s.


Ing. Diana Valdivieso Herrera

Bit

3-5: Bits de seleccin del canal


analgico por donde se introduce la
seal analgica a convertir de acuerdo a
la siguiente tabla.
CHS
2
0
0
0
0
1
1
1
1

CHS
1
0
0
1
1
0
0
1
1

CHS
0
0
1
0
1
0
1
0
1

Canal 0 (RA0/AN0)
Canal 1 (RA1/AN1)
Canal 2 (RA2/AN2)
Canal 3 (RA3/AN3)
Canal 4 (RA4/AN4)
Canal 5 (RE0/AN5)
Canal 6 (RE1/AN6)
Canal 7 (RE2/AN7)

Ing. Diana Valdivieso Herrera

Bit 2: Bit de estado de la conversin A/D


(GO/DONE),
Ponindolo a 1 se inicia la conversin y
mientras se realiza la conversin permanece
en 1.
Al finalizar la conversin pasa a 0, colocando
el resultado en la pareja de registros ADRESHADRESL y activando el flag ADIF (Registro
PIR1), que provoca una interrupcin si el bit
de permiso correspondiente esta activado.
Ing. Diana Valdivieso Herrera

Bit

1: No implementado, se lee como 0


Bit 0: ADON,bit de encendido o bit de
activacin del conversor A/D

Ing. Diana Valdivieso Herrera

Registro ADCON1
El registro ADCON1, es el registro de
configuracin de los pines del puerto A.
Los cuales pueden trabajar como:
como entradas analgicas.
entrada de tensin de referencia.
entrada o salida digital.

Ing. Diana Valdivieso Herrera

El bit ADFM (bit 7) selecciona el formato del


resultado de la conversin.
Si vale 1 el resultado est justificado en el
registro ADRESH que tienen sus 6 bits de
ms peso a 0.
Si ADFM vale 0 la justificacin se realiza
sobre el registro ADRESL, que tiene sus 6
bits menos significativos a 0.
Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Los

bits 6, 5 y 4 no se encuentran
implementados.
Los cuatro bits restantes PCFG0 a PCFG3
se usan para configurar las patitas de los
canales de entrada al conversor como
analgicas o como entrada o salida
digital, de acuerdo a la siguiente tabla.

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Mdulo CCP
Mdulo CCP (Capture, Compare, PWM)
El 16F877 tiene 2 mdulos: CCP1 y CCP2
Cada mdulo tiene un registro de 16 bits
y puede operar en los tres modos.
Los
dos mdulos son idnticos a
excepcin de la operacin especial
event trigger.
Ing. Diana Valdivieso Herrera

El

mdulo CCP1 tiene el registro CCPR1


compuesto por la concatenacin de los
registros CCPR1H (16h) y CCPR1L (15h)
cada uno de 8 bits, lo que hace un total
de 16 bits controlado por el registro
CCP1CON (17h). El disparo especial es
generado por una comparacin y
resetea el Timer1. Usa el pin RC2/CCP1.
Ing. Diana Valdivieso Herrera

El

mdulo CCP2 tiene el registro de


trabajo CCPR2 que est compuesto por
la concatenacin de los registros CCPR2H
(1CH) y CCPR2L (1BH), controlado por el
registro CCP2CON (1Dh). El disparo
especial
es
generado
por
una
comparacin, resetea el timer1 y arranca
la
conversin
A/D.
Usa
el
pin
RC1/T1OSCI/CCP2.
Ing. Diana Valdivieso Herrera

Modos de operacin:
Los timer asociados a los modos de
operacin son:
Modo captura Timer 1
Modo comparacin Timer 1
Modo PWM Timer 2

Ing. Diana Valdivieso Herrera

Interaccin entre los mdulos


Captura,

captura
Captura, comparacin
PWM, PWM
PWM, captura
PWM, comparacin

Ing. Diana Valdivieso Herrera

Registro CCPxCON

Ing. Diana Valdivieso Herrera

Registro CCPxCON
Bit

7-6 No implementados se leen como


cero.
Bit 5-4 CCPxX-CPxY: slo se usan en el
modo PWM, en este caso son los dos bits
menos significativos de PWM, los ocho bits
ms significativos se encuentran en
CCPRxL.

Ing. Diana Valdivieso Herrera

Registro CCPxCON
Bit

3-0: bits seleccin modo de trabajo.


Modo de Trabajo

0000

Mdulo CCPx desactivado

0100

Modo de captura por flanco descendente

0101

Modo de captura por flanco ascendente

0110

Modo de captura cada 4 flancos ascend.

0111

Modo de captura cada 16 flancos ascend.

1000

Modo comparacin, pone a 1 pin RCy/CCPx

1001

Modo comparacin, pone a 0 pin RCy/CCPx

1010

Modo comparacin que genera interrupcin

1011

Modo comparacin, con disparo


Ing. especial
Diana Valdivieso Herrera

11xx

Modo PWM

Modo Captura
La pareja de registros CCPRx captura
el valor que tiene el Timer1 cuando
ocurre un evento especial en el pin
RC2/CCP1 (para el mdulo CCP1) o
en el pin RC1/T1OSI/CCP2 (para el
mdulo CCP2). Dichos pines deben
configurarse como entradas.
Ing. Diana Valdivieso Herrera

Los eventos posibles que pueden ocurrir


para que se produzca la captura son:
Un flanco ascendente.
Un flanco descendente.
Cada 4 flancos ascendentes.
Cada 16 flancos ascendentes.

Ing. Diana Valdivieso Herrera

Al

producirse la captura, se activa el flag


CCP1IF.
Si el bit CCP1IE est habilitado (adems
del GIE y PEIE), se genera una interrupcin
inmediatamente
despus
de
que
CCPR1H-L se cargue con el valor de
Timer1.

Ing. Diana Valdivieso Herrera

Modo Comparacin
En este modo:
El contenido de la pareja de registros
CCPR1H-L se compara con el valor del
Timer
1,
cuando
ambos
valores
coinciden, se produce un evento en el
pin RCy/CCPx, el cual debe estar
configurado como salida.

Ing. Diana Valdivieso Herrera

Los posibles eventos en RCy/CCPx son:


Pasa a nivel alto.
Pasa a nivel bajo.
No cambia su estado, pero se produce
una interrupcin.

Ing. Diana Valdivieso Herrera

Al

coincidir los valores del Timer 1 con los


del par de registros CCPRxH-L, se activa el
flag CCP1IF.
Si el bit CCP1IE est habilitado (adems
del GIE y PEIE), se genera una interrupcin
inmediatamente
despus
de
que
CCPR1H-L se cargue con el valor de
Timer1.
Ing. Diana Valdivieso Herrera

Modo PWM
En este modo se puede producir una salida
de frecuencia fija seleccionable, est seal
puede ser modulada en ancho de pulso, es
decir el ciclo de trabajo de dicha seal
tambin se puede programar con una
resolucin de hasta 10 bits.
Esta salida se obtiene por los pines
RCy/CCPx, los cuales deben configurarse
como salidas.
Ing. Diana Valdivieso Herrera

Modo PWM

Ing. Diana Valdivieso Herrera

Control del perodo del PWM


El perodo de la seal esta dado por un
valor cargado en el registro PR2, de
acuerdo a la siguiente expresin:
Perodo PWM=(PR2+1)*4*Tosc*M
donde 1/M es el preescalador del Timer 2.
Ing. Diana Valdivieso Herrera

Cuando el valor de TMR2 alcanza el valor


de PR2, se producen:
El registro TMR2 se borra.
La salida CCPx se pone a 1 (salvo que el
ciclo de trabajo sea cero).
El ciclo de trabajo es cargado de CCPRxL
a CCPRxH.
Ing. Diana Valdivieso Herrera

Control del ciclo de trabajo


del PWM
El ciclo de trabajo se especifica cargando
un valor de 10 bits en el registro CCPRxL (8
bits de mayor peso) y los dos bits de menos
peso en CCPxCON (bits 5 y 4). Para
calcular el ciclo de trabajo (CT), se usa la
siguiente expresin:
Perodo PWM=CT*Tosc*M
Ing. Diana Valdivieso Herrera

Cuando el valor de TMR2 alcanza el valor


cargado en CCPRxH, la patita CCPx se
pone a cero.
El nmero de divisiones que se puede tener
en un ciclo de trabajo ser 2^r, donde r es
el nmero de bits usados.

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Secuencia de configuracin
del PWM
Establecer

el
perodo
de
PWM
escribiendo PR2.
Establecer CT escribiendo CCPRxL y
CCPxCON (5 y4 )
Configurar como salida CCPx
Configurar el preescalador del Timer 2 y
habilitar el Timer 2 en T2CON.
Configurar el CCPx en modo PWM en
CCPxCON (2 y 3)
Ing. Diana Valdivieso Herrera

Transmisin serial
El pic 16f877 posee dos perifricos para este
tipo de transmisin:
USART=
Universal
Synchronous
Asynchronous Receiver Transmitter.
MSSP= Master Synchronous Serial Port

Ing. Diana Valdivieso Herrera

USART
Puede ser configurada de tres modos:
Modo Asncrono (Full duplex,
bidireccional)
Modo Sncrono - maestro (half duplex)
Modo Sncrono - esclavo (half duplex)

Ing. Diana Valdivieso Herrera

Modo Asncrono
En este caso el USART utiliza el
formato NRZ, el cual utiliza 1 bit de
inicio, 8 o 9 bits de datos y bit de
paro. Mientras no se transmiten datos
se enva continuamente un bit de
marca.

Ing. Diana Valdivieso Herrera

Registro TXSTA
Este registro sirve para configurar
transmisin, su direccin 98H

la

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Generador

de Baud Rate (BRG), en la


tabla X corresponde al valor del divisor de
frecuencia de 8 bits controlado por el
registro SPBRG (99H).

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

El transmisor asncrono
El transmisor asncrono posee un registro de
corrimiento (TSR) que se encarga de ir
enviando bit por bit, la nica manera de
acceder a este registro es escribiendo el
dato a transmitir en el registro TXREG (19H).
Cada vez que el TSR queda vaco lee el
TXREG, al quedar vaco TXREG activa el flag
TXIF (bit 4 del PIR1(0CH).
Ing. Diana Valdivieso Herrera

El transmisor asncrono
El flag TXIF, no puede ser limpiado por
software, ya que cambia a cero en cuanto
hay un nuevo dato en TXREG, este flag
puede utilizarse para producir una
interrupcin.
Existe otro bit: TRMT el cual se pone en alto
cuando TSR est vaco y en bajo cuando
est transmitiendo un dato
Ing. Diana Valdivieso Herrera

El transmisor asncrono
Para habilitar el mdulo de transmisin es
necesario poner en alto el TXEN.
Si se est usando un noveno bit TX9, ste
deber ser escrito antes de escribir los 8 bits
restantes a TXREG, ya que en cuanto se
escribe
un
dato
a
este
registro
inmediatamente es transferido a TSR (si ste
est vaco).
Ing. Diana Valdivieso Herrera

Inicializacin del mdulo de


transmisin :
1. Inicializar baud rate escribiendo al registro SPBRG el
divisor adecuado y opcionalmente al bit BRGH .
2. Habilitar comunicacin asncrona limpiando el bit
SYNC y poniendo a 1el bit SPEN (registro RCSTA)
3. Si se van a usar interrupciones, activar el bit TXIE
4. Activar TX9 si se desea transmitir datos de 9 bits
5. Habilitar transmisin mediante el bit TXEN.
6.Colocar el noveno bit del dato en TX9D si se estn
usando datos de 9 bits.
7. Cargar el dato al registro TXREG.
Ing. Diana Valdivieso Herrera

El receptor Asncrono
El mdulo de recepcin es similar al de
transmisin.
Una
vez
que
se
ha
seleccionado el modo asncrono, la
recepcin se habilita poniendo en alto el
bit CREN (bit 4 del RCSTA).

Ing. Diana Valdivieso Herrera

El receptor Asncrono
El dato es recibido mediante la lnea
RC7/RX/DT).
El receptor posee un registro de corrimiento
RSR. Este registro no es accesible, pero
cuando el dato recibido se ha completado
es transferido al registro RCREG (1Ah) si ste
est vaco y al mismo tiempo se activa el
flag RCIF(PIR1<5>).
Ing. Diana Valdivieso Herrera

El receptor Asncrono
La nica manera de limpiar la bandera
RCIF es leyendo los datos del registro
RCREG. El registro RCREG puede contener
hasta dos datos, ya que es un buffer doble
que funciona como un cola de dos
posiciones.

Ing. Diana Valdivieso Herrera

El receptor Asncrono
Si las dos posiciones del registro RCREG
estn llenas (no han sido ledas) y se
detecta el bit de Stop de un tercer dato de
recepcin,
lo
cual
ocasiona
un
transferencia automtica del dato recibido
a RCREG, esto destruir el primer dato
recibido y activar el indicador de
sobreescritura OERR (RCSTA<1>). Para evitar
esto, se debern leer los dos datos en
RSREG haciendo dos lecturas consecutivas.
Ing. Diana Valdivieso Herrera

El receptor Asncrono
La nica manera de limpiar el bit OERR una
vez que ha sido activado es reseteando el
mdulo de recepcin (limpiando CREN y
volvindolo a poner), si no se limpia OERR
se bloquea la transferencia de datos de
RSR a RCREG y no puede haber ms
recepcin de datos.

Ing. Diana Valdivieso Herrera

Si se detecta un bit nivel bajo en la posicin del


bit de stop se pone el indicador de error de
encuadre (frame error) FERR RCSTA<2>. Tanto
este indicador como el noveno bit RX9D de los
datos estn en una cola de dos posiciones al
igual que los datos recibidos, de manera que al
leer RCREG se actualizan FERR y RX9D con
nuevos valores, por lo cual stos bits debern
ser ledos antes de leer RCREG para no perder
su informacin.
Ing. Diana Valdivieso Herrera

Inicializacin del mdulo de


recepcin
1. Inicializar el baud rate escribiendo en el
registro SPBRG el divisor adecuado y el bit
BRGH .
2. Habilitar el puerto serie asncrono
limpiando el bit SYNC y poniendo el bit
SPEN.
3. Si se van a usar interrupciones, activar el
bit RCIE (bit 5 del registro PIE).
Ing. Diana Valdivieso Herrera

Inicializacin del mdulo de


recepcin
4. Si se desea recepcin de datos de 9 bits
se deber activar el bit RX9 del registro
RCSTA.
5. Habilitar la recepcin activando el bit
CREN.
6. El bit RCIF se activar cuando la
recepcin de un dato se complete y se
generar una interrupcin si previamente
se activo RCIE.
Ing. Diana Valdivieso Herrera

Inicializacin del mdulo de


recepcin
7. Leer el registro RCSTA para obtener el
noveno bit (si se estn recibiendo datos de
9 bits) o para determinar si ha ocurrido un
error de recepcin.
8. Leer los 8 bits del dato recibido leyendo
el registro RCREG.
9. Si ocurri algn error este se limpia al
limpiar el bit CREN, el cual deber volver a
ponerse si se desea continuar la recepcin.
Ing. Diana Valdivieso Herrera

Registro RCSTA

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Ing. Diana Valdivieso Herrera

Bibliografa
ANGULO,

Jos, MICROCONTROLADORES
PIC. DISEO PRCTICO DE
APLICACIONES, Ed. McGraw-Hill,
Madrid, 2003.
ANGULO, Jos,
MICROCONTROLADORES PIC. DISEO
PRCTICO DE APLICACIONES. SEGUNDA
PARTE: PIC 16F87X, Ed. McGraw-Hill,
Madrid, 2000.
Ing. Diana Valdivieso Herrera

Bibliografa
Microchip

Technology, PIC16F84 DATA


SHEET, Arizona, 2002

Microchip

Technology, PIC16F877 DATA


SHEET, Arizona, 2002

Ing. Diana Valdivieso Herrera

Anda mungkin juga menyukai