Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROCHIP TECHNOLOGY
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 02 de 58
1.1 Arquitectura Harvard vs. Arquitectura Von Neuman
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 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).
R E 0 /A N 5 /R D
R E 1 /A N 6 /W R
M C LR VDD, VSS
R E 2 /A N 7 /C S
T im e r0 T im e r1 T im e r2 1 0 -b it A /D
D ev ic e P ro g ra m D a ta M e m o ry D a t a E E P RO M
FLA SH
P IC 1 6 F 8 7 4 4K 1 9 2 B y te s 1 2 8 B y te s
D a ta E E P R O M S y n c h ro n o u s
C C P 1 ,2 USART P IC 1 6 F 8 7 7 8K 3 6 8 B y te s 2 5 6 B y te s
S e ria l P o r t
N o te 1 : H ig h e r o rd 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 58
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 d d re s s
In d ire c t a d d r. (*) 00h In d ire c t a d d r. (*) 80h In d ire c t a d d r. (*) 100h In d ire c t a d d r. (*) 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 TA T U S 03h S TA T U S 83h S TA T U S 103h S TA T U S 183h
FSR 04h FSR 84h FSR 104h FSR 184h
P O R TA 05h T R IS A 85h 105h 185h
PO RTB 06h T R IS B 86h PO RTB 106h T R IS B 186h
PO RTC 07h T R IS C 87h 107h 187h
P O R T D (1 ) 08h T R IS D (1 ) 88h 108h 188h
P O R T E (1 ) 09h T R IS E (1 ) 89h 109h 189h
P C L AT H 0A h P C L AT H 8A h P C L AT H 10A h P C L AT H 18A h
IN T C O N 0B h IN T C O N 8B h IN T C O N 10B h IN T C O N 18B h
P IR 1 0C h P IE 1 8C h E E D A TA 10C h EEC ON1 18C h
P IR 2 0D h P IE 2 8D h EEADR 10D h EEC ON2 18D h
T M R 1L 0E h PC O N 8E h E E D AT H 10E h R e s e rv e d (2 ) 18E h
T M R 1H 0F h 8F h EEADRH 10F h R e s e rv e d (2 ) 18F h
T 1C O N 10h 90h 110h 190h
TMR2 11h SSPC O N2 91h 111h 191h
T 2C O N 12h PR 2 92h 112h 192h
S S PBU F 13h S S PA D D 93h 113h 193h
SSPC O N 14h S S P S TA T 94h 114h 194h
C C P R 1L 15h 95h 115h 195h
C C P R 1H 16h 96h 116h 196h
C C P 1C O N 17h 97h G e n e ra l 117h G e n e ra l 197h
P u rp o s e P u rp o s e
R C S TA 18h T X S TA 98h R e g is te r 118h R e g is te r 198h
TXREG 19h S PBR G 99h 1 6 B y te s 119h 1 6 B y te s 199h
RC REG 1A h 9A h 11A h 19A h
C C P R 2L 1B h 9B h 11B h 19B h
C C P R 2H 1C h 9C h 11C h 19C h
C C P 2C O N 1D h 9D h 11D h 19D h
ADRESH 1E h ADRESL 9E h 11E h 19E h
ADC ON0 1F h ADC ON1 9F h 11F h 19F h
20h A 0h 120h 1A 0h
G e n e ra l G e n e ra l G e n e ra l G e n e ra l
P u rp o s e P u rp o s e P u rp o s e P u rp o s e
R e g is te r R e g is te r R e g is te r R e g is te r
8 0 B y te s 8 0 B y te s 8 0 B y te s
9 6 B y te s EFh 16F h 1E F h
F 0h 170h accesses 1F 0h
accesses accesses
7 0 h -7 F h 7 0 h -7 F h 70h - 7F h
7F h FFh 17F h 1F F h
Bank 0 Bank 1 Bank 2 Bank 3
Organización
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 06 de 58
Figura 1.4.1
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 07 de 58
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
Stack
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 08 de 58
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 P1 R P0 TO PD Z DC C R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: IR P : R e g is te r B a n k S e le c t b it (u s e d fo r in d ire c t a d d re 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 )
b it 6-5: R P 1: R P 0: R e g is te r B a n k S e le c t b its (u s e d fo r d ire c t a d d re 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 b a n k is 128 b y te s
b it 4: T O : T im e -o u t b it
1 = A fte r p o w e r-u p, CLRWDT in s tru c tio n , o r SLEEP in s tru c tio n
0 = A W D T tim e -o u t o c c u rre d
b it 3: P D : P o w e r-d o w n b it
1 = A fte r p o w e r-u p o r b y th e CLRWDT in s tru c tio n
0 = B y e x e c u tio n o f th e SLEEP in s tru c tio n
b it 2: Z : Z e ro b it
1 = T h e re s u lt o f a n a rith m e tic o r lo g ic o p e ra tio n is ze ro
0 = T h e re s u lt o f a n a rith m e tic o r lo g ic o p e ra tio n is n o t z e ro
b it 1: D C : D ig it c a rry /b o rro w b it (ADDWF, ADDLW,SUBLW,SUBWF in s tru c tio n s ) (fo r b o rro w th e p o la rity is re v e rs e d )
1 = A c a rry -o u t fro m th e 4th lo w o rd e r b it o f th e re s u lt o c c u rre d
0 = N o c a rry -o u t fro m th e 4th lo w o rd e r b it o f th e re s u lt
b it 0: C : C a rry /b o rro w b it (ADDWF, ADDLW,SUBLW,SUBWF in s tru c tio n s )
1 = A c a rry -o u t fro m th e m o s t s ig n ic a n t b it o f th e re s u lt o c c u rre d
0 = N o c a rry -o u t fro m th e m o s t s ig n ic a n t b it o f th e re s u lt o c c u rre d
N o te : F o r b o rro 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
s e c o n d o p e ra n d . F o r ro ta te (RRF, RLF) in s tru c tio n s , th is b it is lo a d e d w ith e ith e r th e h ig h o r lo w o rd e r b it o f
th e s o u rc e re g is te r.
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 09 de 58
REGISTROS ESPECIALES IMPORTANTES
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, D y E
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.
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.
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 10 de 58
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
P D IP
M C L R /V P P /T H V 1 40 R B 7/P G D D IP , S O IC
R A 0/A N 0 2 39 R B 6/P G C
R A 1/A N 1 3 38 R B5 28
M C L R /V P P /T H V 1 R B 7/P G D
R A 2/A N 2/V R E F - 4 37 R B4
R A 0/A N 0 2 27 R B 6/P G C
R A 3/A N 3/V R E F + 5 36 R B 3/P G M
R A 1/A N 1 3 26 R B5
R A 4/T 0C K I 6 35 R B2
R A 2/A N 2/V R E F - 4 25 R B4
R A 5/A N 4/S S 7 34 R B1
R A 3/A N 3/V R E F + 5 24 R B 3/P G M
P IC 16F 877/874
PIC16F876/873
R E 0/R D /A N 5 8 33 R B 0/IN T
R A 4/T 0C K I 6 23 R B2
R E 1/W R /A N 6 9 32 VDD
R A 5/A N 4/S S 7 22 R B1
R E 2/C S /A N 7 10 31 VSS
VSS 8 21 R B 0/IN T
VDD 11 30 R D 7/P S P 7
VSS O S C 1/C L K IN 9 20 VDD
12 29 R D 6/P S P 6
O S C 1/C L K IN 28 R D 5/P S P 5 O S C 2/C L K O U T 10 19 VSS
13
O S C 2/C L K O U T R D 4/P S P 4 R C 0/T 1O S O /T 1C K I 11 18 R C 7/R X /D T
14 27
R C 0/T 1O S O /T 1C K I R C 7/R X /D T R C 1/T 1O S I/C C P 2 12 17 R C 6/T X /C K
15 26
R C 1/T 1O S I/C C P 2 16 25 R C 6/T X /C K R C 2/C C P 1 13 16 R C 5/S D O
R C 2/C C P 1 17 24 R C 5/S D O R C 3/S C K /S C L 14 15 R C 4/S D I/S D A
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
R C 1 /T 1 O S I/C C P 2
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R A 3/A N 3/V R E F +
R A 2/A N 2/V R E F -
R C 6 /T X /C K
M C L R /V P P /T H V
R C 2 /C C P 1
R D 3 /P S P 3
R D 2 /P S P 2
R D 1 /P S P 1
R D 0 /P S P 0
R C 5 /S D O
R B 7/P G D
R B 6/P G C
R A 1/A N 1
R A 0/A N 0
Q FP
NC
PLC C
R B5
R B4
NC
NC
44
43
42
41
40
39
37
36
35
34
38
6
5
4
3
2
1
43
42
41
40
44
12
13
14
15
16
17
18
19
20
21
22
R C 1/T 1O S I/C C P 2
R D 0/P S P 0
R D 1/P S P 1
R D 2/P S P 2
R D 3/P S P 3
R C 2/C C P 1
R C 3/S C K /S C L
R C 6/T X /C K
R C 4/S D I/S D A
R C 5/S D O
NC
R A 3 /A N 3 /V R E F +
M C L R /V P P /T H V
R A 0 /A N 0
R A 1 /A N 1
R B4
R B5
R B 7 /P G D
R A 2 /A N 2 /V R E F -
R B 6 /P G C
NC
NC
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 11 de 58
1.7 Temporizador 0 / Contador (TMR0)
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 BPU IN T E D G T 0C S T 0S E PSA PS2 PS1 PS0 R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: R B P U : P O R T B P u ll-u p E n a b le b it
1 = P O R T B p u ll-u p s a re d is a b le d
0 = P O R T B p u ll-u p s a re e n a b le d b y in d iv id u a l p o rt la tc h v a lu e s
b it 6: IN T E D G : In te rru p t E d g e S e le c t 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
b it 5: T 0C S : T M R 0 C lo c k S o u rc e S e le c t b it
1 = Tra n s itio n o n R A 4/T 0C K I p in
0 = In te rn a l in s tru c tio n c y c le c lo c k (C L K O U T )
b it 4: T 0S E : T M R 0 S o u rc e E d g e S e le c t b it
1 = In c re m e n t o n h ig h -to -lo w 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 lo w -to -h ig h tra n s itio n o n R A 4/T 0C K I p in
b it 3: P S A : P re s c a le r A s s ig n m e n t b it
1 = P re s c a le r is a s s ig n e d to th e W D T
0 = P re s c a le r is a s s ig n e d to th e T im e r0 m o d u le
b it 2-0: P S 2: P S 0: P re s c a le r R a te S e le c t b its
B it V a lu e T M R 0 R a te W D T R a te
000 1 : 2 1 : 1
001 1 : 4 1 : 2
010 1 : 8 1 : 4
011 1 : 16 1 : 8
100 1 : 32 1 : 16
101 1 : 64 1 : 32
110 1 : 128 1 : 64
111 1 : 256 1 : 128
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 12 de 58
Circuito equivalente del TMR0 y el prescaler.
D a ta b u s
F o s c /4 0
P S out 8
1
S y n c w ith
1 In te rn a l TMR0
c lo c k s
R A 4/T 0C K I P ro g ra m m a ble 0 P S out
p in P re s c a le r
T 0S E (2 c y c le d e la y )
3
S e t in te rru p t
P S 2, P S 1, P S 0 PSA a g b it T 0IF
T 0C S o n o v e ro 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 p re s c a le r is s h a re d w ith W a tc h d o g T im e r (re fe r to F ig u re 5-2 fo r d e ta ile d b lo c k d ia g ra m ).
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 58
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
A D IF W a k e -u p (If in S L E E P m o d e )
T 0 IF
A D IE T 0 IE
R C IF IN T F
R C IE IN T E
In te rru p t to C P U
T X IF R B IF
T X IE R B IE
S S P IF
S S P IE
P E IE
C C P 1 IF
C C P 1 IE G IE
T M R 2 IF
T M R 2 IE
T M R 1 IF
T M R 1 IE
C C P 2 IF
C C P 2 IE
B C L IF
B C L IE
T h e fo llo w in g ta b le s h o w s w h ic h d e v ic e s h a v e w h ic h in te rru p ts .
D ev ic e T 0 IF 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 1 IF T M R 2 IF T M R 1 IF E E IF B C L IF C C P 2 IF
P IC 1 6 F 8 7 6 /8 7 3 Yes Yes Yes - Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
P IC 1 6 F 8 7 7 /8 7 4 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Fuentes
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 58
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 -x
G IE P E IE T 0IE IN T E R B IE T 0IF IN T F R B IF R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: G IE : G lo b a l In te rru p t E n a b le b it
1 = E n a b le s a ll u n -m a s k e d in te rru p ts
0 = D is a b le s a ll in te rru p ts
b it 6: P E IE : P e rip h e ra l In te rru p t E n a b le b it
1 = E n a b le s a ll u n -m a s k e d p e rip h e ra l in te rru p ts
0 = D is a b le s a ll p e rip h e ra l in te rru p ts
b it 5: T 0IE : T M R 0 O v e ro w In te rru p t E n a b le b it
1 = E n a b le s th e T M R 0 in te rru p t
0 = D is a b le s th e T M R 0 in te rru p t
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 o rt C h a n g e In te rru p t E n a b le b it
1 = E n a b le s th e R B p o rt c h a n g e in te rru p t
0 = D is a b le s th e R B p o rt c h a n g e in te rru p t
b it 2: T 0IF : T M R 0 O v e ro w In te rru p t F la g b it
1 = T M R 0 re g is te r h a s o v e ro w e d (m u s t b e c le a re d in s o ftw a re )
0 = T M R 0 re g is te r d id n o t o v e ro 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 u rre 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 u r
b it 0: R B IF : R B P o rt C h a n g e In te rru p t F la g b it
1 = A t le a s t o n e o f th e R B 7:R B 4 p in s c h a n g e d s ta te (m u s t b e c le a re d in s o ftw a re )
0 = N o n e o f th e R B 7:R B 4 p in s h a v e c h a n g e d s ta te
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 58
Registro PIE1 - Dirección 0x8C
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 R = R e a d a ble b it
W = W rita ble b it
b it7 b it0
U = U n im p le m e n te 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: P S P IE (1): P a ra lle l S lave P o rt R e a d /W rite In te rru p t E n a ble b it
1 = E n a ble s th e P S P re a d /w rite in te rru p t
0 = D is a ble s th e P S P re a d /w rite in te rru p t
b it 6: A D IE : A /D C o nve rte r In te rru p t E n a ble b it
1 = E n a ble s th e A /D c o nve rte r in te rru p t
0 = D is a ble s th e A /D c o nve rte r in te rru p t
b it 5: R C IE : U S A R T R e c e ive In te rru p t E n a ble b it
1 = E n a ble s th e U S A R T re c e ive in te rru p t
0 = D is a ble s th e U S A R T re c e ive in te rru p t
b it 4: T X IE : U S A R T Tra n s m it In te rru p t E n a ble b it
1 = E n a ble s th e U S A R T tra n s m it in te rru p t
0 = D is a ble s th e U S A R T tra n s m it in te rru p t
b it 3: S S P IE : S y n c h ro n o u s S e ria l P o rt In te rru p t E n a ble b it
1 = E n a ble s th e S S P in te rru p t
0 = D is a ble s th e S S P in te rru p t
b it 2: C C P 1IE : C C P 1 In te rru p t E n a ble b it
1 = E n a ble s th e C C P 1 in te rru p t
0 = D is a ble s th e C C P 1 in te rru p t
b it 1: T M R 2IE : T M R 2 to P R 2 M a tc h In te rru p t E n a ble b it
1 = E n a ble s th e T M R 2 to P R 2 m a tc h in te rru p t
0 = D is a ble s th e T M R 2 to P R 2 m a tc h in te rru p t
b it 0: T M R 1IE : T M R 1 O ve ro w In te rru p t E n a ble b it
1 = E n a ble s th e T M R 1 ove ro w in te rru p t
0 = D is a ble s th e T M R 1 ove ro w in te rru p t
N o te 1: P S P IE is re s e rve d o n 28-p in d ev ic e s, a lw ay 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 58
Registro PIR1 - Dirección 0x0C
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 R = R e a d a ble b it
W = W rita b le b it
b it7 b it0
- n = V a lu e a t P O R re s e t
b it 7: P S P IF (1): P a ra lle l S la v e P o rt R e a d /W rite In te rru p t F la g b it
1 = A re a d o r a w rite o p e ra tio n h a s ta ke n p la c e (m u s t b e c le a re d in s o ftw a re )
0 = N o re a d o r w rite h a s o c c u rre 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 iv e In te rru p t F la g b it
1 = T h e U S A R T re c e iv e bu ffe r is fu ll
0 = T h e U S A R T re c e iv e bu ffe r is e m p ty
b it 4: T X IF : U S A R T Tra n s m it In te rru p t F la g b it
1 = T h e U S A R T tra n s m it bu ffe r is e m p ty
0 = T h e U S A R T tra n s m it bu ffe r is fu ll
b it 7: S S P IF : S y n c h ro n o u s S e ria l P o rt (S S P ) In te rru p t F la g
1 = T h e S S P in te rru p t c o n d itio n h a s o c c u rre d , a n d m u s t b e c le a re d in s o ftw a re b e fo re re tu rn in g fro m th e
in te rru p t s e rv ic e ro u tin e . T h e c o n d itio n s th a t w ill s e t th is b it a re :
SPI
A tra n s m is s io n /re c e p tio n h a s ta ke 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 ke n p la c e .
I 2 C M a s te r
A tra n s m is s io n /re c e p tio n h a s ta ke n p la c e .
T h e in itia te d s ta rt c o n d itio n w a s c o m p le te d by th e S S P m o d u le .
T h e in itia te d s to p c o n d itio n w a s c o m p le te d by th e S S P m o d u le .
T h e in itia te d re s ta rt c o n d itio n w a s c o m p le te d by th e S S P m o d u le .
T h e in itia te d a c k n o w le d g e c o n d itio n w a s c o m p le te d by th e S S P m o d u le .
A s ta rt c o n d itio n o c c u rre d w h ile th e S S P m o d u le w a s id le (M u ltim a s te r s y s te m ).
A s to p c o n d itio n o c c u rre d w h ile th e S S P m o d u le w a s id le (M u ltim a s te r s y s te m ).
0 = N o S S P in te rru p t c o n d itio n h a s o c c u rre d .
b it 2: C C P 1IF : C C P 1 In te rru p t F la g b it
C a p tu re M o d e
1 = A T M R 1 re g is te r c a p tu re o c c u rre d (m u s t b e c le a re d in s o ftw a re )
0 = N o T M R 1 re g is te r c a p tu re o c c u rre d
C o m p a re M o d e
1 = A T M R 1 re g is te r c o m p a re m a tc h o c c u rre d (m u s t b e c le a re d in s o ftw a re )
0 = N o T M R 1 re g is te r c o m p a re m a tc h o c c u rre d
P W M M ode
U n u s e d in th is m o d e
b it 1: T M R 2IF : T M R 2 to P R 2 M a tc h In te rru p t F la g b it
1 = T M R 2 to P R 2 m a tc h o c c u rre d (m u s t b e c le a re d in s o ftw a re )
0 = N o T M R 2 to P R 2 m a tc h o c c u rre d
b it 0: T M R 1IF : T M R 1 O v e ro w In te rru p t F la g b it
1 = T M R 1 re g is te r o v e ro w e d (m u s t b e c le a re d in s o ftw a re )
0 = T M R 1 re g is te r d id n o t o v e ro 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 58
Registro PIE2 - Dirección 0x8D
U -0 R /W -0 U -0 R /W -0 R /W -0 U -0 U -0 R /W -0
— (1) — E E IE B C L IE — — C C P 2IE R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: U n i m p l e m e n te d : R e a d a s '0'
b it 6: R e s e r v e d : A lw a y s m a in ta in th is b it c le a r
b it 5: U n i m 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 p e ra tio n In te rru p t E n a b le
1 = E n a b le E E W rite In te rru p t
0 = D is a b le E E W rite In te rru p t
b it 3: B C L IE : B u s C o llis io n In te rru p t E n a b le
1 = E n a b le B u s C o llis io n In te rru p t
0 = D is a b le B u s C o llis io n In te rru p t
b it 2-1: U n i m 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 In te rru p t E n a b le b it
1 = E n a b le s th e C C P 2 in te rru p t
0 = D is a b le s th e C C P 2 in te rru p t
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.
U -0 R /W -0 U -0 R /W -0 R /W -0 U -0 U -0 R /W -0
— (1) — E E IF B C L IF — — C C P 2IF R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: U n i m p l e m e n te d : R e a d a s '0'
b it 6: R e s e r v e d : A lw a y s m a in ta in th is b it c le a r
b it 5: U n i m 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 p e ra tio n In te rru p t F la g b it
1 = T h e w rite o p e ra tio n c o m p le te d (m u s t b e c le a re d in s o ftw a re )
0 = T h e w rite o p e ra tio n is n o t c o m p le te o r h a s n o t b e e n s ta rte d
b it 3: B C L IF : B u s C o llis io n In te rru p t F la g
1 =A b u s c o llis io n h a s o c c u rre d in th e S S P, w h e n c o n g u re d f o r I 2 C m a s te r m o d e
0 =N o b u s c o llis io n h a s o c c u rre d
b it 2-1: U n i m 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 In te rru p t F la g b it
C a p tu re M o d e
1 = A T M R 1 re g is te r c a p tu re o c c u rre d (m u s t b e c le a re d in s o ftw a re )
0 = N o T M R 1 re g is te r c a p tu re o c c u rre d
C o m p a re M o d e
1 = A T M R 1 re g is te r c o m p a re m a tc h o c c u rre d (m u s t b e c le a re d in s o ftw a re )
0 = N o T M R 1 re g is te r c o m p a re m a tc h o c c u rre d
P W 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 58
LOS PUERTOS PARALELOS
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 a ta
bus
D Q
VDD
WR D a ta
P o rt bus
CK Q D Q
P
WR
D a ta L a tc h PO RT
CK Q
I/O p in (1)
N I/O p in (1) N
D Q
D a ta L a tc h
WR D Q V ss
T R IS VSS WR
CK Q
A n a lo g T R IS CK Q S c h m itt
in p u t Trig g e r
T R IS L a tc h m ode in p u t
T R IS L a tc h
b u ffe r
R D T R IS TTL R D T R IS
in p u t
b u ffe r
Q D Q D
ENE N
EN R D PO RT
R D PO RT
T M R 0 c lo c k in p u t
N o te 1: I/O p in s h a v e p ro te c tio n d io d e s to V D D a n d
VSS.
RA4
VDD
R B P U (2) w eak
P p u ll-u p
VDD
R B P U (2) D a ta L a tc h
w eak D a ta b u s
P p u ll-u p D Q
D a ta L a tc h I/O
D a ta b u s W R P o rt
D Q CK p in (1)
W R P o rt I/O T R IS L a tc h
CK p in (1) D Q
T R IS L a tc h W R T R IS TTL
D Q CK In p u t
TTL B u ffe r ST
W R T R IS In p u t B u ffe r
CK B u ffe r
R D T R IS L a tc h
Q D
R D T R IS
Q D R D P o rt EN Q1
S e t R B IF
R D P o rt EN
F ro m o th e r Q D
R B 7:R B 4 p in s R D P o rt
R B 0/IN T
EN
S c h m itt Trig g e r Q3
R D P o rt
B u ffe r R B 7:R B 6 in s e ria l p ro g ra m m in g m o d e
N o te 1: I/O p in s h a v e d io d e p ro te c tio n to V D D a n d 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 p ro p ria te T R IS b it(s ) N o te 1: I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S .
a n d c le a r th e R B P U b it (O P T IO N _R E G <7>). 2: To e n a b le w e a k p u ll-u p s , s e t th e a p p ro p ria te T R IS b it(s )
a n d c le a r 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 58
EL PUERTO C
P O R T /P E R IP H E R A L S e le c t(2)
P O R T /P E R IP H E R A L S e le c t(2)
P e rip h e ra l D a ta O u t VDD
P e rip h e ra l D a ta O u t 0
0 VDD D a ta b u s
D a ta b u s D Q P
D Q WR 1
WR P
1 PO RT CK Q
PO RT CK Q
D a ta L a tc h
D a ta L a tc h
D Q I/O
D Q I/O WR p in (1)
WR p in (1) T R IS
T R IS CK Q N
CK Q N
T R IS L a tc h
T R IS L a tc h VSS
VSS
S c h m itt
S c h m itt R D T R IS Trig g e r
R D T R IS Trig g e r P e rip h e ra l
P e rip h e ra l
O E (3) Q D S c h m itt
O E (3) Q D
Trig g e r
EN w ith
EN RD S M Bus
RD PO RT 0 le v e ls
PO RT S S P l in p u t
P e rip h e ra l in p u t
1
N o te 1: I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S .
C KE
2: P o rt/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 o rt
d a ta a n d p e rip h e ra l o u tp u t. S S P S TA T <6>
3: P e rip h e ra l O E (o u tp u t e n a ble ) is o n ly a c tiv a te d if
N o te 1: I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S .
p e rip h e ra l s e le c t is a c tiv e .
2: P o rt/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 o rt
d a ta a n d p e rip h e ra l o u tp u t.
3: P e rip h e ra l O E (o u tp u t e n a ble ) is o n ly a c tiv a te d if
RC0-RC2 / RC5-RC7 p e rip h e ra l s e le c t is a c tiv e .
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 58
EL PUERTO D
D a ta
bus D Q
WR
PO RT I/O p in (1)
CK
D a ta L a tc h
D Q
WR
T R IS CK S c h m itt
Trig g e r
in p u t
T R IS L a tc h b u ffe r
R D T R IS
Q D
E NE N
R D PO RT
N o te 1: I/O p in s h a v e p ro te c tio n d io d e s to V D D a n d V S S .
D a ta b u s
D Q
WR
PO RT RDx
CK p in
TTL
Q D
RD E NE N
PO RT
O n e b it o f P O R T D
S e t in te rru p t a g
P S P IF (P IR 1<7>)
R ead
TTL RD
C h ip S e le c t
TTL CS
W rite
TTL WR
N o te : I/O p in h a s p ro te c tio n d io d e s to V D D a n d V S S .
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 22 de 58
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 a ta
bus D Q
WR
PO RT I/O p in (1)
CK
D a ta L a tc h
D Q
WR
T R IS CK S c h m itt
Trig g e r
in p u t
T R IS L a tc h b u ffe r
R D T R IS
Q D
E NE N
R D PO RT
N o te 1: I/O p in s h a v e p ro te c tio n d io d e s to V D D a n d 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 58
Registro TRISE - Dirección 0x89
R -0 R -0 R /W -0 R /W -0 U -0 R /W -1 R /W -1 R /W -1
IB F O BF IB O V PSPMO DE — b it2 b it1 b it0 R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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 : IB F : In p u t B u ffe r F u ll S ta tu s b it
1 = A w o rd h a s b e e n re c e iv e d a n d is w a itin g to b e re a d b y th e C P U
0 = N o w o rd h a s b e e n re c e iv e d
b it 6: O B F : O u tp u t B u ffe r F u ll S ta tu s b it
1 = T h e o u tp u t b u ffe r s till h o ld s a p re v io u s ly w ritte n w o rd
0 = T h e o u tp u t b u ffe r h a s b e e n re a d
b it 5: IB O V : In p u t B u ffe r O v e ro w D e te c t b it (in m ic ro p ro c e s s o r m o d e )
1 = A w rite o c c u rre d w h e n a p re v io u s ly in p u t w o rd h a s n o t b e e n re a d (m u s t b e c le a re d in s o ftw a re )
0 = N o o v e ro w o c c u rre d
b it 4: P S P M O D E : P a ra lle l S la v e P o rt M o d e S e le c t b it
1 = P a ra lle l s la v e p o rt m o d e
0 = G e n e ra l p u rp o s e I/O m o d e
b it 3: U n i m p l e m e n te d : R e a d a s '0'
P O R T E D a ta D i r e c ti o n B i ts
b it 2: B i t2: D ire c tio n C o n tro l b it fo r p in R E 2/C S /A N 7
1 = In p u t
0 = O u tp u t
b it 1: B i t1: D ire c tio n C o n tro l b it fo r p in R E 1/W R /A N 6
1 = In p u t
0 = O u tp u t
b it 0: B i t0: D ire c tio n C o n tro l b it fo r p in R E 0/R D /A N 5
1 = In p u t
0 = O u tp u t
LOS TEMPORIZADORES
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 24 de 58
EL TEMPORIZADOR 0
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
S e t a g b it
T M R 1IF o n
O v e ro w S y n c h ro n iz e d
TMR1 0
c lo c k in p u t
T M R 1H T M R 1L
1
T M R 1O N
o n /o ff T 1S Y N C
T 1O S C
R C 0/T 1O S O /T 1C K I 1
S y n c h ro n iz e
P re s c a le r
T 1O S C E N F o s c /4 1, 2, 4, 8 det
E n a b le In te rn a l 0
R C 1/T 1O S I O s c illa to r(1) C lo c k 2
S L E E P in p u t
T 1C K P S 1:T 1C K P S 0
T M R 1C S
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 58
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:
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 R = R e a d a b le b it
W = W rita b le b it
b it7 b it0
U = U n im p le m e n te 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 i m 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 e r1 In p u t C lo c k P re s c a le S e le c t b its
11 = 1:8 P re s c a le v a lu e
10 = 1:4 P re s c a le v a lu e
01 = 1:2 P re s c a le v a lu e
00 = 1:1 P re s c a le v a lu e
b it 3: T 1O S C E N : T im e r1 O s c illa to r E n a b le C o n tro l b it
1 = O s c illa to r is e n a b le d
0 = O s c illa to r is s h u t o ff
N o te : T h e o s c illa to r in v e rte r a n d fe e d b a c k re s is to r a re tu rn e d o ff to e lim in a te p o w e r d ra in
b it 2: T 1S Y N C : T im e r1 E x te rn a l C lo c k In p u t S y n c h ro n iz a tio n C o n tro l b it
T M R 1C S = 1
1 = D o n o t s y n c h ro n iz e e x te rn a l c lo c k in p u t
0 = S y n c h ro n iz e e x te rn a l c lo c k in p u t
T M R 1C S = 0
T h is b it is ig n o re d . T im e r1 u s e s th e in te rn a l c lo c k w h e n T M R 1C S = 0.
b it 1: T M R 1C S : T im e r1 C lo c k S o u rc e S e le c t b it
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 = In te rn a l c lo c k (F O S C /4)
b it 0: T M R 1O N : T im e r1 O n b it
1 = E n a b le s T im e r1
0 = S to p s T im e r1
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 e ts a g
TMR2
b it T M R 2IF o u tp u t (1)
R eset P re s c a le r
T M R 2 re g F o s c /4
1:1, 1:4, 1:16
P o s ts c a le r 2
C o m p a ra to r
1:1 to 1:16 EQ
4 P R 2 re g
N o te 1: T M R 2 re g is te r o u tp u t c a n b e s o ftw a re s e le c te d
b y th e S S P M o d u le a s a b a u d c lo c k .
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 26 de 58
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.
U -0 R /W -0 R /W -0 R /W -0 R /W -0 R /W -0 R /W -0 R /W -0
— TO U TPS 3 TO U TPS 2 TO U TPS 1 TO U TPS 0 T M R 2O N T 2C K P S 1 T 2C K P S 0 R = R e a d a b le b it
W = W rita b le b it
b it7 b it0
U = U n im p le m e n te 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: U n i m 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 e r2 O u tp u t P o s ts c a le S e le c t b its
0000 = 1:1 P o s ts c a le
0001 = 1:2 P o s ts c a le
•
•
•
1111 = 1:16 P o s ts c a le
b it 2: T M R 2O N : T im e r2 O n b it
1 = T im e r2 is o n
0 = T im e r2 is o ff
b it 1-0: T 2C K P S 1: T 2C K P S 0: T im e r2 C lo c k P re s c a le S e le c t b its
00 = P re s c a le r is 1
01 = P re s c a le r is 4
1x = P re s c a le r is 16
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,
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 e t a g b it C C P 1IF
P re s c a le r (P IR 1<2>)
∏ 1, 4, 16
R C 2/C C P 1 C C P R 1H C C P R 1L
P in
and C a p tu re
e d g e d e te c t E n a b le
T M R 1H T M R 1L
C C P 1C O N <3:0>
Q ’s
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:
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 de comparación.
S p e c ia l e v e n t trig g e r w ill:
re s e t T im e r1, b u t n o t s e t in te rru p t 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 v e n t Trig g e r (C C P 2 o n ly )
S e t a g b it C C P 1IF
(P IR 1<2>)
C C P R 1H C C P R 1L
Q S O u tp u t
L o g ic C o m p a ra to r
R C 2/C C P 1 R m a tc h
P in
T R IS C <2> T M R 1H T M R 1L
O u tp u t E n a b le C C P 1C O N <3:0>
M o d e S e le c t
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:
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
D u ty c y c le re g is te rs C C P 1C O N <5:4>
C C P R 1L
C C P R 1H (S la v e )
C o m p a ra to r R Q
R C 2/C C P 1
TMR2 (N o te 1)
S
C o m p a ra to r T R IS C <2>
C le a r T im e r,
C C P 1 p in a n d
la tc h D .C .
PR 2
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:
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 PxM 3 C C PxM 2 C C PxM 1 C C PxM 0 R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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 i m 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 s t S ig n ic a n t b its
C a p tu re M o d e : U n u s e d
C o m p a re M o d e : U n u s e d
P W M M o d e : T h e s e b its a re th e tw o L S b s o f th e P W M d u ty c y c le. T h e e ig h t M S b s a re fo u 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 o d e S e le c t b its
0000 = C a p tu re /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 p tu re m o d e , e v e ry fa llin g e d g e
0101 = C a p tu re m o d e , e v e ry ris in g e d g e
0110 = C a p tu re m o d e , e v e ry 4th ris in g e d g e
0111 = C a p tu re m o d e , e v e ry 16th ris in g e d g e
1000 = C o m p a re m o d e , s e t o u tp u t o n m a tc h (C C P x IF b it is s e t)
1001 = C o m p a re m o d e , c le a r o u tp u t o n m a tc h (C C P x IF b it is s e t)
1010 = C o m p a re m o d e , g e n e ra te s o ftw a re in te rru p t o n m a tc h (C C P x IF b it is s e t, C C P x p in is u n a ffe c te d )
1011 = C o m p a re m o d e , trig g e r s p e c ia l e v e n t (C C P x IF b it is s e t; C C P 1 re s e ts T M R 1; C C P 2 re s e ts T M R 1
a n d s ta rts a n A /D c o n v e rs io n (if A /D m o d u le is e n a b le d ))
11xx = P W M m o d e
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 30 de 58
INTERFAZ UNIVERSAL DIRECCIONABLE SERIE SINCRONA / ASÍNCRONA - USART
La interfaz serie asíncrona o SCI con la que está equipado el PIC16F87X es comparable a
una UART programable por software. Puede funcionar en modo asíncrono full duplex para
conectar al PIC con cualquier equipo provisto con una conexión del mismo tipo (terminal,
módem, etc...), o bien en modo síncrono semiduplex maestro o esclavo, para aplicaciones
algo más especiales.
La velocidad de transmisión es por completo programable gracias a su registro interno, y
es idéntica en transmisión y en recepción. La SCI no soporta directamente la paridad, en
el sentido de que no la calcula ni la verifica. Por el contrario, ofrece la posibilidad de
transmitir y recibir 9 bits de datos, lo cual permite generar esta paridad por software, y
utilizar este noveno bit para transmitirla y recibirla.
Excepto esta programación con 8 o 9 bits, el formato de transmisión es fijo; es el clásico
con un bit de arranque, los bits de datos y un bit de parada.
D a ta B u s
T X IF T X R E G re g is te r
T X IE
8
MSb LS b
(8) • • • 0 P in B u ffe r
a n d C o n tro l
T S R re g is te r R C 6/T X /C K p in
In te rru p t
TXEN B a u d R a te C L K
TRMT SPEN
S PBR G
TX9
B a u d R a te G e n e ra to r
T X 9D
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 31 de 58
El principio de utilización de la SCI en transmisión es la siguiente:
x 64 B a u d R a te C L K
OERR FERR
C REN
S PBR G
∏ 64 MSb R S R re g is te r LS b
or
∏ 16 0 S ta rt
B a u d R a te G e n e ra to r S to p (8) 7 ∑ ∑ ∑ 1
R C 7/R X /D T
P in B u ffe r D a ta
a n d C o n tro l R e c o v e ry RX9
SPEN
RX9 E n a b le
ADDEN Load of
RX9 R e c e iv e
B u ffe r
ADDEN
R S R <8> 8
R X 9D R C R E G re g is te r
F IF O
In te rru p t R C IF
D a ta B u s
R C IE
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 33 de 58
Q 1Q 2 Q 3Q 4 Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2 Q 3Q 4 Q 3Q 4 Q 1Q 2 Q 3Q 4 Q 1Q 2 Q 3Q 4 Q 1Q 2 Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4
R C 7/R X /D T p in B it 0 B it 1 B it 2 B it 7 B it 0 B it 1 B it 7
W ORD 1 W ORD 2
R C 6/T X /C K p in
W rite to
T X R E G re g
W rite w o rd 1 W rite w o rd 2
T X IF b it
(In te rru p t fla g )
T R M T bT itR M T
'1' '1'
T X E N b it
TRANSMISIÓN SÍNCRONA
R C 6/T X /C K p in
W rite to
T X R E G re g
T X IF b it
T R M T b it
T X E N b it
Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4
R C 6/T X /C K p in
W rite to
b it S R E N
S R E N b it
C R E N b it '0' '0'
R C IF b it
(in te rru p t)
R ead
RXREG
N o te : T im in g d ia g ra m d e m o n s tra te s S Y N C m a s te r m o d e w ith b it S R E N = '1' a n d b it B R G H = '0'.
RECEPCIÓN SÍNCRONA
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 34 de 58
LOS REGISTROS DE CONTROL Y DE ESTADO DE LA SCI
Ahora que conocemos los dos modos de funcionamiento de la interfaz serie asíncrona o
SCI, podemos examinar el papel de los diversos bits de estado y de control de sus
registros internos. En primer lugar, vamos a ver el registro de estado TXSTA en el que
cada bit tiene el significado particular que sigue.
R /W -0 R /W -0 R /W -0 R /W -0 U -0 R /W -0 R -1 R /W -0
CSRC TX9 TXEN SYNC — BR G H TRMT T X 9D R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: C S R C : C lo c k S o u rc e S e le c t b it
A s y n c h ro n o u s m o d e
D o n ’t c a re
S y n c h ro n o u s m o d e
1 = M a s te r m o d e (C lo c k g e n e ra te d in te rn a lly fro m B R G )
0 = S la v e m o d e (C lo c k fro m e x te rn a l s o u rc e )
b it 6: T X 9: 9-b it Tra n s m it E n a b le b it
1 = S e le c ts 9-b it tra n s m is s io n
0 = S e le c ts 8-b it tra n s m is s io n
b it 5: T X E N : Tra n s m it E n a ble b it
1 = Tra n s m it e n a b le d
0 = Tra n s m it d is a b le d
N o te : S R E N /C R E N o v e rrid e s T X E N in S Y N C m o d e .
b it 4: S Y N C : U S A R T M o d e S e le c t b it
1 = S y n c h ro n o u s m o d e
0 = A s y n c h ro n o u s m o d e
b it 3: U n i m p l e m e n te d : R e a d a s '0'
b it 2: B R G H : H ig h B a u d R a te S e le c t b it
A s y n c h ro n o u s m o d e
1 = H ig h s p e e d
0 = L ow spe e d
S y n c h ro n o u s m o d e
U n u s e d in th is m o d e
b it 1: T R M T : Tra n s m it S h ift R e g is te r S ta tu s b it
1 = T S R e m p ty
0 = T S R fu ll
b it 0: T X 9D : 9th b it o f tra n s m it d a ta . C a n b e p a rity b it.
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 35 de 58
El segundo registro principal que controla la SCI es el registro RCSTA, en el que cada bit
tiene el siguiente significado.
R /W -0 R /W -0 R /W -0 R /W -0 R /W -0 R -0 R -0 R -x
SPEN RX9 SREN C REN ADDEN FERR OERR R X 9D R = R e a d a b le b it
b it7 b it0 W = W rita b le b it
U = U n im p le m e n te 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: S P E N : S e ria l P o rt E n a b le b it
1 = S e ria l p o rt e n a b le d (C o n g u re s R C 7/R X /D T a n d R C 6/T X /C K p in s a s s e ria l p o rt p in s )
0 = S e ria l p o rt d is a b le d
b it 6: R X 9: 9-b it R e c e iv e E n a b le b it
1 = S e le c ts 9-b it re c e p tio n
0 = S e le c ts 8-b it re c e p tio n
b it 5: S R E N : S in g le R e c e iv e E n a b le b it
A s y n c h ro n o u s m o d e
D o n ’t c a re
S y n c h ro n o u s m o d e - m a s te r
1 = E n a b le s s in g le re c e iv e
0 = D is a b le s s in g le re c e iv e
T h is b it is c le a re d a fte r re c e p tio n is c o m p le te .
S y n c h ro n o u s m o d e - s la v e
U n u s e d in th is m o d e
b it 4: C R E N : C o n tin u o u s R e c e iv e E n a b le b it
A s y n c h ro n o u s m o d e
1 = E n a b le s c o n tin u o u s re c e iv e
0 = D is a b le s c o n tin u o u s re c e iv e
S y n c h ro n o u s m o d e
1 = E n a b le s c o n tin u o u s re c e iv e u n til e n a b le b it C R E N is c le a re d (C R E N o v e rrid e s S R E N )
0 = D is a b le s c o n tin u o u s re c e iv e
b it 3: A D D E N : A d d re s s D e te c t E n a b le b it
A s y n c h ro n o u s m o d e 9-b it (R X 9 = 1)
1 = E n a b le s a d d re s s d e te c tio n , e n a b le in te rru p t a n d lo a d o f th e re c e iv e b u rffe r w h e n R S R <8> is s e t
0 = D is a b le s a d d re s s d e te c tio n , a ll b y te s a re re c e iv e d , a n d n in th b it c a n b e u s e d a s p a rity b it
b it 2: F E R R : F ra m in g E rro r b it
1 = F ra m in g e rro r (C a n b e u p d a te d b y re a d in g R C R E G re g is te r a n d re c e iv e n e x t v a lid b y te )
0 = N o fra m in g e rro r
b it 1: O E R R : O v e rru n E rro r b it
1 = O v e rru n e rro r (C a n b e c le a re d b y c le a rin g b it C R E N )
0 = N o o v e rru n e rro r
b it 0: R X 9D : 9th b it o f re c e iv e d d a ta (C a n b e p a rity b it)
SYNC B R G H = 0 (Lw o S p e e d ) B R G H = 1 (H i g h S p e e d )
0 (A s y n c h ro n o u s ) B a u d R a te = F O S C /(64(X +1)) B a u d R a te = F O S C /(16(X +1))
1 (S y n c h ro n o u s ) B a u d R a te = F O S C /(4(X +1)) NA
X = v a lu e in S P B R G (0 to 255)
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 36 de 58
En modo asíncrono, definido por la puesta a 0 del bit SYNC del registro TXSTA, se utilizan
dos fórmulas de cálculo dependiendo del estado del bit BRGH de este mismo registro.
En modo síncrono definido por la puesta a uno de este mismo bit SYNC, sólo se usa una
fórmula. En este modo, el bit BRG no se utiliza.
En las relaciones indicadas en la tabla anterior, evidentemente, la X indica el contenido
del registro SPRBG. La siguiente tabla proporciona algunos valores típicos para diferentes
configuraciones y diversas frecuencias de reloj, así como los porcentajes de error
obtenidos por este procedimiento con respecto a las velocidades teóricas
F O S C = 20 M H z 16 M H z 10 M H z 7.15909 M H z
BAU D S PBR G S PBR G S PBR G S PBR G
R AT E % v a lu e % v a lu e % v a lu e % v a lu e
KBAU D KBAU D KBAU D KBAU D
(K ) ERROR (d e c im a l) ERROR (d e c im a l) ERROR (d e c im a l) ERROR (d e c im a l)
0.3 NA - - NA - - NA - - NA - -
1.2 NA - - NA - - NA - - NA - -
2.4 NA - - NA - - NA - - NA - -
9.6 NA - - NA - - 9.766 +1.73 255 9.622 +0.23 185
19.2 19.53 +1.73 255 19.23 +0.16 207 19.23 +0.16 129 19.24 +0.23 92
76.8 76.92 +0.16 64 76.92 +0.16 51 75.76 -1.36 32 77.82 +1.32 22
96 96.15 +0.16 51 95.24 -0.79 41 96.15 +0.16 25 94.20 -1.88 18
300 294.1 -1.96 16 307.69 +2.56 12 312.5 +4.17 7 298.3 -0.57 5
500 500 0 9 500 0 7 500 0 4 NA - -
H IG H 5000 - 0 4000 - 0 2500 - 0 1789.8 - 0
LO W 19.53 - 255 15.625 - 255 9.766 - 255 6.991 - 255
F O S C = 5.0688 M H z 4 MHz 3.579545 M H z 1 MHz 32.768 k H z
BAU D S PBR G S PBR G S PBR G S PBR G S PBR G
R AT E KBAU D % v a lu e KBAU D % v a lu e KBAU D % v a lu e KBAU D % v a lu e KBAU D % v a lu e
(K ) E R R O R (d e c im a l) E R R O R (d e c im a l) E R R O R (d e c im a l) E R R O R (d e c im a l) E R R O R (d e c im a l)
0.3 NA - - NA - - NA - - NA - - 0.303 +1.14 26
1.2 NA - - NA - - NA - - 1.202 +0.16 207 1.170 -2.48 6
2.4 NA - - NA - - NA - - 2.404 +0.16 103 NA - -
9.6 9.6 0 131 9.615 +0.16 103 9.622 +0.23 92 9.615 +0.16 25 NA - -
19.2 19.2 0 65 19.231 +0.16 51 19.04 -0.83 46 19.24 +0.16 12 NA - -
76.8 79.2 +3.13 15 76.923 +0.16 12 74.57 -2.90 11 83.34 +8.51 2 NA - -
96 97.48 +1.54 12 1000 +4.17 9 99.43 +3.57 8 NA - - NA - -
300 316.8 +5.60 3 NA - - 298.3 -0.57 2 NA - - NA - -
500 NA - - NA - - NA - - NA - - NA - -
H IG H 1267 - 0 100 - 0 894.9 - 0 250 - 0 8.192 - 0
LO W 4.950 - 255 3.906 - 255 3.496 - 255 0.9766 - 255 0.032 - 255
EL CONVERTIDOR ANALÓGICO/DIGITAL
111
R E 2 /A N 7 (1 )
110
R E 1 /A N 6 (1 )
101
R E 0 /A N 5 (1 )
100
R A 5 /A N 4
V A IN
(I n p u t v o lta g e ) 011
R A 3 /A N 3 /V R E F +
010
A /D R A 2 /A N 2 /V R E F -
C o n v e r te r
001
R A 1 /A N 1
VDD 000
R A 0 /A N 0
X000 o r
V REF+ X010 o r
X100
(R e fe re n c e
v o lta g e ) X001 o r
X011 o r
X101
P C F G 3 :P C F G 0
00XX o r 0X0X o r
1000 o r 1010 o r
1100
V REF-
1001 o r
(R e fe re n c e 1011 o r
v o lta g e ) 1101
VSS
P C F G 3 :P C F G 0
N o te 1: N o t a v a ila b le o n 2 8 -p in d e v ic e s .
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 38 de 58
Las líneas de entrada del convertidor se comparten con las líneas del puerto A y del
puerto E, las cuales deben estar configuradas como entradas cuando se utilizan para
conversión. En caso contrario, el convertidor leerá el nivel lógico presente en estos pines.
El convertidor utiliza un técnica de muestreo y retención que equivale a cargar una
capacidad con la tensión que hay que medir. Por esto, el multiplexor de la figura anterior
no tiene necesidad de releer permanentemente la entrada seleccionada como entrada del
conversor propiamente dicho, sino solamente durante el tiempo suficiente para cargar al
condensador. Este tiempo, denominado Tad, depende de la velocidad de conversión
deseada y de la frecuencia de reloj del PIC.
Precisado todo esto, podemos estudiar el contenido de los registros de control, lo que nos
facilitará el estudio del principio que hay que utilizar para programar a este convertidor.
El primer registro, denominado ADCON0, está formado por los siguientes bits:
R /W -0 R /W -0 R /W -0 R /W -0 R /W -0 R /W -0 U -0 R /W -0
ADC S1 ADC S0 C HS2 C HS1 C HS0 G O /D O N E — ADON R =R e a d a b le b it
b it7 b it0 W = W rita b le b it
U =U n im p le m e n te 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: A D C S 1: A D C S 0: A /D C o n v e rs io n C lo c k S e le c t b its
00 = F O S C /2
01 = F O S C /8
10 = F O S C /32
11 = F R C (c lo c k d e riv e d fro m a n R C o s c illa tio n )
b it 5-3: C H S 2: C H S 0: A n a lo g C h a n n e l S e le c t b its
000 = c h a n n e l 0, (R A 0/A N 0)
001 = c h a n n e l 1, (R A 1/A N 1)
010 = c h a n n e l 2, (R A 2/A N 2)
011 = c h a n n e l 3, (R A 3/A N 3)
100 = c h a n n e l 4, (R A 5/A N 4)
101 = c h a n n e l 5, (R E 0/A N 5)(1)
110 = c h a n n e l 6, (R E 1/A N 6)(1)
111 = c h a n n e l 7, (R E 2/A N 7)(1)
b it 2: G O /D O N E : A /D C o n v e rs io n S ta tu s b it
If A D O N = 1
1 = A /D c o n v e rs io n in p ro g re s s (s e ttin g th is b it s ta rts th e A /D c o n v e rs io n )
0 = A /D c o n v e rs io n n o t in p ro g re s s (T h is b it is a u to m a tic a lly c le a re d b y h a rd w a re w h e n th e A /D c o n v e r-
s io n is c o m p le te )
b it 1: U n i m p l e m e n te d : R e a d a s '0'
b it 0: A D O N : A /D O n b it
1 = A /D c o n v e rte r m o d u le is o p e ra tin g
0 = A /D c o n v e rte r m o d u le is s h u to ff a n d c o n s u m e s n o o p e ra tin g c u rre n t
N o te 1: T h e s e c h a n n e ls a re n o t a v a ila b le o n th e 28-p in d e v ic e s .
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 39 de 58
Registro ADCON1 - Dirección 0x9F
U -0 U -0 R /W -0 U -0 R /W -0 R /W -0 R /W -0 R /W -0
ADFM — — — PC FG 3 PC FG 2 PC FG 1 PC FG 0 R =R e a d a b le b it
b it7 b it0 W = W rita b le b it
U =U n im p le m e n te 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: A D F M : A /D R e s u lt fo rm a t s e le c t
1 = R ig h t J u s tie d . 6 m o s t s ig n ic a n t b its o f A D R E S H a re re a d a s ‘0’.
0 = L e ft J u s tie d . 6 le a s t s ig n ic a n t b its o f A D R E S L a re re a d a s ‘0’.
b it 6-4: U n i m p l e m e n te d : R e a d a s '0'
b it 3-0: P C F G 3: P C F G 0: A /D P o rt C o n g u ra tio n C o n tro l b it s
A D C l o ck S o u cr e (TA D ) D e v i c e F r e q u e n cy
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 40 de 58
Visto el contenido de estos registros, el principio de utilización del convertidor es muy
sencillo de comprender. En efecto, basta con proceder de la siguiente forma:
· Detectar el fin de la conversión, bien comprobando el paso a 0 de este mismo bit, bien
por la recepción de la interrupción que procede del convertidor, si se ha autorizado.
Después, es posible pedir la conversión de otra vía (o de la misma, por supuesto), pero
observe que es necesario esperar un tiempo igual, al menos, a 2 Tad.
Observe que también como, por una razón no precisada en la hojas de características, es
necesario no poner a 1 los bits ADON y GO/DONE con la misma instrucción, sino
proceder en dos veces.
La tabla anterior muestra cuáles son las distintas posibilidades ofertadas por la
programación de los bits ADCS0 y ADCS1 , en función de la frecuencia de reloj del PIC.
La descripción del módulo CC , hemos visto que era posible utilizarle para desencadenar
una conversión analógico/digital. Esto no cambia en nada los principios expuestos
anteriormente, ni el desarrollo general de la programación de una conversión. La única
diferencia es con esta exposición esta en hecho de que el bit GO/DONE no debe ponerlo
a 1 por sus medios, sino que se hace por medio de CC .
Si esta posibilidad de iniciación la utiliza CC , sin que el convertidor haya sido activado por
su bit ADONE, no tiene lugar ninguna acción por parte del convertidor, pero el
temporizador se pone a 0 como si la orden de inicio del convertidor hubiera sido dada.
Hay un último punto importante que señalar: el funcionamiento del modo SLEEP. Es
posible programar una conversión mientras que PIC está en modo SLEEP. En este caso,
hay que utilizar imperativamente como reloj de conversión el modo RC, ya que el reloj
normal del PIC está parado en este modo.
Cuando se selecciona este reloj, el convertidor espera un ciclo de instrucción antes de
comenzar la conversión, lo que permite ejecutar la instrucción SLEEP cuando la
conversión se termina, su resultado se coloca en ADRES, el bit GO/DONE se pone a 0 y
se genera una interrupción si estaba autorizada. En este caso, el PIC sale del modo
SLEEP gracias a ella. Si esta interrupción no estaba autorizada el convertidor permanece
en este estado hasta que el procesador sale del modo SLEEP, momento en que el
resultado y el bit GO/DONE siguen siendo válidos.
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 41 de 58
EL TEMPORIZADOR WATCHDOG
F ro m T M R 0 C lo c k S o u rc e
(F ig u re 5-2)
0
M P o s ts c a le r
1
W D T T im e r U
X 8
8 - to - 1 M U X P S 2:P S 0
PSA
W DT
E n a b le B it
To T M R 0 (F ig u re 5-2)
0 1
MUX PSA
W DT
N o te : P S A a n d P S 2:P S 0 a re b its in th e O P T IO N _R E G re g is te r. T im e -o u t
A d d re s s N am e B it 7 B it 6 B it 5 B it 4 B it 3 B it 2 B it 1 B it 0
2007h C o n g . b its (1) B O D E N (1) C P1 C P0 P W R T E (1) W DTE FO SC 1 FO SC 0
81h ,181h O P T IO N _R E G R BPU IN T E D G T 0C S T 0S E PSA PS2 PS1 PS0
L e g e n d : S h a d e d c e lls a re n o t u s e d b y th e W a tc h d o g T im e r.
N o te 1: S e e F ig u re 12-1 fo r o p e ra tio n o f th e s e b its .
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 42 de 58
Programa fuente:
El programa fuente esta compuesto por una sucesión de líneas de programa. Cada línea
de programa esta compuesta por 4 campos separados por uno o más espacios o
tabulaciones. Estos campos son:
El campo de parámetros puede contener uno o más parámetros separados por comas.
Los parámetros dependen de la instrucción o directiva. Pueden ser números o literales
que representen constantes o direcciones.
El campo de comentario debe comenzar con un caracter punto y coma. No necesita tener
espacios o tabulaciones separándolo del campo anterior, e incluso puede empezar en la
primer posición de la línea. El compilador ignora todo el texto que contenga la línea
después de un caracter punto y coma. De esta manera pueden incluirse líneas que
contengan solo comentarios, y es muy buena práctica hacer uso y abuso de esta
posibilidad para que los programas resulten autodocumentados.
Conjunto de instrucciones
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 43 de 58
En segundo lugar se analizaran las instrucciones que operan solo sobre el registro W y
que permiten cargarle una constante implícita o incluida literalmente en la instrucción
(literales). En tercer lugar se agrupan las instrucciones que operan sobre bits individuales
de los registros de la memoria interna. En cuarto lugar se clasifican las instrucciones de
control de flujo del programa, es decir las que permiten alterar la secuencia lineal de
ejecución de las instrucciones. Por último se agrupan unas pocas instrucciones que
llamaremos especiales, cuyas funciones o tipos de operandos son muy específicos y no
encajan en ninguna de las clasificaciones anteriores.
B y te -o rie n te d le re g is te r o p e ra tio n s
13 8 7 6 0
O PC O DE d f (F IL E #)
d = 0 fo r d e s tin a tio n W
d = 1 fo r d e s tin a tio n f F ie ld D e s c r i p ti o n
f = 7-b it le re g is te r a d d re s s
f R e g is te r le a d d re s s (0x 00 to 0x 7F )
W W o rk in g re g is te r (a c c u m u la to r)
B it-o rie n te d le re g is te r o p e ra tio n s
13 10 9 7 6 0
b B it a d d re s s w ith in a n 8-b it le re g is te r
O PC O DE b (B IT #) f (F IL E #) k L ite ra l e ld , c o n s ta n t d a ta o r la b e l
x D o n 't c a re lo c a tio n (= 0 o r 1)
b = 3-b it b it a d d re s s T h e a s s e m b le r w ill g e n e ra te c o d e w ith x = 0. It is th e
f = 7-b it le re g is te r a d d re s s re c o m m e n d e d fo rm o f u s e fo r c o m p a tib ility w ith a ll
M ic ro c h ip s o ftw a re to o ls .
L ite ra l a n d c o n tro l o p e ra tio n s d D e s tin a tio n s e le c t; d = 0: s to re re s u lt in W ,
d = 1: s to re re s u lt in le re g is te r f.
G e n e ra l D e fa u lt is d = 1
PC P ro g ra m C o u n te r
13 8 7 0
O PC O DE k (lite ra l)
TO T im e -o u t b it
PD P o w e r-d o w n b it
k = 8-b it im m e d ia te v a lu e
C A L L a n d G O T O in s tru c tio n s o n ly
13 11 10 0
O PC O DE k (lite ra l)
k = 11-b it im m e d ia te v a lu e
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 44 de 58
Resumen de instrucciones (clasificación según el fabricante en tres grupos):
En esta tabla de resumen del conjunto de instrucciones se pueden observar los mnemónicos, la explicación,
el número de ciclos, el código de máquina y los bits afectados del registro STATUS para cada una de las
instrucciones.
M n e m o n ic , D e s c r i p ti o n C y c le s 14-B i t O p c o d e S ta tu s N o te s
O p e ra n d s A f f e c te d
MSb LSb
B Y T E -O R IE N T E D F IL E R E G IS T E R O P E RT AIO N S
A DDW F f, d A dd W and f 1 00 0111 dfff ffff C ,D C ,Z 1,2
A NDW F f, d A N D W w ith f 1 00 0101 dfff ffff Z 1,2
C LRF f C le a r f 1 00 0001 lfff ffff Z 2
C LRW - C le a r W 1 00 0001 0xxx xxxx Z
COMF f, d C o m p le m e n t f 1 00 1001 dfff ffff Z 1,2
DEC F f, d D e c re m e n t f 1 00 0011 dfff ffff Z 1,2
DEC FSZ f, d D e c re m e n t f, S k ip if 0 1(2) 00 1011 dfff ffff 1,2,3
IN C F f, d In c re m e n t f 1 00 1010 dfff ffff Z 1,2
IN C F S Z f, d In c re m e n t f, S k ip if 0 1(2) 00 1111 dfff ffff 1,2,3
IO R W F f, d In c lu s iv e O R W w ith f 1 00 0100 dfff ffff Z 1,2
MOVF f, d M ove f 1 00 1000 dfff ffff Z 1,2
MOVW F f M o v e W to f 1 00 0000 lfff ffff
NOP - N o O p e ra tio n 1 00 0000 0xx0 0000
RLF f, d R o ta te L e ft f th ro u g h C a rry 1 00 1101 dfff ffff C 1,2
RRF f, d R o ta te R ig h t f th ro u g h C a rry 1 00 1100 dfff ffff C 1,2
SUBW F f, d S u b tra c t W fro m f 1 00 0010 dfff ffff C ,D C ,Z 1,2
SW A PF f, d S w a p n ib ble s in f 1 00 1110 dfff ffff 1,2
XORW F f, d E x c lu s iv e O R W w ith f 1 00 0110 dfff ffff Z 1,2
B IT-O R IE N T E D F IL E R E G IS T E R O P E RT AIO N S
BC F f, b B it C le a r f 1 01 00bb bfff ffff 1,2
BSF f, b B it S e t f 1 01 01bb bfff ffff 1,2
BTFSC f, b B it Te s t f, S k ip if C le a r 1 (2) 01 10bb bfff ffff 3
BTFSS f, b B it Te s t f, S k ip if S e t 1 (2) 01 11bb bfff ffff 3
L IT E R A L A N D C O N T OR L O P E R AT IO N S
A D D LW k A d d lite ra l a n d W 1 11 111x kkkk kkkk C ,D C ,Z
A N D LW k A N D lite ra l w ith W 1 11 1001 kkkk kkkk Z
C A LL k C a ll s u b ro u tin e 2 10 0kkk kkkk kkkk
C LRW DT - C le a r W a tc h d o g T im e r 1 00 0000 0110 0100 T O ,P D
G O TO k G o to a d d re s s 2 10 1kkk kkkk kkkk
IO R L W k In c lu s iv e O R lite ra l w ith W 1 11 1000 kkkk kkkk Z
M O V LW k M o v e lite ra l to W 1 11 00xx kkkk kkkk
R E T F IE - R e tu rn fro m in te rru p t 2 00 0000 0000 1001
R E T LW k R e tu rn w ith lite ra l in W 2 11 01xx kkkk kkkk
RETURN - R e tu rn fro m S u b ro u tin e 2 00 0000 0000 1000
SLEEP - G o in to s ta n d b y m o d e 1 00 0000 0110 0011 T O ,P D
S U B LW k S u b tra c t W fro m lite ra l 1 11 110x kkkk kkkk C ,D C ,Z
X O R LW k E x c lu s iv e O R lite ra l w ith W 1 11 1010 kkkk kkkk Z
N o te 1: W h e n a n I/O re g is te r is m o d ie d a s a fu n c tio n o f its e lf ( e .g ., MOVF PORTB, 1), th e v a lu e u s e d w ill b e th a t v a lu e p re s e n t
o n th e p in s th e m s e lv e s . F o r e x a m p le , if th e d a ta la tc h is '1' fo r a p in c o n g u re d a s in p u t a n d is d r iv e n lo w b y a n e x te rn a l
d e v ic e , th e d a ta w ill b e w ritte n b a c k w ith a '0'.
2: If th is in s tru c tio n is e x e c u te d o n th e T M R 0 re g is te r (a n d , w h e re a p p lic a b le , d = 1), th e p re s c a le r w ill b e c le a re d if a s s ig n e d
to th e T im e r0 M o d u le .
3: If P ro g ra m C o u n te r (P C ) is m o d ie d o r a c o n d itio n a l te s t is tr u e , th e in s tru c tio n re q u ire s tw o c y c le s . T h e s e c o n d c y c le is
e x e c u te d a s a N O P.
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 45 de 58
Modos de direccionamiento
La memoria interna se direcciona en forma directa por medio de los 7 bits "f" contenidos en
las instrucciones que operan sobre registros. De esta manera se puede direccionar
cualquier posición desde la 00 a la 7F. Como se vió en el capítulo correspondiente a los
mapas de memoria, las direcciones 80 a FF, 100 a 17F y 180 a 1FF corresponden a los
bancos de registros, el programador deberá asegurarse de haber programado los bits de
selección de banco en el registro STATUS.
El registro FSR, es un puntero para direccionamiento indirecto. La posición 00 del mapa de
RAM es la llamada dirección indirecta. Sí en cualquier instrucción se opera con la dirección
00, en realidad se estará operando con la dirección a donde apunte el contenido del FSR.
Por ejemplo si el FSR contiene el valor 14, una instrucción que opere sobre la dirección 0,
operara en realidad sobre la dirección 14. Se puede decir en este ejemplo que la posición
14 de memoria fue direccionada en forma indirecta a través del puntero FSR.
Ejemplo :
R P 1: R P 0 6 fro m o p c o d e 0 IR P 7 F S R re g is te r 0
b a n k s e le c t lo c a tio n s e le c t b a n k s e le c t lo c a tio n s e le c t
00 01 10 11
D a ta
M e m o ry (1 )
7F h FFh 17F h 1F F h
.
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 46 de 58
La instrucción GOTO dispone solo de 11 bits en el código de operación para especificar la
dirección de destino del salto. Al ejecutar una instrucción GOTO el microprocesador toma
los dos bits que restan para completar la dirección de 13 bits, de los bits 3 y 4 del registro
PCLATH. Ver la siguiente figura.
PC H PC L
12 8 7 0 In s tru c tio n w ith
PC P C L as
D e s tin a tio n
P C L AT H <4:0> 8
5 A LU
P C L AT H
PC H PC L
12 1 1 10 8 7 0
PC GOTO,CALL
P C L A T H <4:3> 11
2
O p c o d e <10:0 >
P C L AT H
Deberá tenerse en cuenta además que es posible avanzar de una página a otra en forma
automática cuando el PC se incrementa. Esto ocurre si el programa empieza en una
página y sigue en la siguiente. Sin embargo, al incrementarse el PC desde la última
posición de una página a la primera de la siguiente, los bits 3 y 4 del PCLATH no se
modifican, y por lo tanto sí se ejecuta una instrucción GOTO, CALL o alguna que actúe
sobre el PC, esta producirá un salto a la página anterior, a menos que el programador
tenga la precaución de actualizar el valor de dichos bits. Por este motivo es conveniente
dividir el programa en módulos o rutinas que estén confinados a una página.
En el caso de la instrucción CALL, el direccionamiento es igual y como el stack, tiene un
tamaño de 13 bits la dirección de retorno se almacena completa, pero al igual que al
pasar de una pagina a otra en un programa lineal, los bits 3 y 4 del PCLATH no se
actualizan.
Herramientas de desarrollo
¿Qué es el MPLAB ?
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 47 de 58
¿De que forma le ayuda el MPLAB ?
· Crear un proyecto.
· Agregar un archivo de programa fuente de proyecto.
· Ensamblar o compilar programas fuente.
· Editar programas fuente.
· Reconstruir todos los archivos fuente, o compilar un solo archivo.
· Depurar su programa fuente.
Software ensamblador:
El software ensamblador que presenta Microchip viene en dos presentaciones, una, para
entorno DOS llamado MPASM.EXE y la otra, para entorno Windows llamado
MPASMWIN.EXE
#DEFINE
ej. #define <nombre> [<valor a remplazar>]
explicación: declara una cadena de texto como substituto de otra
END
ej. end
explicación: indica fin de programa
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 48 de 58
EQU
ej. status equ 05
explicación: define una constante de ensamble
INCLUDE
ej. include <PIC16F84.h>
explicación: incluye en el programa un archivo con código fuente
ORG
ej. org 0x100
explicación: ensambla a partir de la dirección especificada
Para información más completa referirse a la guía rápida del MPASM.
Lista de pasos:
3. Salve el archivo (con extensión .ASM) una vez terminada su edición (menú
FILE...Save).
6. En la siguiente ventana Edit Project, hacer click en la sección Non-project files sobre el
nombre del archivo fuente realizado en los pasos 2 y 3.
7. Haga click en el botón <=add y luego de que éste aparezca en la sección Project Files
haga click sobre el botón <OK>.
10. En esta etapa se realiza en forma automática el ensamble de nuestro programa fuente
y el vaciado de éste en memoria de simulación. El proceso de ensamble generará un
archivo de errores en caso de que estos existan, sí es así deben corregirse directamente
sobre el archivo fuente, salvar las correcciones y reconstruir el proyecto (menú
Project...Build All). <<<En esta etapa del proceso ya se tiene el entorno listo para la
simulación>>>
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 49 de 58
Vista del Entorno de Programación MPLAB
Simulación:
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 50 de 58
1 2 3 4
sa R15 470
D a a a D
sb R16 470 b b b
VCC sc R17 470 c c c
sd R18
APENDICE 1
470 d d d
C15 U5 se R19 470
100nF e e e
sf R20 470 f f f
2 15 sg R21 470
RA0/NA0 RC0/T1OSO/T1CKI g g g
3 16 sP R22 8 8 8
Circuito Propuesto
Común
Común
Común
1K RA2/NA2 RC2/CCP1
5 18
RA3/NA3 RC3/SCK/SCL
6 23
RA4/TOCKI RC4/SDI/SDI
7 24
RA5/AN4/SS RC5/SDO
25 TXD
RC6/TX/CK Q4 Q5 Q6
VCC sa 33 26 RXD
RB0/INT RC7/RX/CT
sb 34
RB1 R23
sc 35 19
R12 RB2 RD0/PSP0
sd 36 20 4K7 VCC
27K RB3 RD1/PSP1
se 37 21
RB4 RD2/PSP2 BC557 BC557 BC557
sf 38 22
RB5 RD3/PSP3 R24
sg 39 27
C RB6 RSD4/PSP4 C
sP 40 28 4K7
T1 RB7 RD5/PSP5
29
BC557 RD6/PSP6
1 30
R13 MCLR/VPP RD7/PSP7 R25
150K C6 13 8 4K7
OSC1/CLKIN RE0/RD/AN5
14 9
R14 15pF OSC2/CLKOUT RE1/WR/AN6
10
39K C10 RE2/CS/AN7
PIC16C74A
15pF X2
4Mhz VCC
L2
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba
VCC
22mHy
C14 U4
100nF C4 10uF MAX232EJE
2 I2
B V+ B
14 1
T1OUT
TXD 11 7 6
U6 T1IN T2OUT
+12V 10 2
1N4007 C12 MC7805T C2 T2IN C3
D1 7
B1 100nF 1 3 1 4 3
Vin +5V VCC C1+ C2+
1 8
2 C13 10uF 3 5 10uF 4
100nF C1- C2-
3 9
GND
RXD 12 13 5
BOR3 R1OUT R1IN
9 8
1N4007 C11 R2OUT R2IN
2
D2 C5
1000uF 6 DB9
V-
Macho PCB 90'
10uF
Title
A A
Página 51 de 58
APENDICE 2 - PIC16F87X
12.1 Instruction Descriptions
CLRW Clear W
Syntax: [ label ] CLRW
BTFSC Bit Test, Skip if Clear
Operands: None
Syntax: [label] BTFSC f,b
Operation: 00h → (W)
Operands: 0 ≤ f ≤ 127 1→Z
0≤b≤7
Status Affected: Z
Operation: skip if (f<b>) = 0
Description: W register is cleared. Zero bit (Z)
Status Affected: None is set.
Description: If bit ’b’ in register ’f’ is ’1’, the next
instruction is executed.
If bit ’b’, in register ’f’, is ’0’, the
next instruction is discarded, and
a NOP is executed instead, making
this a 2TCY instruction.
DECF Decrement f
Syntax: [label] DECF f,d INCF Increment f
Operands: 0 ≤ f ≤ 127 Syntax: [ label ] INCF f,d
d ∈ [0,1] Operands: 0 ≤ f ≤ 127
Operation: (f) - 1 → (destination) d ∈ [0,1]
Status Affected: Z Operation: (f) + 1 → (destination)
Description: Decrement register ’f’. If ’d’ is 0, Status Affected: Z
the result is stored in the W regis- Description: The contents of register ’f’ are
ter. If ’d’ is 1, the result is stored incremented. If ’d’ is 0, the result
back in register ’f’. is placed in the W register. If ’d’ is
1, the result is placed back in reg-
ister ’f’.
MOVWF Move W to f
IORWF Inclusive OR W with f Syntax: [ label ] MOVWF f
Syntax: [ label ] IORWF f,d Operands: 0 ≤ f ≤ 127
Operands: 0 ≤ f ≤ 127 Operation: (W) → (f)
d ∈ [0,1]
Status Affected: None
Operation: (W) .OR. (f) → (destination)
Description: Move data from W register to reg-
Status Affected: Z ister 'f'.
Description: Inclusive OR the W register with
register 'f'. If 'd' is 0 the result is
placed in the W register. If 'd' is 1
the result is placed back in regis-
ter 'f'.
NOP No Operation
Syntax: [ label ] NOP
MOVF Move f Operands: None
Syntax: [ label ] MOVF f,d Operation: No operation
Operands: 0 ≤ f ≤ 127 Status Affected: None
d ∈ [0,1]
Description: No operation.
Operation: (f) → (destination)
Status Affected: Z
Description: The contents of register f are
moved to a destination dependant
upon the status of d. If d = 0, des-
tination is W register. If d = 1, the
destination is file register f itself. d
= 1 is useful to test a file register
since status flag Z is affected.
RETFIE Return from Interrupt RLF Rotate Left f through Carry
Syntax: [ label ] RETFIE Syntax: [ label ] RLF f,d
Operands: None Operands: 0 ≤ f ≤ 127
Operation: TOS → PC, d ∈ [0,1]
1 → GIE Operation: See description below
Status Affected: None Status Affected: C
Description: The contents of register ’f’ are
rotated one bit to the left through
the Carry Flag. If ’d’ is 0, the
result is placed in the W register.
If ’d’ is 1, the result is stored back
in register ’f’.
C Register f
Description: Subtract (2’s complement method) Description: Exclusive OR the contents of the
W register from register 'f'. If 'd' is 0, W register with register 'f'. If 'd' is
the result is stored in the W regis- 0, the result is stored in the W
ter. If 'd' is 1, the result is stored register. If 'd' is 1, the result is
back in register 'f'. stored back in register 'f'.
El Presente apunte ha sido concebido para uso de los alumnos durante el curso Nivel I de
microcontroladores de la familia flash PIC16F87X dictado por el docente OSCAR CELIS.
Bibliografia
La impresión está solo permitida para la CEE - UTN Facultad Regional Córdoba Página 58 de 58