Está en la página 1de 58

UTILIZACIÓN DE LOS MICROCONTROLADORES PIC serie 16F87X MICROCHIP TECHNOLOGY

Docente: Oscar Celis

PIC serie 16F87X MICROCHIP TECHNOLOGY Docente: Oscar Celis ****** CEE ******* UTN - Facultad Regional Córdoba

****** CEE ******* UTN - Facultad Regional Córdoba

ÍNDICE

ÍNDICE Arquitectura Harvard vs. Arquitectura Von Neuman 3 Diagrama de Bloques, del Microcontrolador 4 Mapa

Arquitectura Harvard vs. Arquitectura Von Neuman

3

Diagrama de Bloques, del Microcontrolador

4

Mapa de Memoria Interna (RAM)

5

Memoria de Programa

6

Camino de los datos y Registro W

6

Contador de Programa

8

Stack (Pila)

8

Registro STATUS

9

Registros Especiales

10

Puertos de Entrada / Salida

10

Diagrama Lógico (PIN-OUT)

11

Temporizador 0

12

Interrupciones

13

Los Puertos Paralelos

19

Los Temporizadores

24

Los Modulos de Captura, Comparación y PWM

27

Interfaz Serie - USART

31

El Convertidor Analógico / Digital

38

El Temporizador WDT

42

Escritura de un programa fuente

43

Conjunto de Instrucciones

43

Modos de Direccionamiento

46

Herramientas de desarrollo

47

Simulación

50

Apéndice 1

51

Apéndice 2

52

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 02 de 5 8

1.1 Arquitectura Harvard vs. Arquitectura Von Neuman La arquitectura tradicional de computadoras y microprocesadores se

1.1 Arquitectura Harvard vs. Arquitectura Von Neuman

La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por John Von Neumann, en el cual la unidad central de proceso, o

CPU, esta conectada a una memoria única que contiene las instrucciones del programa y los datos (figura 1.1.1). El tamaño de la unidad de datos o instrucciones esta fijado por el ancho del bus de la memoria. Es decir que un microprocesador de 8 bits, que tiene además un bus de 8 bits que lo conecta con la memoria, deberá manejar datos e instrucciones de una o más unidades de 8 bits (bytes) de longitud. Cuando deba acceder a una instrucción o dato de más de un byte de longitud, deberá realizar más de un acceso

a la memoria. Por otro lado este bus único limita la velocidad de operación del

microprocesador, ya que no se puede buscar de memoria una nueva instrucción, antes de que finalicen las transferencias de datos que pudieran resultar de la instrucción anterior. Es decir que las dos principales limitaciones de esta arquitectura tradicional son :

a) que la longitud de las instrucciones esta limitada por la unidad de longitud de los datos,

por lo tanto el microprocesador debe hacer varios accesos a memoria para buscar instrucciones complejas,

b) que la velocidad de operación (o ancho de banda de operación) esta limitada por el

efecto de cuello de botella que significa un bus único para datos e instrucciones que

impide superponer ambos tiempos de acceso.

instrucciones que impide superponer ambos tiempos de acceso. FIG. 1.1.1 Arquitectura Von Newmann La arquitectura Harvard

FIG. 1.1.1 Arquitectura Von Newmann

La arquitectura Harvard y sus ventajas:

La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el

CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos (figura 1.1.2). Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set de instrucciones y el bus de la memoria de programa pueden diseñarse de manera tal que todas las instrucciones tengan una sola posición de memoria de programa de longitud. Además, como los buses son independientes, el CPU puede estar accediendo a los datos para completar la ejecución de una instrucción, y al mismo tiempo estar leyendo la próxima instrucción a ejecutar. Se puede observar claramente que las principales ventajas de esta arquitectura son:

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 03 de 5 8

a) que el tamaño de las instrucciones no esta relacionado con el de los datos,

a) que el tamaño de las instrucciones no esta relacionado con el de los datos, y por lo

tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa,

b) que el tiempo de acceso a las instrucciones puede superponerse con el de los datos,

logrando una mayor velocidad de operación.

Una pequeña desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran físicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).

de programa (por ejemplo en la EPROM de un microprocesador). FIG. 1.1.2 Arquitectura Harvard Los microcontroladores

FIG. 1.1.2 Arquitectura Harvard

Los microcontroladores PIC 16C5X, 16F87X, 16CXX y 17CXX poseen arquitectura Harvard, con una memoria de datos de 8 bits, y una memoria de programa que, según el modelo, puede ser de 12 bits para los 16C5X, 14 bits para los 16CXX y 16 bits para los

17CXX.

1.2 Diagrama de bloques

13 8 P O R TA D ata B u s P rogram C ounter
13
8
P O R TA
D
ata B u s
P rogram C ounter
FLASH
R
A 0/A N 0
P
rogram
R
A 1/A N 1
M
em ory
R
A 2/A N 2
RAM
8
L eve l S ta ck
(13-b it)
R
A 3/A N 3/V REF
F ile
R
A 4/T 0C K I
R
e
g isters
R
A 5/A N 4/S S
P rogram
14
Bus
R A M A d dr (1)
9
PORTB
R
B 0/IN T
Addr M U X
RB1
In stru ction re g
RB2
7
Indire ct
D ire ct A ddr
R
B 3/P G M
8 Addr
RB4
RB5
F S R reg
R
B 6/P G C
R
B 7/P G D
S TAT U S reg
PORTC
8
R
C 0/T 1O S O /T 1C K I
R
C 1/T 1O S I/C C P 2
R
C 2/C C P 1
3
MUX
Pow er-up
R
C 3/S C K /S C L
T
im er
R
C 4/S D I/S D A
In
stru ction
O s c illator
R
C 5/S D O
D
ecode &
S tart-up T im er
R
C 6/T X /C K
ALU
C
ontro l
R
C 7/R X /D T
Pow er-on
8
R eset
PORTD
T
im ing
W atc hdog
W reg
G
e n eration
T im er
O
S C 1/C L K IN
Brow n-out
O
S C 2/C L K O U T
R eset
R
D 7/P S P 7:R D 0/P S P 0
In-C ircu it
D ebugger
L ow -Vo lta ge
P rogram m ing
P ara lle l S lave Port
PORTE
R
E 0/A N 5/R D
R
E 1/A N 6/W R
MC LR
V D D , V S S
R E 2/A N 7/C S
T im er0
T
im er1
T im er2
10-b it A /D
D ev ic e
Program
D a ta M e m o r y
D a ta E E P RO M
FLASH
P
IC 16F 874
4K
192
B yte s
128
B yte s
D ata E E P R O M
S ynchronous
C
C P 1,2
USART
P
IC 16F 877
8K
368
B yte s
256
B yte s
S eria l Port

N o te 1:

H ig h e r ord e r b its a re fro m th e S TA T U S re g is te r.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 04 de 5 8

1.3 Mapas de memoria Memoria Interna (RAM) Organización La memoria interna de datos, también llamada

1.3 Mapas de memoria Memoria Interna (RAM)

Organización

La memoria interna de datos, también llamada archivo de registros (register file), esta dividida en dos grupos: los registros especiales, y los registros de propósito generales. Los primeros ocupan las primeras 32 posiciones de los cuatro bancos de memoria RAM. Entre los registros especiales se encuentran el registro de estado (STATUS), los registros de datos de los cinco puertos de entrada salida (Puerto A, Puerto B, Puerto C, Puerto D, Puerto E), los 8 bits menos significativos del program counter (PC), los registros de los timers, TMR0, TMR1L, TMR1H, TMR2, un registro puntero llamado File Select Register (FSR). La posición 00 no contiene ningún registro en especial y es utilizada en el mecanismo de direccionamiento indirecto. Como se observa este microcontrolador posee cuatro bancos de memoria y pueden seleccionarse desde el registro STATUS.

F ile A ddre ss In d ire c t a d dr. (*) 00h
F ile
A ddre ss
In d ire c t a d dr. (*)
00h
In
d ire c t a d dr. (*)
80h
In d ire c t a d dr. (*)
100h
In
d
ire c t a d dr. (*)
180h
TMR0
01h
O
P T IO N _R E G
81h
TMR0
101h
O
P
T IO N _R E G
181h
PC L
02h
PC L
82h
PC L
102h
PC L
182h
S
TAT U S
03h
S
TAT U S
83h
S
TAT U S
103h
S
TAT U S
183h
FSR
04h
FSR
84h
FSR
104h
FSR
184h
P
O
R TA
05h
T
R IS A
85h
105h
185h
PORTB
06h
T
R IS B
86h
PORTB
106h
T
R IS B
186h
PORTC
07h
T
R
IS C
87h
107h
187h
PORTD
(1)
08h
T
R IS D
(1)
88h
108h
188h
PORTE
(1)
09h
T
R IS E
(1)
89h
109h
189h
PC LATH
0A h
PC LATH
8A h
PC LATH
10A h
PC LATH
18A h
IN
T
C O N
0Bh
IN
T
C O N
8Bh
IN
T C O N
10Bh
IN
T C O N
18Bh
P
IR 1
0C h
P
IE 1
8C h
E
E DATA
10C h
EECON1
18C h
P
IR 2
0D h
P
IE 2
8D h
EEADR
10D h
EECON2
18D h
TM R 1L
0E h
PC ON
8E h
10E h
E
EDATH
R
eserved (2)
18E h
TM R 1H
0F h
8F h
EEADRH
10F h
R
eserved (2)
18F h
T1C O N
10h
90h
110h
190h
TMR2
11h
SSPC ON2
91h
111h
191h
T2C O N
12h
PR2
92h
112h
192h
SSPBUF
13h
S
S
PA D D
93h
113h
193h
SSPC ON
14h
S S P S TAT
94h
114h
194h
C
C
PR 1L
15h
95h
115h
195h
C
C
PR 1H
16h
96h
116h
196h
G
enera l
G
enera l
C
C
P1C O N
17h
97h
117h
197h
P
urpose
P
urpose
R
C S TA
18h
T
X
S TA
98h
118h
198h
R
e g ister
R
e g ister
TXREG
19h
SPBRG
99h
16
B yte s
119h
16
B yte s
199h
RCREG
1A h
9A h
11A h
19A h
1Bh
9Bh
11Bh
C
C
PR 2L
19Bh
11C h
C
C
PR 2H
1C h
9C h
19C h
C
C
P2C O N
1D h
9D h
11D h
19D h
11E h
ADRESH
1E h
ADRESL
9E h
19E h
ADCON0
1F h
ADCON1
9F h
11F h
19F h
20h
120h
A 0h
1A 0h
G
enera l
G
enera l
G
enera l
G
enera l
P
urpose
P
urpose
P
urpose
P
urpose
R
e
g ister
R
e
g
ister
R
e g ister
R
e g ister
80
B yte s
80
B yte s
80
B yte s
96
B yte s
1E F h
EFh
16F h
F0h
170h
1F0h
accesses
accesses
accesses
70h - 7F h
70h-7F h
70h-7F h
7F h
FFh
17F h
1F F h
Bank 0
Bank 1
Bank 2
Bank 3
U
n im p le m e n te d d a ta m e m ory lo c a tio n s , re a d a s '0'.
* N ot a phy s ic a l re g ister.
N ote 1:
T he se re g isters are
not im p lem e nte d on 28-p in dev ic e s.
2:
T h e s e re g is te rs a re
re s e rv e d , m a in ta in th e s e re g is te rs c le a r.

FIG. 1.3.1 Organización de la memoria Interna (RAM) en la familia PIC16F87X

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 05 de 5 8

Memoria de Programa

Organización

Memoria de Programa Organización La memoria de programa, que en los PIC16F87X puede ser de 2K,

La memoria de programa, que en los PIC16F87X puede ser de 2K, 4K u 8K instrucciones, debe ser considerada a los efectos de la programación, como compuesta por secciones o páginas de 2K posiciones. Esto se debe, como se verá, a las limitaciones de direccionamiento de las instrucciones de salto

de direccionamiento de las instrucciones de salto FIG. 1.3.2 Organización de la memoria de programa en

FIG. 1.3.2 Organización de la memoria de programa en la familia PIC16F87X

1.4 Registros de funciones especiales Camino de los datos y registro W

La figura 1.4.2 representa un diagrama simplificado de la arquitectura interna del camino de los datos en el CPU de los microcontroladores PIC. Este diagrama puede no representar con exactitud el circuito interno de estos microcontroladores, pero es exacto y claro desde la óptica del programador. La figura 1.4.1 representa el mismo diagrama para un microprocesador ficticio de arquitectura tradicional. Se puede observar que la principal diferencia entre ambos radica en la ubicación del registro de trabajo, que para los PIC's se denomina W (Working Register), y para los tradicionales es el Acumulador (A).

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 06 de 5 8

Figura 1.4.1 En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La
Figura 1.4.1 En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La

Figura 1.4.1

En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La salida del acumulador esta conectada a una de las entradas de la Unidad Aritmética y Lógica (ALU), y por lo tanto éste es siempre uno de los dos operandos de cualquier instrucción. Por convención, las instrucciones de simple operando (borrar, incrementar, decrementar, complementar), actúan sobre el acumulador. La salida de la ALU va solamente a la entrada del acumulador, por lo tanto el resultado de cualquier operación siempre quedara en este registro. Para operar sobre un dato de memoria, luego realizar la operación siempre hay que mover el acumulador a la memoria con una instrucción adicional. En los microcontroladores PIC, la salida de la ALU va al registro W y también a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro W, como ocurría en el modelo tradicional con el acumulador. En las instrucciones de simple operando el dato en este caso se toma de la memoria (también por convención). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instrucción que opere con la memoria, ya sea de simple o doble operando, puede dejarse en la misma posición de memoria o en el registro W, según se seleccione con un bit de la misma instrucción. Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 07 de 5 8

En la memoria de datos de los PIC's se encuentran ubicados casi todos los registros

En la memoria de datos de los PIC's se encuentran ubicados casi todos los registros de control del microprocesador y sus periféricos autocontenidos, y también las posiciones de memoria de usos generales.

Contador de Programa

Este registro, normalmente denominado PC, es totalmente equivalente al de todos los microprocesadores y contiene la dirección de la próxima instrucción a ejecutar. Se incrementa automáticamente al ejecutar cada instrucción, de manera que la secuencia natural de ejecución del programa es lineal, una instrucción después de la otra. Algunas instrucciones que llamaremos de control, cambian el contenido del PC alterando la secuencia lineal de ejecución. Dentro de estas instrucciones se encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programa salte a cualquier posición de la memoria. Otras instrucciones de control son los SKIP o "salteos" condicionales, que producen un incremento adicional del PC si se cumple una condición especifica, haciendo que el programa saltee, sin ejecutar, la instrucción siguiente. El PC es un registro de 13 bits en los 16F87X, lo que permite direccionar 8192 posiciones de memoria de programa. Al resetearse el microprocesador, todos los bits del PC toman valor 0, de manera que la dirección de arranque del programa es siempre la primera posición de memoria de programa. En esta posición se deberá poner la primera instrucción del programa. A diferencia de la mayoría de los microprocesadores convencionales, el PC es también accesible al programador como registro de memoria interna de datos, en la posición de 02. Es decir que cualquier instrucción común que opere sobre registros puede ser utilizada para alterar el PC y desviar la ejecución del programa. El uso indiscriminado de este tipo de instrucciones complica el programa y puede ser muy peligroso, ya que puede producir comportamientos difíciles de predecir. Sin embargo, algunas de esta instrucciones utilizadas con cierto método, pueden ser muy útiles para implementar poderosas estructuras de control tales como el goto computado. Como el microprocesador opera con datos de 8 bits, y la memoria de datos es también de 8 bits, estas instrucciones solo pueden leer o modificar los bits 0 a 7 del PC.

Stack

En los microcontroladores PIC el stack es una memoria interna dedicada, de tamaño limitado, separada de las memorias de datos y de programa, inaccesible al programador, y organizada en forma de pila, que es utilizada solamente, y en forma automática, para guardar las direcciones de retorno de subrrutinas e interrupciones. Cada posición es de 13 bits y permite guardar una copia completa del PC. Como en toda memoria tipo pila, los datos son accedidos de manera tal que el primero que entra es el ultimo que sale. En los 16F87X el stack es de solo ocho posiciones, mientras que en los 17CXX es de 16 posiciones. Esto representa, en cierta medida, una limitación de estos microcontroladores, ya que no permite hacer uso intensivo del anidamiento de subrutinas. En los 16F87X, solo se pueden anidar ocho niveles de subrutinas, es decir que una subrutina que es llamada desde el programa principal, puede a su vez llamar a otra subrutina, hasta un máximo de 8, siempre que no existan interrupciones habilitadas, en tal caso deberán disminuir la cantidades de rutinas anidadas en el main, porque de lo contrario se desbordará el Stack.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 08 de 5 8

Esto de hecho representa una traba para el programador y además parece impedir o dificultar

Esto de hecho representa una traba para el programador y además parece impedir o dificultar la programación estructurada, sin embargo es una buena solución de compromiso ya que estos microcontroladores están diseñados para aplicaciones de alta velocidad en tiempo real, en las que el overhead (demoras adicionales) que ocasiona un excesivo anidamiento de subrutinas es inaceptable. Por otra parte existen técnicas de organización del programa que permiten mantener la claridad de la programación estructurada, sin necesidad de utilizar tantas subrutinas anidadas. Como ya se menciono anteriormente, el stack y el puntero interno que lo direcciona, son invisibles para el programador, solo se los accede automáticamente para guardar o rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamada o retorno de subrutinas, o cuando se produce una interrupción o se ejecuta una instrucción de retorno de ella.

Registro de Estado del Procesador (STATUS - Dirección 0x03, 0x83, 0x103, 0x183)

La palabra de estado del procesador contiene los tres bits de estado de la ALU (C, DC y Z), y otros bits que por comodidad se incluyeron en este registro.

R /W -0

R /W -0

R /W -0

R -1

R -1

R /W -x

R /W -x

R /W -x

IR P

R P 1

R P 0

T O

P D

Z

D C

C

b it7

b it0

b it 7:

IR P : R e g ister B a n k S e le c t b it (u s e d for in d ire c t a d dre s s in g )

1

=

B

a n k 2,

3 (100h - 1F F h )

0

= B

a n k 0,

1 (00h - F F h )

R = R eadable bit

W = W rita ble b it

U = U n im p lem e nte d b it, re a d a s ‘0’

- n =Va lue at P O R re set

b it 6-5: R P 1:R P 0: R e g ister B a n k S e le c t b its (u s e d for d ire c t a d dre s s in g )

11

= B a n k 3 (180h

-

1F F h )

10

= B a n k 2 (100h

- 17F h )

01

= B a n k 1 (80h -

F F h )

00

= B a n k 0 (00h - 7F h )

E a c h ba n k is 128 byte s

bit 4:

T O : T im e-out bit

1

= A fter pow er-up, CLRWDT in stru ction, or SLEEP in stru ction

0

= A W D T tim e-out o c c urre d

bit 3:

P D : Pow er-dow n bit

1

= A fter pow er-up or by the CLRWDT in stru ction

0

= B y exe c ution of the SLEEP in stru ction

bit 2:

Z : Z ero bit

1

= T he re su lt of a n arithm etic or log ic operation

is zero

0

= T he re su lt of a n arithm etic or log ic operation

is not zero

b

it 1:

D C : D ig it c a rry /b orro w bit ( ADDWF, ADDLW,SUBLW,SUBWF in stru c tio n s ) (for b orro w the po larity is reverse d )

 

1

= A c arry-out from the 4th low order b it of the re su lt o c c urre d

0

= N o c arry-out from the 4th low order b it of the re su lt

b

it 0:

C : C a rry /b orro w bit ( ADDWF, ADDLW,SUBLW,SUBWF in stru ction s )

1

= A c arry-out from the m ost s ign ic a nt b it of the re su lt o c c urre d

0

= N o c arry-out from the m ost s ign ic a nt b it of the re su lt o c c urre d

N

ote : F or borro w th e p o la rity is re v e rs e d . A s u b tra c tio n is e x e c u te d b y a d d in g th e tw o ’s c o m p le m e n t o f th e

se c ond opera nd. F or rotate ( RRF, RLF) in stru ction s, th is b it is loa de d w ith e ither the h igh or low order b it of

th e s o urc e re g is te r.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 09 de 5 8

REGISTROS ESPECIALES IMPORTANTES

REGISTROS ESPECIALES IMPORTANTES Las primeras posiciones del área de datos están reservadas para alojar registros de

Las primeras posiciones del área de datos están reservadas para alojar registros de propósito especial, quedando las restantes libres para contener los datos u operandos que se desee (registros de propósito general).

El registro INDF que ocupa la posición 0 no está implementando físicamente y, como se ha explicado, se le referencia en el direccionamiento indirecto de datos aunque se utiliza

el contenido de FSR.

En la dirección 0x01 esta el registro TMR0 (Temporizador) que puede ser leído y escrito como cualquier otro registro. Puede incrementar su valor con una señal externa aplicada

al pin T0CKI o mediante el oscilador interno.

El PC ocupa la posición 2 del área de datos en donde se halla el registro PCL al que se añaden 5 bits del registro PCLATH que se encuentra en pla posición 0x0A. El registro de Estado ocupa la posición 3 y entre sus bits se encuentran los señalizadores C, DC y Z y el resto de los bits vistos anteriormente. FSR se ubica en la dirección 4 y puede usarse para contener las dirección del dato en las instrucciones con direccionamiento indirecto y también para guardar operandos. Los registros que ocupan las posiciones 5, 6, 7, 8 y 9 soportan los Puertos A, B, C,DyE de E/S. Pueden ser leídos y escritos como cualquier otro registro y manejan los valores de los bits que entran y salen por los pines de E/S del microcontrolador.

1.5 Puertos de entrada / salida

Los microprocesadores PIC16F87X tienen tres o cinco puertos de entrada/salida paralelo de usos generales llamados Puerto A, Puerto B, Puerto C, Puerto D y Puerto E. El Puerto

A es de cinco bits, el Puerto E es de tres bits y los demás son de 8 bits cada uno. El

PuertoDyE solamente esta disponible en el 16F874 y el 16F877.

Circuito equivalente

Cada puerto tiene, particularidades en el diseño de su celda de entrada / salida, según los periféricos asociados, etc. En la siguiente figura podemos ver en forma reducida un gráfico típico, con los elementos comunes para todos los puertos.

típico, con los elementos comunes para todos los puertos. Circuito equivalente de puerto I/O La impresión

Circuito equivalente de puerto I/O

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 10 de 5 8

R A A 3/A 2/A N N 3/V 2/V REF REF + -R

R A A 0/A 1/A LR /V N N 0 1 P P /T H VMC

N B C 7/P G D

R B 6/P G C

RB5 N RB4 C

R

R

G D R B 6 / P G C RB5 N R B 4 C R

El latch L1 corresponde a un bit del registro de datos del puerto, mientras que L2 es un bit del registro de control de tristate del mismo. B1 es el buffer tristate de salida que tiene capacidad de entregar 20 mA y drenar 25 mA. B1 es controlado por L2. Si L2 tiene cargado un "1", B1 se encuentra en tri-state, es decir con la salida desconectada (en alta impedancia), y el puerto puede ser usado como entrada. Si L2 tiene cargado un "0", la salida de B1 esta conectada (baja impedancia) y el puerto esta en modo de salida. B2 es el buffer de entrada, es decir el que pone los datos en el bus interno del microcontrolador cuando se lee el registro de datos del puerto. Puede verse que el dato leído es directamente el estado del pin de entrada

1.6 Diagrama lógico

Diagrama lógico para los microcontroladores PIC16F87X (Pin-Out)

PD IP MC LR /V P P /T H V 1 40 R B 7/P
PD IP
MC LR /V P P /T H V
1
40
R
B 7/P G D
R
A 0/A N 0
2
39
R
B 6/P G C
R
A 1/A N 1
3
38
RB5
R
A 2/A N 2/V REF -
4
37
RB4
R
A 3/A N 3/V REF +
5
36
R
B 3/P G M
R A 4/T 0C K I
6
35
RB2
R
A 5/A N 4/S S
7
34
RB1
R
E 0/R D /A N 5
8
33
R
B 0/IN T
R E 1/W R /A N 6
9
32
V
D D
R
E 2/C S /A N 7
10 31
V
S S
V
D D
11 30
R
D 7/P S P 7
V
S S
12 29
R
D 6/P S P 6
O
S C 1/C L K IN
13 28
R
D 5/P S P 5
O
S C 2/C L K O U T
14 27
R
D 4/P S P 4
R C 0/T 1O S O /T 1C K I
R C 1/T 1O S I/C C P 2
15 26
R
C 7/R X /D T
16 25
R
C 6/T X /C K
R C 2/C C P 1
17 24
R
C 5/S D O
R C 3/S C K /S C L
18 23
R
C 4/S D I/S D A
R
D 0/P S P 0
19 22
R
D 3/P S P 3
R
D 1/P S P 1
20 21
R
D 2/P S P 2
P IC 16F 877/874

PLC C

R A 4/T 0C K I

A 5/A N 4/S S

E 0/R D /A N 5

R E 1/W R /A N 6

E 2/C S /A N 7

R

R

R

V

V

D D

S S

S C 1/C L K IN

O S C 2/C L K O U T R C 0/T 1O S O /T 1C K 1 N C

O

39 7 38 8 37 9 36 10 P IC 16F 877 35 11 34
39
7
38
8
37
9
36
10
P
IC 16F 877
35
11
34
12
P
IC 16F 874
33
13
32
14
31
15
30
16
17
29
R C 1/T 1O S I/C C P 2
18
6
R
C 2/C C P 1
19
5
R C 3/S C K /S C L
20
4
R
R
R
R
D 0/P S P 0
D 1/P S P 1
D 2/P S P 2
D 3/P S P 3
21
3
22
2
23
1
24
44
R C 4/S D I/S D A
25
43
R C 5/S D O
26
42
R C 6/T X /C K
N C
27
41
28
40

R B 3/P G M

RB2

RB1

R

V

V

R

R

R

R

R

B 0/IN T

D D

S S

D 7/P S P 7

D 6/P S P 6

D 5/P S P 5

D 4/P S P 4

C 7/R X /D T

D IP , S O IC MC LR /V P P /T H V 1
D IP , S O IC
MC LR /V P P /T H V
1
28
R
A 0/A N 0
2
27
R
A 1/A N 1
3
26
R
A
2/A N 2/V REF -
4
25
R
A
3/A N 3/V REF +
5
24
R A 4/T 0C K I
6
23
R A 5/A N 4/S S
7
22
8
21
V S S
O S C 1/C L K IN
9
20
O
S C 2/C L K O U T
10
19
R C 0/T 1O S O /T 1C K I
11
18
R C 1/T 1O S I/C C P 2
12
17
R C 2/C C P 1
13
16
R
C 3/S C K /S C L
14
15
PIC16F876/873

R C 7/R X /D T

4/P S P 4

5/P S P 5

6/P S P 6

7/P S P 7

V

V

B 0/IN T

RB1

D D

S S

R

R

R

R

D

D

D

D

R

RB2

R B 3/P G M

QFP 1 33 2 32 31 3 4 30 5 P IC 16F 877 29
QFP
1
33
2
32
31
3
4
30
5
P
IC 16F 877
29
28
6
P
IC 16F 874
7
27
8
26
9
25
10
24
11
23
N
C
12
44
R
N
C
13
43
RB4
14
R
R
RB5
15
41 42
R
R
B 6/P G C
16
40
R
B 7/P G D
17
39
R
R
MC LR /V P P /T H V
18
38
R
R
A 0/A N 0
19
37
R
A 1/A N 1
20
36
R
R
R A 2/A N 2/V REF -
35
R A 3/A N 3/V REF +
22 21
34
R
N
C 6/T X /C K
C 5/S D O
C 4/S D I/S D A
D 3/P S P 3
D 2/P S P 2
D 1/P S P 1
D 0/P S P 0
C 3/S C K /S C L
C 2/C C P 1
C 1/T 1O S I/C C P 2
C

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

R

B 7/P G D

R

B 6/P G C

RB5

RB4

R B 3/P G M

RB2

RB1

R

B 0/IN T

V

D D

V

S S

R

C 7/R X /D T

R

C 6/T X /C K

R

C 5/S D O

R

C 4/S D I/S D A

N

C

R

C 0/T 1O S O /T 1C K I

O

S C 2/C L K O U T

O

S C 1/C L K IN

V

S S

V

D D

R

E 2/A N 7/C S

R

E 1/A N 6/W R

R

E 0/A N 5/R D

R

A 5/A N 4

R

A 4/T 0C K I

Página 11 de 5 8

1.7 Temporizador 0 / Contador (TMR0)

1.7 Temporizador 0 / Contador (TMR0) Este dispositivo es uno de los tres que posee esta

Este dispositivo es uno de los tres que posee esta familia de microcontroladores, llamado Real Time Clock / Counter, es básicamente un contador de 8 bits, constituido por el registro operacional TMR0 que se encuentra en la posición 01 de la memoria de datos. Este registro puede usarse para contar eventos externos por medio de un pin de entrada especial (modo contador) o para contar pulsos internos de reloj de frecuencia constante (modo timer). Además, en cualquiera de los dos modos, se puede insertar un prescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler del TMR0 o como postscaler del Watch Dog Timer, según se lo programe. Para su programación se dispone de dos registros: el TMR0 ya mencionado y el registro OPTION. Este registro contiene los bits necesarios para seleccionar modo contador o modo timer, flanco de conteo en modo contador, prescaler para TMR0 o para WDT y constante de división del prescaler, según el siguiente esquema:

R /W -1 R /W -1 R /W -1 R /W -1 R /W -1
R
/W -1
R /W -1
R /W -1
R /W -1
R /W -1
R
B P U
b it7
IN T E D G
T 0C S
T 0S E
P S A
R /W -1
P S 2
R /W -1
P S 1
R /W -1
P S 0
b it0
R = R eadable bit
W = W rita ble b it
U = U n im p lem e nte d b it,
re a d a s ‘0’
- n=Va lue at P O R re set
bit 7:
R B P U : P O R T B P u ll-up E nable bit
1
= P O R T B
pu ll-ups are disabled
0
= P O R T B
pu ll-ups are e na ble d by ind iv idua l port latc h
va lue s
b it 6:
IN T E D G : Interrupt E dge S e le ct b it
1
= In te rru p t o n
ris in g e d g e o f R B 0/IN T p in
0
= In te rru p t o n
fa llin g e d g e o f R B 0/IN T p in
bit 5:
T 0C S : T M R 0 C lock S ource S e le ct bit
1
= Tra n s itio n o n R A 4/T 0C K I p in
0
= Intern a l in stru c tio n c y c le c lo c k (C L K O U T )
bit 4:
T 0S E : T M R 0 S ource E dge S e le ct bit
1
= In c re m e n t o n
h ig h-to-low tra n s itio n
o n
R A 4/T 0C K I p in
0
= In c re m e n t o n
low -to-h ig h tra n s itio n
o n
R A 4/T 0C K I p in
bit 3:
P S A : P re sca ler A ss ignm ent bit
1
= P re s c a ler is a s s igne d to the W D T
0
= P re s c a ler is a s s igne d to the T im er0 m odu le
b it 2-0: P S 2:P S 0: P re s c a ler R ate S e le ct b its
B it V a lue
T M R 0 R ate
W D T R ate
000
1:1
1:2
001
1:2
1:4
010
1:4
1:8
011
1:8
1 : 16
100
1 : 16
1 : 32
101
1 : 32
1 : 64
110
1 : 64
1 : 128
111
1 : 128
1 : 256

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 12 de 5 8

Circuito equivalente del TMR0 y el prescaler.

Circuito equivalente del TMR0 y el prescaler. D ata bu s F o s c /4
D ata bu s F o s c /4 0 PS out 8 1 S
D ata bu s
F o s c /4
0
PS out
8
1
S y n c w ith
1
Interna l
c locks
TMR0
R A 4/T 0C K I
pin
P rogram m able
P re sca ler
0
PS out
(2 c y c le d e la y )
T0S E
3
PS 2, PS 1, PS 0
PSA
T0C S
S et interrupt
ag bit T 0IF
on overo w
N o te 1:
T 0C S , T 0S E , P S A , P S 2:P S 0 (O P T IO N _R E G <5:0>).
2:
T h e pre s c a ler is s h are d w ith W a tc h d o g T im er (re fer to F igure 5-2 for d e ta ile d b lo c k d ia gra m ).

En el esquema se puede observar claramente como operan los bits de configuración T0SE, T0CS y PSA, en cualquiera de sus combinaciones. Se observa además que en la entrada del contador TMR0 hay un circuito de sincronización que introduce una demora de dos ciclos del clock de instrucciones (Fosc. / 4). Al escribir sobre el TMR0 automáticamente se resetea este circuito, por lo tanto solo se incrementara dos ciclos después. El prescaler es un contador asincrónico de 8 bits más un multiplexor8a1 comandado por los bits PS0 a PS2, que permite seleccionar como salida a cualquiera de los bits del contador. Al escribir sobre el TMR0, si este esta programado para operar con prescaler (PSA=0), se borra automáticamente el prescaler. Las instrucciones CLRWDT y SLEEP borran el prescaler, si este esta programado para operar como postscaler del watch dog timer (PSA=1).

1.8 Interrupciones

Los 16F87X tienen la posibilidad de contar con sistema de interrupciones. Este sistema consiste en un mecanismo por el cual un evento interno o externo, asincrónico respecto del programa, puede interrumpir la ejecución de éste produciendo automáticamente un salto a una subrutina de atención, de manera que pueda atender inmediatamente el evento, y retomar luego la ejecución del programa exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es muy útil por ejemplo para el manejo de timers o rutinas que deben repetirse periódicamente (refresh de display, antirebote de teclado, etc.), detección de pulsos externos, recepción de datos, etc. Existen catorce fuentes de interrupción en los PIC16F87X.

Funcionamiento

En los 16F87X las interrupciones se comportan casi exactamente igual que las subrutinas. Desde el punto de vista del control del programa, al producirse una interrupción se produce el mismo efecto que ocurriría si el programa tuviese un CALL 0004h en el punto en que se produjo la interrupción. En uno de los registros de control del sistema de interrupciones existe un bit de habilitación general de interrupciones GIE, que debe ser programado en 1 para que las interrupciones puedan actuar. Al producirse una interrupción, este bit se borra automáticamente para evitar nuevas interrupciones. La instrucción RETFIE que se utiliza al final de la rutina de interrupción, es idéntica a un retorno de subrutina, salvo que además coloca en uno automáticamente el bit GIE,

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 13 de 5 8

volviendo a habilitar las interrupciones. Dentro de la rutina de interrupción, el programa deberá probar

volviendo a habilitar las interrupciones. Dentro de la rutina de interrupción, el programa deberá probar el estado de los flags de interrupción de cada una de las fuentes habilitadas, para detectar cual fue la que causo la interrupción y así decidir que acción tomar.

E E IF E E IE P S P IF P S P IE W
E
E IF
E
E IE
P
S P IF
P
S P IE
W
a ke-u p (If in S L E E P m o d e )
A D IF
T
0IF
A D IE
T
0IE
R
C IF
IN T F
R
C IE
IN T E
Interrupt to C P U
T
X IF
R
BIF
T
X IE
R
BIE
S
S P IF
S
S P IE
P
E IE
C
C P 1IF
C
C P 1IE
G
IE
T
M R 2IF
T
M R 2IE
T
M R 1IF
T
M R 1IE
C C P 2IF
C C P 2IE
BC LIF
BC LIE
T he fo llow ing ta ble show s w h ic h dev ic e s h a ve w h ic h interrupts.
D ev ic e
T
0IF
IN
T F
R
B IF
P S P IF
A D IF
R
C IF
T
X IF
S S P IF
C C P 1IF
T M R 2IF
T M R 1IF
E
E IF
B C L IF
C C P 2IF
P
IC 16F 876/873
Y
e s
Y
e s
Y
e s
-
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
P
IC 16F 877/874
Y
e s
Y
e s
Y
e s
Y e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s
Y
e s

Lógica de interrupciones para los µcontroladores PIC16F8X

Fuentes

La señal que produce la interrupción es en realidad una sola, que resulta de la combinación de todas las fuentes posibles y de los bits de habilitación. Existen dos grupos de fuentes, unas que se habilitan con solo colocar en uno el bit GIE, y otras que además necesitan que este puesto a uno el bit PEIE. Además, cada fuente de interrupciones tiene su respectivo bit de habilitación individual.

REGISTRO INTCON (DIRECCIONES 0B Y 8B)

Este registro sirve para el control global de las interrupciones y para indicar la procedencia de algunas a través de los bits de estado. El PIC 16F87X dispone de doce fuentes de potenciales interrupciones:

Cada bit del registro INTCON tiene un significado particular, que es:

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 14 de 5 8

Registro INTCON - Dirección 0x0B, 0x8B, 0x10B, 0x18B R /W -0 R /W -0 R

Registro INTCON - Dirección 0x0B, 0x8B, 0x10B, 0x18B

R /W -0 R /W -0 R /W -0 R /W -0 R /W -0
R /W -0
R /W -0
R /W -0
R /W -0
R /W -0
G
IE
P E IE
T 0IE
IN T E
R B IE
R /W -0
T 0IF
R /W -0
IN T F
b
it7
R /W -x
R B IF
b it0

R = R eadable bit W = W rita ble b it U = U n im p lem e nte d b it, re a d a s ‘0’

- n=Va lue at P O R re set

b

it 7:

G IE : G loba l Interrupt E na ble b it

 
 

1

= E na ble s a ll un-m a s ke d interrupts

0

= D isa ble s a ll interrupts

b

it 6:

P E IE : P eriphera l Interrupt E na ble b it

 
 

1

= E na ble s a ll un-m a s ke d periphera l interrupts

0

= D isa ble s a ll periphera l interrupts

b

it 5:

T 0IE : T M R 0 O vero w Interrupt E na ble b it

 
 

1

= E na ble s the T M R 0 interrupt

0

= D isa ble s the T M R 0 interrupt

b

it 4:

IN T E : R B 0/IN T E x te rn a l In te rru p t E n a b le b it

 
 

1

= E n a b le s th e R B 0/IN T e x te rn a l in te rru p t

0

= D is a b le s th e R B 0/IN T e x te rn a l in te rru p t

b

it 3:

R B IE : R B P ort C ha nge Interrupt E na ble b it

 
 

1

= E na ble s the R B port c ha nge interrupt

0

= D isa ble s the R B port c ha nge interrupt

b

it 2:

T 0IF : T M R 0 O vero w Interrupt F la g b it

 
 

1

= T M R 0 re g ister h a s o vero w e d (m u st b e c le are d in

s o ftw are )

0

= T M R 0 re g ister d id not overo w

b

it 1:

IN T F : R B 0/IN T E x te rn a l In te rru p t F la g b it

 
 

1

= T h e R B 0/IN T e x te rn a l in te rru p t o c c urre d (m u s t b e c le a re d in s o ftw a re )

0

= T h e R B 0/IN T e x te rn a l in te rru p t d id n o t o c c ur

b

it 0:

R B IF : R B P ort C ha nge Interrupt F la g b it

 
 

1

= A t le a st o n e o f th e R B 7:R B 4 p in s c h a n g e d sta te (m u st b e c le are d in s o ftw are )

0

= N one of the R B 7:R B 4 p in s ha ve c ha nge d state

Debemos hacer algunos comentarios sobre la gestión de los bits de este registro.

En primer lugar, cada indicador de interrupción individual (RBIF, INTF, etc.) se debe poner a 0 mediante software en el programa de tratamiento de la interrupción correspondiente. Como hemos visto en la figura 1.3.2, en el PIC16F87X sólo hay disponible un vector de interrupción situado en la dirección 0004. A dicho programa de interrupción le corresponde comprobar estos bits para saber cuál es el origen de la interrupción. Cuando llega una interrupción, el PIC pone automáticamente a 0 el bit GIE, de forma que no se perturbe el tratamiento de la interrupción en curso por otras interrupciones eventuales. Este bits se pone automáticamente a 1 al finalizar el programa de interrupción cuando se ejecuta la instrucción RETFIE. Por último, los bits de indicación de interrupción permanecen funcionales incluso cuando las interrupciones correspondientes no se autorizan. Debido a la incorporación de una cantidad importante de periféricos dentro de el PIC que se está analizando, es necesario contar con mas registros dedicados a configurar las interrupciones, estos son PIR1, PIE1, PIR2 y PIE2.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 15 de 5 8

Registro PIE1 - Dirección 0x8C

Registro PIE1 - Dirección 0x8C R /W -0 R /W -0 R /W -0 R /W

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

P S P IE (1)

A D IE

R C IE

T X IE

S S P IE

C C P 1IE

T M R 2IE

T M R 1IE

b it7

bit 7:

P S P IE (1) : P a ra lle l S

la v e P ort R e a d/W rite In te rru p t E n a b le b it

1

= E n a b le s th e P S P re a d/w rite in te rru p t

0

= D is a b le s th e P S P re a d/w rite in te rru p t

b it0

R = R eadable bit W = W rita ble b it U = U n im p lem e nte d b it, re a d a s ‘0’

- n=Va lue at P O R re set

b

it 6:

A D IE : A /D C o n v e rte r In te rru p t E n a b le b it

 

1

= E n a b le s th e A /D c o n v e rte r in te rru p t

0

= D is a b le s th e A /D c o n v e rte r in te rru p t

b

it 5:

R C IE : U

S A R T R e c e ive Interrupt E na ble b it

 

1

= E na ble s the U S A R T re c e ive interrupt

0

= D isa ble s the U S A R T re c e ive interrupt

b

it 4:

T X IE : U S A R T Tra n sm it Interrupt E na ble b it

 

1

= E na ble s the U S A R T tra n sm it interrupt

0

= D isa ble s the U S A R T tra n sm it interrupt

b

it 3: S S P IE : S y n c hronou s S eria l P ort Interrupt E na ble b it

 

1

= E na ble s the S S P interrupt

0

= D isa ble s the S S P interrupt

b

it 2:

C C P 1IE : C C P 1 Interrupt E na ble b it

 

1

= E na ble s the C C P 1 interrupt

0

= D isa ble s the C C P 1 interrupt

b

it 1:

T M R 2IE : T M R 2 to P R 2 M atc h Interrupt E na ble b it

 

1

= E na ble s the

T M R 2 to P R 2 m atc h interrupt

0

= D isa ble s the T M R 2 to P R 2 m atc h interrupt

b

it 0:

T M R 1IE : T M R 1 O vero

w Interrupt E na ble b it

 

1

= E na ble s the

T M R 1 overo w interrupt

0

= D isa ble s the T M R 1 overo w interrupt

N

o te 1: P S P IE is re s e rv e d o n 28-p in d e v ic e s , a lw a y s m a in ta in th is b it c le a r.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 16 de 5 8

Registro PIR1 - Dirección 0x0C

Registro PIR1 - Dirección 0x0C R /W -0 R /W -0 R -0 R -0 R

R /W -0

R /W -0

R -0

R -0

R /W -0

R /W -0

R /W -0

R /W -0

P S P IF (1)

A D IF

R C IF

T X IF

S S P IF

C C P 1IF

T M R 2IF

T M R 1IF

b it7

bit 7:

P S P IF (1) : P a ra lle l S la v e P ort R e a d/W rite In te rru p t F la g b it

b it0

R = R eadable bit W = W rita ble b it

- n=Va lue at P O R re set

1

= A re a d or a w rite o p era tio n h a s ta ke n p la c e (m u st b e c le are d in s o ftw are )

0

= N o re a d or w rite ha s o c c urre d

b

it 6:

A D IF : A /D C o n v e rte r In te rru p t F la g b it

 

1

= A n A /D c o n v e rs io n c o m p le te d

0

= T h e A /D c o n v e rs io n is n o t c o m p le te

b

it 5:

R C IF : U

S A R T

R e c e ive Interrupt F la g b it

 

1

= T he U S A R T

re c e ive

buffer is fu ll

0

= T he U S A R T

re c e ive

buffer is em pty

b

it 4:

T X IF : U S A R T Tra n sm it Interrupt F la g b it

 

1

= T he U S A R T tra n sm it buffer is em pty

0

= T he

U S A R T

tra n sm it buffer is fu ll

b

it 7:

S S P IF : S y n c hro n o u s S eria l P ort (S S P ) Interru pt F la g

 

1

=T he S S P interrupt c ond ition ha s o c c urre d, a nd m u st be

c le are d in softw are be fore return ing from the

interrupt serv ic e routine. T he c ond ition s that w ill set th is b it are :

SPI

 

A

tra n s m is s io n /re c e p tio n

h a s ta k e n

p la c e .

I

2 C S la v e

 

A

tra n s m is s io n /re c e p tio n

h a s ta k e n

p la c e .

I

2 C M a ster

 

A

tra n s m is s io n /re c e p tio n

h a s ta k e n

p la c e .

T

he

in itiate d

start c ond ition

w a s c om p lete d

by the S S P m odu le.

T

he

in itiate d

stop c ond ition w a s c om p lete d by the S S P m odu le.

T

he

in itiate d

re start c ond ition w a s c om p lete d by the S S P m odu le.

T

he

in itiate d

a cknow le dge c ond ition w a s c om p lete d by the S S P m odu le.

A

start c o n d itio n

o c c urre d

w h ile th e S S P m o d u le

w a s id le (M u ltim a ster s y ste m ).

A

sto p c o n d itio n o c c urre d w h ile th e S S P m o d u le w a s id le (M u ltim a ster s y ste m ).

0

= N o S S P interrupt c ond ition ha s o c c urre d.

b

it 2:

C C P 1IF : C C P 1 Interrupt F la g b it

 

C

a pture M ode

1

= A T M R 1 re g ister c a pture o c c urre d (m u st b e c le are d

in s o ftw are )

0

= N o T M R 1 re g ister c a pture o c c urre d

C

om pare M ode

 

1

= A T M R 1 re g ister c om p are m a tc h o c c urre d (m u st b e c le are d in s o ftw are )

0

= N o T M R 1 re g ister c om pare m atc h o c c urre d

PW M M ode

 

U

nu se d in th is m ode

 

b

it 1:

T M R 2IF : T M R 2 to P R 2 M atc h Interrupt F la g b it

 

1

= T M R 2 to P R 2 m a tc h o c c urre d (m u st b e c le are d in s o ftw are )

0

= N o T M R 2 to P R 2 m atc h o c c urre d

b

it 0:

T M R 1IF : T M R 1 O vero w Interrupt F la g b it

 

1

= T M R 1 re g ister o vero w e d (m u st b e

c le are d in s o ftw are )

0

= T M R 1 re g ister d id not overo w

N

o te 1: P S P IF is re s e rv e d o n 28-p in d e v ic e s , a lw a y s m a in ta in th is b it c le a r.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 17 de 5 8

Registro PIE2 - Dirección 0x8D

Registro PIE2 - Dirección 0x8D   U -0 R /W -0 U -0 R /W -0
 

U

-0

R /W -0

U -0

R /W -0

R /W -0

U -0

U -0

R /W -0

 
   

 

(1)

 

E

E IE

BC LIE

C

C P 2IE

   

R

= R eadable bit

 

b

it7

b it0

W

= W rita ble b it

 

U

= U n im p lem e nte d b it, re a d a s ‘0’

-

n=Va lue at P O R re set

 

b

it 7:

U n im p l e m e n te d : R e a d a s '0'

 

b

it 6:

R e s erv e d : A lw ay s m a inta in th is b it c le ar

 

b

it 5:

U n im p l e m e n te d : R e a d a s '0'

 

b

it 4:

E E IE : E E P R O M W rite O peration Interrupt E na ble

 
 

1

= E na ble E E W rite Interrupt

 

0

= D isa ble E E W rite Interrupt

 

b

it 3:

B C L IE : B u s C o llis ion Interrupt E na ble

 
 

1

= E na ble B u s C o llis ion Interrupt

0

= D isa ble B u s C o llis ion Interrupt

 

b

it 2-1: U n im p l e m e n

te d : R e a d a s '0'

 

b

it 0:

C C P 2IE : C C P 2 Interrupt E na ble b it

 
 

1

= E na ble s the C C P 2 interrupt

0

= D isa ble s the C C P 2 interrupt

 

N

o te 1: P IE 2<6> is re s e rv e d , a lw a y s m a in ta in th is b it c le a r.

 

Registro PIR2 - Dirección 0x0D

 
 

U

-0

R /W -0

U -0

R /W -0

R /W -0

U -0

U -0

R /W -0

 
   

 

(1)

 

E

E IF

BC LIF

C

C P 2IF

   

R

= R eadable bit

 

b

it7

b it0

 

W

= W rita ble b it

 

U

= U n im p lem e nte d b it, re a d a s ‘0’

-

n=Va lue at P O R re set

 

b

it 7:

U n im p l e m e n te d : R e a d a s '0'

 

b

it 6:

R e s erv e d : A lw ay s m a inta in th is b it c le ar

 

b

it 5:

U n im p l e m e n te d : R e a d a s '0'

 

b

it 4:

E E IF : E E P R O M W rite O peration Interrupt F la g b it

 
 

1

= T h e w rite o p era tio n

c om p le te d (m u st b e c le are d in s o ftw are )

 

0

= T he w rite operation

is not c om p lete or ha s not be e n starte d

 

b

it 3:

B C L IF : B u s C o llis ion Interrupt F la g

 
 

1

=A bu s c o llis io n h a s o c c urre d in th e S S P, w h e n c o n g ure d f or I 2 C m a ster m ode

 

0

=N o bus collision ha s oc curred

 
 

b

it 2-1: U n im p l e m e n te d : R e a d a s '0'

 

b

it 0:

C C P 2IF : C C P 2 Interrupt F la g b it

 
 

C

a pture M ode

 

1

= A T M R 1 re g ister c a pture o c c urre d (m u st b e c le are d

in s o ftw are )

 

0

= N o T M R 1 re g ister c a pture o c c urre d

 

C

om pare M ode

 

1

= A T M R 1 re g ister c om p are m a tc h o c c urre d (m u st b e c le are d in s o ftw are )

 

0

= N o T M R 1 re g ister c om pare m atc h o c c urre d

 

PW M M ode

 

U

nused

 

N o te 1: P IR 2<6> is re s e rv e d , a lw a y s m a in ta in

th is b it c le a r.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 18 de 5 8

LOS PUERTOS PARALELOS

LOS PUERTOS PARALELO S Los PIC16F874/7 disponen de cinco puertos paralelo, denominados puerto A hasta puerto

Los PIC16F874/7 disponen de cinco puertos paralelo, denominados puerto A hasta puerto E. Las líneas de estos puertos se pueden programar individualmente como entradas o como salidas. No obstante, con el fin de que los encapsulados del PIC 16F87X no tengan excesivos pines, y teniendo en cuenta la cantidad de recursos internos disponibles, la mayoría de las líneas de estos puertos se comparten con las líneas de entrada/salida de otros recursos, punto del que ya se mensionó anteriormente. Vamos a ver que al compartir líneas a veces influye en la estructura de los correspondientes puertos, y puede imponer algunas restricciones de utilización.

EL PUERTO A

El puerto "A" dispone de seis bits. Las líneas representan el esquema interno de la siguiente figura. Todas ellas están provistas como salidas con un buffer CMOS normal, y como entradas aceptan niveles TTL. Como puede comprobar en esta figura, la entrada y la salida pasan por un latch.

D ata bus D Q V D D W R Port C K Q P
D
ata
bus
D Q
V D D
W
R
Port
C K
Q
P
D
ata L atc h
N
I/O p in (1)
D
Q
W R
T
R IS
V S S
C
K
Q
A na log
input
T R IS L atc h
mode
R D T R IS
TTL
input
buffer
Q
D
E N
RD PORT
To A /D C o n v e rte r

N o te 1:

I/O p in s h a v e pro te c tio n d io d e s to V D D and V S S .

RA0, RA1, RA2, RA3 y RA5

D ata bus D Q W R PORT C K Q I/O p in (1
D ata
bus
D
Q
W R
PORT C
K
Q
I/O p in (1 )
N
D ata L atc h
D
Q
Vss
W R
T
R IS
C
K
Q
T R IS L atc h
S c hm itt
Trigger
input
buffer
R D T R IS
Q
D
EN
E N
RD PORT
T M R 0 c lock input

N o te 1: I/O p in h a s pro te c tio n d io d e s to V S S on ly.

RA4

En el PIC16F87X, lasinco líneas del primer gráfico pueden ser usadas como entradas del conversor analógico/digital integrado. Cuando este conversor se activa, estas líneas pasan a ser entradas analógicas. Si las intenta leer como líneas del puerto A, las verá como si estuvieran todas ellas a 0. Como se ve en la figura de la derecha la línea RA4 tiene una estructura algo diferente. En efecto, en este caso, la salida es de tipo drenador abierto (el equivalente en MOS al clásico colector abierto), y la entrada está provista de un trigger Schmitt. Es común con la entrada externa del temporizador 0.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 19 de 5 8

EL PUERTO B

EL PUERTO B El puerto B es un puerto bidireccional de 8 bits completo, en le

El puerto B es un puerto bidireccional de 8 bits completo, en le que sólo una línea se comparte con otro recurso interno. Las líneas RB0-RB3 adoptan la estructura interna que puede ver en la figura de la izquierda, mientras que las líneas RB4-RB7 tienen la estructura de la figura derecha. El motivo de esto se encuentra en el hecho de que es posible programar una interrupción durante un cambio de estado de una cualquiera de las líneas RB0-RB3. Si se utiliza esta posibilidad, el simple hecho de que cualquiera de las líneas cambie de estado genera una interrupción (ver la descripción anterior del registro INTCON). Tenga presente que sólo las líneas programadas como entradas son susceptibles de ser monitorizadas mediante este procedimiento.

V D D R B P U (2) weak P pu ll-up D ata L
V D D
R B
P U (2)
weak
P pu ll-up
D ata L atc h
D ata bu s
D
Q
I/O
W
R Port
C
K
p in (1)
T
R
IS L atc h
D
Q
TTL
Input
W
R T R IS
C
K
B uffer
R
D
T R IS
Q
D
R
D Port
E N
R B
0/IN T
S c hm itt Trigger
R D Port
B
uffer

N

o te 1: I/O p in s h a v e d io d e pro te c tio n to V D D and V S S .

2: To e n a b le

w e a k p u ll-u p s, s e t th e a p pro pria te T R IS b it(s )

a nd c le ar the R B P U b it (O P T IO N _R E G <7>).

V D D R B P U (2) P weak pu ll-up D ata L
V D D
R
B P U (2)
P weak
pu ll-up
D ata L atc h
D ata bu s
D Q
I/O
W
R Port
C
K
p in (1)
T R
IS L atc h
D
Q
W
R T R IS
TTL
C
K
Input
B uffer
S T
B uffer
R
D
T R IS
L atc h
Q
D
R
D
Port
E N
Q 1
S et R BIF
Q
D
From other
R B 7:R B 4 pins
R D Port
E N
Q 3
R B 7:R B 6 in seria l program m ing m ode

N o te 1: I/O p in s h a v e d io d e pro te c tio n to V D D and V S S .

2: To e n a b le

w e a k p u ll-u p s, s e t th e a p pro pria te T R IS b it(s )

a nd c le ar th e R B P U b it (O P T IO N _R E G <7>).

Como puede comprobar en ambas figuras, cada una de las líneas del puerto B dispone de una resistencia de pull-up de alto valor conectada a la alimentación. Esta resistencia de pull-up puede activarse o no gracias al bit RBPU del registro OPTION (ver la descripción anterior de este registro al hablar del temporizador 0, al que afecta, principalmente). La activación o no de esta resistencia de pull-up es común a todas las líneas del puerto B. Además, ésta se desactiva automáticamente durante un reset, así como las líneas que estén configuradas como salida. El sentido de trabajo de todas las líneas de este puerto se controla mediante el registro TRISB, en el que un bit a 0 activa a la línea correspondiente como salida, y un bit a 1 la activa como entrada. Evidentemente, después de un reset, todos los bits del registro TRISB se ponen a 1.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 20 de 5 8

EL PUERTO C

EL PUERTO C El puerto C es un puerto bidireccional de 8 bits completo, en el

El puerto C es un puerto bidireccional de 8 bits completo, en el que todas las líneas se comparten con los demás recursos internos, según la repartición vista en la descripción de las señales disponibles en el circuito. A pesar de esto, cada una de las líneas de este puerto adoptan la misma estructura, la cual se puede ver en la siguiente figura. se dispone de un buffer CMOS clásico como salida, y de un trigger Schmitt como entrada.

P O R T /P E R IP H E R A L S e
P O R T /P E R IP H E R A L S e le c t(2 )
P
eriphera l D ata O ut
0 V D D
D
ata bu s
D Q
W R
1 P
PORT
C K
Q
D ata L atc h
D
Q
W R
I/O
p in (1)
T R IS
C
K
Q
N
T
R IS L atc h
V S S
S c hm itt
R
D T R IS
Trigger
Periphera l
O E (3)
Q
D
E N
R D
PORT
Periphera l input
N o te 1:
2:
3:
I/O p in s h a v e d io d e pro te c tio n to V D D and V S S .
P ort/P e rip h e ra l s e le c t s ig n a l s e le c ts b e tw e e n p ort
data a nd periphera l output.
P erip h era l O E (o utp ut e n a ble ) is o n ly a c tiva te d if
periphera l se le ct is a ctive.

RC0-RC2 / RC5-RC7

P O R T /P E R IP H E R A L S e
P O R T /P E R IP H E R A L S e le c t(2 )
P
eriphera l D ata O ut
V D D
0
D
ata bu s
D
Q
P
W R
1
PORT C
K
Q
D ata L atc h
D
Q
W R
I/O
p in (1)
T R IS
C
K
Q
N
T R IS L atc h
V S S
S c hm itt
R
D T R IS
Trigger
Periphera l
O E (3)
Q
D
S
c hm itt
Trigger
E N
w
ith
R D
SMBus
PORT
leve ls
0
S S P l input
1
CKE

S S P S TA T <6>

N o te 1:

I/O p in s h a v e d io d e pro te c tio n to V D D and V S S .

2:

P ort/P e rip h e ra l s e le c t s ig n a l s e le c ts b e tw e e n p ort

3:

data a nd periphera l output. P erip h era l O E (o utp ut e n a ble ) is o n ly a c tiva te d if periphera l se le ct is a ctive.

RC3-RC4

El sentido de trabajo de cada una de las líneas de este puerto es controlado por el registro TRISC, en el que un bit a 0, activa a la línea correspondiente como salida, y un bit a 1 la activa como entrada. Evidentemente, después de un reset, todos los bits del registro TRISC se ponen a 1.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 21 de 5 8

EL PUERTO D

EL PUERTO D El puerto D es un puerto bidireccional de 8 bits completo, que no

El puerto D es un puerto bidireccional de 8 bits completo, que no comparte sus líneas de entrada/salida con ningún otro recurso. En la siguiente figura puede ver su esquema interno, en el que observamos un buffer TTL como salida, y un trigger Schimtt como entrada.

D ata

bus D Q W R I/O p in (1) PORT C K D ata L
bus
D
Q
W
R
I/O p in (1)
PORT
C
K
D ata L atc h
D
Q
W
R
T
R IS
S
c
hm itt
C
K
Trigger
input
T R IS L atc h
buffer
R D T R IS
Q
D
E
N
E N
RD PORT

N

o te 1: I/O p in s h a v e pro te c tio n d io d e s to V D D and V S S .

Este puerto también dispone de un modo de funcionamiento especial, denominado modo esclavo paralelo, que se muestra en la siguiente figura, y que utiliza tres líneas del puertoE.

D ata bu s D Q W R RDx PORT C K pin TTL Q
D ata bu s
D
Q
W
R
RDx
PORT
C
K
pin
TTL
Q
D
R D
E N
E N
PORT
O ne bit of P O R T D
S
et interrupt a g
P
S P IF (P IR 1<7>)
R
ead
TTL
R
D
C
h ip S e le ct
TTL
C
S
W rite
TTL
W
R
N
o te : I/O p in h a s pro te c tio n d io d e s to V D D and V S S .

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 22 de 5 8

PRINCIPIO DE UTILIZACION DEL PUERTO D EN MODO ESCLAVO PARALELO. En este modo, los PIC16F87X

PRINCIPIO DE UTILIZACION DEL PUERTO D EN MODO ESCLAVO PARALELO.

En este modo, los PIC16F87X se deben considerar como circuitos de interfaz clásicos para un microprocesador de 8 bits. Las líneas del puerto D se convierten en las líneas del bus de datos de este micro, mientras que las tres líneas de control clásicas: de lectura, de escritura y de activación del circuito (chip select) están disponibles en el puerto E. Más adelante, en el aparato dedicado al registro TRISE, veremos el principio de funcionamiento de este modo mediante los bits de control contenidos en este registro. Cuando no funciona en modo esclavo paralelo, el puerto D se puede utilizar normalmente. El sentido de trabajo de cada una de las líneas de este puerto es controlado por el registro TRISD, en el que un bit a 0 activa a la línea correspondiente como salida, y un bit a 1 la activa como entrada. Evidentemente, después de un reset, todos los bits del registro TRISD se ponen a 1.

EL PUERTO E

El puerto E no dispone más que de tres líneas bidireccionales, que respetan el esquema de la siguiente figura. Suministran un buffer CMOS como salida y trigger Schmitt como entrada.

D ata

bus D Q W R I/O p in (1) PORT C K D ata L
bus
D
Q
W
R
I/O p in (1)
PORT
C
K
D ata L atc h
D
Q
W
R
T
R IS
S
c hm itt
C
K
Trigger
input
T R IS L atc h
buffer
R D T R IS
Q
D
E
N
E N
RD PORT

N o te 1: I/O p in s h a v e pro te c tio n d io d e s to V D D and V S S .

Estas líneas se pueden utilizar normalmente como las líneas de cualquier puerto paralelo, o pueden servir de señales de control cuando el puerto "D" está activado en modo esclavo paralelo. El registro de control para el sentido de funcionamiento del puerto E, TRISE, adopta una estructura especial, como se ve a continuación

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 23 de 5 8

Registro TRISE - Dirección 0x89

Registro TRISE - Dirección 0x89 R -0 R -0 R /W -0 R /W -0 U

R

-0

R -0

R /W -0

R /W -0

U -0

R /W -1

R /W -1

R /W -1

IBF

O BF

IBO V

P S P M O D E

b it2

b it1

b it0

R

= R e a da ble b it

b

it7

b it0

W

= W rita ble b it

 

U

= U n im p lem e nte d b it,

re

a d a s ‘0’

-

n=Va lue at P O R re set

b

it 7 :

IB F

: Input B uffer F u ll S tatu s b it

 
 

1

= A w ord ha s be e n re c e ive d a nd is w a iting to be re a d by the C P U

 

0

= N o w ord ha s been re ce ived

 

b

it 6:

O B F : O utput B uffer F u ll S tatu s b it

 

1

= T he

output buffer still ho lds a prev iou s ly w ritte n w ord

 

0

= T he

output buffer ha s be e n re a d

 

b

it 5:

IB O V : In p ut B u ffer O vero w D e te c t b it (in m icro pro c e s s or m o d e )

 

1

= A w rite o c c urre d w h e n a pre v io u s ly in p ut w ord h a s n ot b e e n re a d (m u st b e c le are d in s o ftw are )

0

= N o overo w oc curred

bit 4:

P S P M O D E : P ara lle l S lave Port M ode S e le ct bit

1

= P ara lle l s lave port m ode

0

= G e n e ra l p urp o s e I/O m o d e

b

it 3:

U n im p l e m e n te d : R e a d a s '0'

 
 

P O R T E D ata D irection B its

b

it 2:

B it2: D ire c tio n

C o n tro l b it for

p in R E 2/C S /A N 7

 

1

= Input

0

= O utput

b

it 1:

B it1: D ire c tio n

C o n tro l b it for

p in R E 1/W R /A N 6

 

1

= Input

0

= O utput

b

it 0:

B it0: D ire c tio n

C o n tro l b it for

p in R E 0/R D /A N 5

1

0

= Input

= O utput

Estas funciones y asignaciones se corresponden perfectamente con lo que habitualmente se encuentra en cualquier circuito de interfaz para microprocesadores de 8 bits. Para poder funcionar en modo esclavo paralelo, y además de la puesta a 1 del bit PSPMODE, las líneas deben activarse como entradas mediante la escritura de un 1 en los bits 0 a 2 del registro TRISE. En el modo esclavo, los bits del registro TRISD no se utilizan, ya que el sentido de trabajo del puerto D está bajo el control del microprocesador externo a través de y . Observe también que, como hemos visto en la descripción del registro PIR1, es posible generar una interrupción durante la lectura o escritura en el puerto D si está configurado en este modo.

LOS TEMPORIZADORES

Los PIC16F87X contienen tres temporizadores distintos, que disponen de diversas posibilidades de funcionamiento, las cuales vamos a describir a continuación. Cada temporizador puede generar una interrupción, como hemos visto en la presentación de los registros INTCON y PIR1. Los temporizadores 1 y 2 pueden además asociarse a los módulos funcionales denominados y PWM, que permiten realizar la captura de datos como entrada, la comparación de datos como salida y la modulación de impulsos en duración. Todas estas características son comparables a las que se encuentren tradicionalmente en los temporizadores de mayores prestaciones de los micros de 8 bits.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 24 de 5 8

EL TEMPORIZADOR 0

EL TEMPORIZADOR 0 El temporizador 0 es el más sencillo de los tres y como se

El temporizador 0 es el más sencillo de los tres y como se vió anteriormente está formado por el conjunto TMR0 y el registro OPTION.

EL TEMPORIZADOR 1

El temporizador1 está constituido principalmente por un registro de 16 bits dividido en dos registros de 8 bits, TMR1L y TMR1H, los cuales pueden ser escritos y leídos. El contenido de este registro varía de 0000 hasta FFFF, y vuelve a 0000 después de su desbordamiento, generando una interrupción en ese momento, si ésta se autoriza. El esquema de la siguiente figura permite comprender los diversos modos de direccionamiento de este temporizador.

S et ag bit T M R 1IF on O vero w S ynchron ized
S
et ag bit
T
M R 1IF on
O
vero w
S ynchron ized
0
TMR1
c lock input
TM R 1H
TM R 1L
1
TM R 1O N
o n/o ff
T1S Y N C
T1O S C
R
C 0/T 1O S O /T 1C K I
1
S ynchron ize
P re sca ler
T1O S C E N
1, 2, 4, 8
F
o s c /4
det
E
nable
Interna l
0
R
C 1/T 1O S I
O
s c illa tor(1)
C
lock
2
S LE E P input
T 1C K P S 1:T 1C
K P S 0

TM R 1C S

N ote 1: W he n the T 1O S C E N b it is c le are d, the inverter a nd fe e dba ck re s istor are turne d off. T h is e lim inate s pow er dra in.

ESQUEMA DEL TEMPORIZADOR 1.

En modo temporizador, el registro se incrementa en una unidad con cada ciclo del reloj de instrucción (es decir, en cada ciclo de reloj dividido por cuatro). En modo contador, este incremento tiene lugar en cada periodo de la señal aplicada en el pin RC0, o en cada periodo generado por el oscilador que se puede implementar conectando un cristal de cuarzo entre los pines RC0 y RC1. En todos los casos, la señal de reloj del temporizador pasa por un prescaler de tasa programable, que puede sincronizar después con el reloj interno. Evidentemente, esta sincronización es perfectamente inútil cuando se utiliza esa fuente como reloj. En modo externo (o reloj suministrado por el oscilador del temporizador 1) puede seleccionar o no esta sincronización. Si se valida la sincronización, es posible utilizar el temporizador 1 conjuntamente con el módulo CCP que se presenta más adelante. Este modo hace entonces una puesta a 0 del temporizador a partir de la ocurrencia del evento (comprobación o captura) para el que está programado. Sin embargo, el temporizador 1 deja de funcionar en modo SLEEP, ya que la sincronización no puede tener lugar debido a la parada del reloj interno en este modo. Si no se valida la sincronización, no es posible el funcionamiento con los módulos CCP, pero el temporizador continúa contando incluso en modo SLEEP, y puede por tanto "despertar" al microcontrolador y hacerle salir automáticamente de este modo cuando se desborda, si ha autorizado la generación de una interrupción en esta situación.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 25 de 5 8

Los diferentes modos de funcionamiento de este temporizador son controlados por el registro T1CON, en

Los diferentes modos de funcionamiento de este temporizador son controlados por el registro T1CON, en el que cada bit tiene un significado propio, que es el siguiente:

Registro T1CON - Dirección 0x10

U -0

U -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

T 1C K P S 1

T 1C K P S 0

T 1O S C E N

T 1S Y N C

T M R 1C S

T M R 1O N

b it7

b it0

R = R eadable bit

W = W rita ble b it

U = U n im p lem e nte d b it,

re a d a s ‘0’

- n=Va lue at P O R re set

b it 7-6: U n im p l e m e n te d : R e a d a s '0'

b it 5-4: T 1C K P S 1:T 1C K P S 0: T im er1 Input C lo ck P re s c a le S e le ct b its

11

= 1:8 P re sca le va lue

10

= 1:4 P re sca le va lue

01

= 1:2 P re sca le va lue

00

= 1:1 P re sca le va lue

b it 3:

T 1O S C E N : T im er1 O s c illator E na ble C ontro l b it

1

= O s c illator is e na ble d

0

= O s c illator is shut off

N

ote : T he os c illator inverter a nd fe e dba ck re s istor are turne d off to e lim inate pow er dra in

bit 2:

T 1S Y N C : T im er1 E xterna l C lo ck Input S y n c hron ization C ontro l b it

TM R 1C S =1

1

= D o not s y n c hron ize externa l c lo ck input

0

= S y n c hron ize externa l c lo ck input

TM R 1C S =0

T

h is b it is ignore d. T im er1 u se s the interna l c lo ck w he n T M R 1C S = 0.

bit 1:

T M R 1C S : T im er1 C lock S ource S e le ct bit

1

= E x te rn a l c lo c k fro m p in R C 0/T 1O S O /T 1C K I (o n th e ris in g e d g e )

0

= Intern a l c lo c k (F OSC /4 )

bit 0:

T M R 1O N : T im er1 O n bit

1

= E nable s T im er1

0

= S tops T im er1

El oscilador que se sitúa entre los pines RC0 y RC1, se realiza mediante la conexión de un cuarzo entre dichos pines. La frecuencia máxima de funcionamiento prevista es de 200 kHz, y este circuito está optimizado para un cristal de cuarzo a 32 kHz.

EL TEMPORIZADOR 2

Como muestra el esquema de la siguiente figura este temporizador está formado por un registro de 8 bits denominado TMR2, asociado a un predivisor y a un postdivisor, así como a un registro de periodo.

S ets a g bit T M R 2IF TMR2 o utp ut (1) R
S ets a g
bit T M R 2IF
TMR2
o utp ut (1)
R eset
T M R 2 reg
P re sca ler
1:1, 1:4, 1:16
F o s c /4
P osts c a ler
2
C om parator
1:1
to
1:16
E Q
4 P R 2 reg
N ote 1: T M R 2 re g ister output c a n be softw are se le cte d
by the S S P M odu le a s a ba ud c lo ck.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 26 de 5 8

El contenido de este registro se inicia en el valor 00 y aumenta con cada

El contenido de este registro se inicia en el valor 00 y aumenta con cada impulso del reloj de instrucción, después de la eventual división realizada por el prescaler. Cuando el contenido se hace igual que el registro de periodo, se pone a 0 y se aplica una señal al postdivisor. La salida de éste puede generar entonces una interrupción, si ha sido autorizada por el registro PIE1. Los contenidos del prescaler y el postdivisor se ponen automáticamente a 0 durante una escritura en el registro TMR2 o en el registro de control T2CON, así como en un reset, sea cual sea su origen.

Registro T2CON - Dirección 0x12

U -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

T O U T P S 3

T O U T P S 2

T O U T P S 1

T O U T P S 0

T M R 2O N

T 2C K P S 1

T 2C K P S 0

b it7

b it0

R = R eadable bit

W = W rita ble b it

U = U n im p lem e nte d b it,

re a d a s ‘0’

- n=Va lue at P O R re set

b

it 7:

U n im p l e m e n te d : R e a d a s '0'

b

it 6-3:

T O U T P S 3:T O U T P S 0: T im er2 O utput P osts c a le S e le ct b its

bit 2:

b it 1-0:

0000

= 1:1 P osts c a le

0001

= 1:2 P osts c a le

1111

= 1:16 P osts c a le

T M R 2O N : T im er2 O n bit

1

=T im er2 is on

0

=T im er2 is off

T 2C K P S 1:T 2C K P S 0: T im er2 C lo ck P re s c a le S e le ct b its

00 = P re sca ler is 1

01 = P re sca ler is 4

1x = P re sca ler is 16

LOS MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHO DE PULSOS

Los PIC16F87X disponen de dos módulos de captura, comparación y generación de modulación ancho de pulsos (PWM), denominados CCP1 y CCP2. Estos dos módulos funcionan de la misma forma; excepto en el modo de arranque especial. Por tanto, los vamos a presentar simultáneamente, y observaremos en qué se distinguen cuando veamos dicho modo. Cada módulo está formado por un registro de 16 bits, accesible tanto para escritura como para lectura, bajo la forma de dos registros de 8 bits sucesivos, CCPxL para los bits de menor peso y CCPxH para los bits de mayor peso.

EL MODO CAPTURA

En este modo, el registro CCPx captura el contenido del temporizador 1 cuando en el pin Rcx/CCPx se produce una de las siguientes condiciones:

· Un flanco de bajada.

· Un flanco de subida.

· Una captura cada cuatro flancos de subida.

· Una captura cada dieciséis flancos de subida.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 27 de 58

La elección de estos eventos se realiza con los bits contenidos en el registro CCPxCON,

La elección de estos eventos se realiza con los bits contenidos en el registro CCPxCON, que veremos a continuación. Cuando tiene lugar una captura, se puede generar una interrupción, siempre que haya sido autorizada por el bit apropiado de los registros PIE1 o PIE2, vistos anteriormente. Si se produce otra captura antes de que el contenido de CCPx se haya leído, este contenido se sustituye por el nuevo. Observe también que, para que este sistema funcione correctamente, evidentemente el pin Rcx/CCPx debe estar programado como entrada. Si está configurado como salida y se produce una escritura en el puerto C, puede generarse una captura falsa. La siguiente figura muestra de forma extremadamente visual el funcionamiento de este modo de captura. Observe la presencia de un prescaler, que permite la captura de cada un flanco, cada cuatro flancos o cada dieciséis flancos. Su contenido se pone 0 durante un reset, así como durante cualquier parada del módulo CCP. Preste atención al hecho de que, si varía el valor del prescaler con el fin de definir otras condiciones de captura, se puede generar una falsa interrupción, por lo que es aconsejable detener el módulo CCP antes de cambiar las condiciones de captura, para evitar este fenómeno.

S et ag bit C C P 1IF (P IR 1<2>) P re sca ler
S et ag bit C C P 1IF
(P IR 1<2>)
P re sca ler
∏ 1, 4, 16
R C 2/C C P 1
P in
C C PR 1H
C C PR 1L
C
a pture
and
e dge dete ct
E
nable
TM R 1H
TM R 1L
C C P 1C O N <3:0>

Q ’s

ESQUEMA DE UN MODULO CCP EN MODO CAPTURA.

EL MODO COMPARACION

En este modo, el contenido del registro CCP se compara permanente con el contenido del temporizador 1. Cuando se produce una igualdad, cualquiera de los fenómenos siguientes se puede producir:

· Pone un nivel alto en el pin RCx/CCPx.

· Pone un nivel bajo en el pin RCx/CCPx.

· Ninguna variación en el pin, pero se genera una interrupción, por supuesto si esta está habilitada.

Evidentemente, en los dos primeros casos, el pin correspondiente del puerto C debe programarse como salida, poniendo a 0 el bit correspondiente del registro TRISC. Existe un modo suplementario que se denomina modo de arranque especial. En este caso, una comparación correcta da lugar a los eventos siguientes:

· Para CCP1: el temporizador 1 se pone a 0, lo que permite utilizar el registro CCP1 como un registro de periodo de 16 bits para el temporizador 1.

· Para CCP2: el temporizador 1 se pone a 0, y se desencadena una conversión analógico

/ digital si, por supuesto, la función correspondiente ha sido autorizada por el convertidor.

Esto permite llevar a cabo muy fácilmente conversiones a intervalos regulares sin que sea necesario utilizar la unidad central.

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 28 de 58

La siguiente figura muestra de forma muy clara el principio de funcionamiento de este modo

La siguiente figura muestra de forma muy clara el principio de funcionamiento de este modo de comparación.

S pe c ia l eve nt trigger w ill:

re set T im er1, but not set interrupt a g

b it

T M R 1IF (P IR 1<0>), a n d s e t b it G O /D O N E

S p e c ia l E ve nt Trig g er (C C P
S p e c ia l E ve nt Trig g er (C C P 2 o n ly )
S et ag bit C C P 1IF
(P IR 1<2>)
C C PR 1H
C C PR 1L
Q
S
O utput
C om parator
Logic
R C 2/C C P 1
P in
m atc h
R
T R IS C <2>
O utput E na ble
TM R 1H
TM R 1L
C
C P 1C O N <3:0>

M ode S e le ct

ESQUEMA DE UN MODULO CCP EN MODO COMPARACION.

EL MODO PWM O MODULACION DE ANCHO DE PULSO

En este modo, el pin RCx/CCPx permite disponer de una salida que es una señal con modulación de ancho de pulsos, con una resolución que puede llegar hasta 10 bits. Evidentemente, este pin debe configurarse como salida por medio del registro TRISC. Como muestra la siguiente figura, el principio de este modo de funcionamiento es el que sigue. El usuario escribe, en el registro CCPx, el ciclo de trabajo deseado utilizando 8 bits. El registro CCPxL, el ciclo de trabajo deseado utilizando 8 bits. El registro CCPxH se utiliza como esclavo de CCPxL, por lo que no se puede escribir en él. El periodo de la señal generada se determina mediante el contenido del registro periodo del temporizador 2 (PR2). En estas condiciones, y teniendo en cuanta el funcionamiento del temporizador 2 visto anteriormente, se puede escribir:

Periodo de la señal = (PR2 +1) x 4T x (Predivisor de TMR2)

Donde T es el periodo de la señal de reloj del PIC.

Ciclo de trabajo = DC1 x T x (Predivisor TMR2)

Donde T es el periodo del reloj del PIC, y de DC1 es la palabra de 10 bits, formada por los 8 bits de CCPxL, y los bits 4 y 5 de CCPxCON, utilizados como bits de menor peso. La resolución de este modo PWM es, por tanto, programable hasta alcanzar los 10 bits, si los bits 4 y 5 son distintos de 0. En caso contrario, el modo PWM funciona con una resolución de 9 bits (un único bit a 0), o de 8 bits (los dos bits a 0).

La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba

Página 29 de 58

C C P 1C O N <5:4> D uty c y c le re g
C C P 1C O N <5:4>
D uty c y c le re g isters
C
C PR 1L
C
C
P R 1H (S la ve )
R
Q
C om parator
R C 2/C C P 1
(N ote 1)
TMR2
S
T R IS C <2>
C om parator
C
le a r T im e r,
C
C P 1 pin and
latc h D .C .
PR2

N ote 1: 8-b it tim er is c on c ate nate d w ith 2-b it interna l Q c lo ck or 2 b its of the pre s c a ler to cre ate 10-b it tim e-ba se.

2 b its of the pre s c a ler to cre ate 10-b it tim

ESQUEMA DE UN MODULO CCP EN MODO PWM.

EL REGISTRO DE CONTROL DE LOS MODULOS CCP

Vistos los diversos modos de funcionamiento, vamos a presentar el análisis del contenido del registro de control de cada módulo CCP. Cada módulo CCP dispone de su propio registro de control, denominado CCPxCON, en el que cada uno de sus bits tiene la siguiente función:

Registro CCP1CON / CCP2CON - Dirección 0x17 / 0x1D

U -0

U -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0

C C PxX

C C PxY

C C PxM3

C C PxM2

C C PxM1

C C PxM0

R

= R eadable bit

b it7

b it0

W

=W rita ble b it

 

U

= U n im p lem e nte d b it,

re a d

a s ‘0’

-

n =V a lu e a t P O R re s e t

b it 7-6: U n im p l e m e n te d : R e a d a s '0'

b it 5-4: C C P x X :C C P x Y : P W M L e a st S ign ic a nt b its

C

a pture M ode : U nu se d

C

om pare M ode: U nused

P

W M M ode : T h e s e b its are th e tw o L S b s of th e P W M duty c y c le. T h e e ight M S b s are fou n d in C C P R x L .

b it 3-0: C C P x M 3:C C P x M 0: C C P x M ode S e le ct b its

0000

= C a p ture /C o m p a re /P W M o ff (re s e ts C C P x m o d u le )

0100

= C a pture m ode, every fa lling e dge

0101

= C a pture m ode, every ris ing e dge

0110

= C a pture m ode, every 4th ris ing e dge

0111

= C a pture m ode, every 16th ris ing e dge

1000

= C om p are m o d e , s e t o utp ut o n m a tc h (C C P x IF b it is s e t)

1001

= C om p are m o d e , c le ar o utp ut o n m a tc h (C C P x IF b it is s e t)