Escolar Documentos
Profissional Documentos
Cultura Documentos
MICROCHIP TECHNOLOGY
NDICE
Arquitectura Harvard vs. Arquitectura Von Neuman
Memoria de Programa
Contador de Programa
Stack (Pila)
Registro STATUS
Registros Especiales
10
10
11
Temporizador 0
12
Interrupciones
13
19
Los Temporizadores
24
27
31
38
El Temporizador WDT
42
43
Conjunto de Instrucciones
43
Modos de Direccionamiento
46
Herramientas de desarrollo
47
Simulacin
50
Apndice 1
51
Apndice 2
52
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 02 de 58
Pgina 03 de 58
a) que el tamao de las instrucciones no esta relacionado con el de los datos, y por lo
tanto puede ser optimizado para que cualquier instruccin ocupe una sola posicin 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 operacin.
Una pequea 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 fsicamente en
la memoria de programa (por ejemplo en la EPROM de un microprocesador).
P ro g ra m
Bus
P O R TA
RAM
F ile
R e g is te rs
8 L e v e l S ta c k
(1 3 -b it)
14
D a ta B u s
P ro g ra m C o u n te r
FLA S H
R A M A d d r (1 )
PO RTB
A ddr M U X
In s tru c tio n re g
D ire c t A d d r
In d ire c t
A ddr
F S R re g
S TA T U S re g
8
3
P o w e r-u p
T im e r
In s tru c tio n
D ecode &
C o n tro l
T im in g
G e n e ra tio n
O S C 1 /C L K IN
O S C 2 /C L K O U T
O s c illa to r
S ta r t-u p T im e r
P o w e r-o n
R eset
PO RTC
MUX
A LU
8
W a tc h d o g
T im e r
B ro w n -o u t
R eset
R
R
R
R
R
R
A 0 /A N 0
A 1 /A N 1
A 2 /A N 2
A 3 /A N 3 /V R E F
A 4 /T 0 C K I
A 5 /A N 4 /S S
R
R
R
R
R
R
R
R
B 0 /IN T
B1
B2
B 3 /P G M
B4
B5
B 6 /P G C
B 7 /P G D
R
R
R
R
R
R
R
R
C
C
C
C
C
C
C
C
0 /T 1 O S O /T 1 C K I
1 /T 1 O S I/C C P 2
2 /C C P 1
3 /S C K /S C L
4 /S D I/S D A
5 /S D O
6 /T X /C K
7 /R X /D T
PO RTD
W re g
R D 7 /P S P 7 :R D 0 /P S P 0
In -C irc u it
D e bugge r
L o w -V o lta g e
P ro g ra m m in g
P a ra lle l S la v e P o r t
PO RTE
R E 0 /A N 5 /R D
R E 1 /A N 6 /W R
M C LR
T im e r0
T im e r1
D a ta E E P R O M
N o te 1 :
C C P 1 ,2
VDD, VSS
T im e r2
S y n c h ro n o u s
S e ria l P o r t
R E 2 /A N 7 /C S
1 0 -b it A /D
USART
D ev ic e
P ro g ra m
FLA SH
D a ta M e m o ry
P IC 1 6 F 8 7 4
4K
1 9 2 B y te s
D a t a E E P RO M
1 2 8 B y te s
P IC 1 6 F 8 7 7
8K
3 6 8 B y te s
2 5 6 B y te s
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 04 de 58
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0A h
0B h
0C h
0D h
0E h
0F h
10h
11h
12h
13h
14h
15h
16h
17h
18h
19h
1A h
1B h
1C h
1D h
1E h
1F h
20h
G e n e ra l
P u rp o s e
R e g is te r
O P T IO N _R E G
PC L
S TA T U S
FSR
T R IS A
T R IS B
T R IS C
T R IS D (1 )
T R IS E (1 )
P C L AT H
IN T C O N
P IE 1
P IE 2
PC O N
SSPC O N2
PR 2
S S PA D D
S S P S TA T
T X S TA
S PBR G
ADRESL
ADC ON1
7F h
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8A h
8B h
8C h
8D h
8E h
8F h
90h
91h
92h
93h
94h
95h
96h
97h
98h
99h
9A h
9B h
9C h
9D h
9E h
9F h
In d ire c t a d d r. (*)
TMR0
PC L
S TA T U S
FSR
PO RTB
P C L AT H
IN T C O N
E E D A TA
EEADR
E E D AT H
EEADRH
G e n e ra l
P u rp o s e
R e g is te r
1 6 B y te s
A 0h
G e n e ra l
P u rp o s e
R e g is te r
8 0 B y te s
9 6 B y te s
Bank 0
In d ire c t a d d r. (*)
accesses
7 0 h -7 F h
Bank 1
EFh
F 0h
FFh
G e n e ra l
P u rp o s e
R e g is te r
8 0 B y te s
accesses
7 0 h -7 F h
Bank 2
100h
101h
102h
103h
104h
105h
106h
107h
108h
109h
10A h
10B h
10C h
10D h
10E h
10F h
110h
111h
112h
113h
114h
115h
116h
117h
118h
119h
11A h
11B h
11C h
11D h
11E h
11F h
120h
16F h
170h
17F h
In d ire c t a d d r. (*)
O P T IO N _R E G
PC L
S TA T U S
FSR
T R IS B
P C L AT H
IN T C O N
EEC ON1
EEC ON2
R e s e rv e d (2 )
R e s e rv e d (2 )
G e n e ra l
P u rp o s e
R e g is te r
1 6 B y te s
180h
181h
182h
183h
184h
185h
186h
187h
188h
189h
18A h
18B h
18C h
18D h
18E h
18F h
190h
191h
192h
193h
194h
195h
196h
197h
198h
199h
19A h
19B h
19C h
19D h
19E h
19F h
1A 0h
G e n e ra l
P u rp o s e
R e g is te r
8 0 B y te s
accesses
70h - 7F h
Bank 3
1E F h
1F 0h
1F F h
Pgina 05 de 58
Memoria de Programa
Organizacin
La memoria de programa, que en los PIC16F87X puede ser de 2K, 4K u 8K instrucciones,
debe ser considerada a los efectos de la programacin, como compuesta por secciones o
pginas de 2K posiciones. Esto se debe, como se ver, a las limitaciones de
direccionamiento de las instrucciones de salto
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 06 de 58
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
Aritmtica y Lgica (ALU), y por lo tanto ste es siempre uno de los dos operandos de
cualquier instruccin. Por convencin, las instrucciones de simple operando (borrar,
incrementar, decrementar, complementar), actan sobre el acumulador. La salida de la
ALU va solamente a la entrada del acumulador, por lo tanto el resultado de cualquier
operacin siempre quedara en este registro. Para operar sobre un dato de memoria, luego
realizar la operacin siempre hay que mover el acumulador a la memoria con una
instruccin adicional.
En los microcontroladores PIC, la salida de la ALU va al registro W y tambin 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 ocurra en el modelo tradicional con el acumulador. En las
instrucciones de simple operando el dato en este caso se toma de la memoria (tambin
por convencin). La gran ventaja de esta arquitectura es que permite un gran ahorro de
instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya
sea de simple o doble operando, puede dejarse en la misma posicin de memoria o en el
registro W, segn se seleccione con un bit de la misma instruccin. Las operaciones con
constantes provenientes de la memoria de programa (literales) se realizan solo sobre el
registro W.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 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 perifricos autocontenidos, y tambin 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 direccin de la prxima instruccin a ejecutar. Se
incrementa automticamente al ejecutar cada instruccin, de manera que la secuencia
natural de ejecucin del programa es lineal, una instruccin despus de la otra. Algunas
instrucciones que llamaremos de control, cambian el contenido del PC alterando la
secuencia lineal de ejecucin. 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 posicin de la memoria. Otras instrucciones de control son los
SKIP o "salteos" condicionales, que producen un incremento adicional del PC si se
cumple una condicin especifica, haciendo que el programa saltee, sin ejecutar, la
instruccin 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
direccin de arranque del programa es siempre la primera posicin de memoria de
programa. En esta posicin se deber poner la primera instruccin del programa.
A diferencia de la mayora de los microprocesadores convencionales, el PC es tambin
accesible al programador como registro de memoria interna de datos, en la posicin de
02. Es decir que cualquier instruccin comn que opere sobre registros puede ser
utilizada para alterar el PC y desviar la ejecucin del programa. El uso indiscriminado de
este tipo de instrucciones complica el programa y puede ser muy peligroso, ya que puede
producir comportamientos difciles de predecir. Sin embargo, algunas de esta
instrucciones utilizadas con cierto mtodo, 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 tambin 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 tamao
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 automtica, para
guardar las direcciones de retorno de subrrutinas e interrupciones. Cada posicin 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 limitacin 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 mximo de
8, siempre que no existan interrupciones habilitadas, en tal caso debern disminuir la
cantidades de rutinas anidadas en el main, porque de lo contrario se desbordar el Stack.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 08 de 58
Esto de hecho representa una traba para el programador y adems parece impedir o
dificultar la programacin estructurada, sin embargo es una buena solucin de
compromiso ya que estos microcontroladores estn diseados 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 tcnicas de
organizacin del programa que permiten mantener la claridad de la programacin
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 automticamente para guardar o
rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamada o
retorno de subrutinas, o cuando se produce una interrupcin o se ejecuta una instruccin
de retorno de ella.
Registro de Estado del Procesador (STATUS - Direccin 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
IR P
R /W -0
R P1
R /W -0
R P0
R -1
TO
R -1
PD
R /W -x
Z
R /W -x
DC
b it7
b it 7:
R /W -x
C
b it0
R = R e a d a b le b it
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
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 )
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:
b it 0:
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 09 de 58
Pgina 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 ledo es
directamente el estado del pin de entrada
40
39
R B 7/P G D
R B 6/P G C
R A 1/A N 1
R A 2/A N 2/V R E F -
38
R B5
37
R A 3/A N 3/V R E F +
36
R B4
R B 3/P G M
35
R B2
34
R B1
R E 0/R D /A N 5
33
R B 0/IN T
R E 1/W R /A N 6
9
10
32
31
VDD
30
R D 7/P S P 7
29
28
R D 6/P S P 6
R D 5/P S P 5
12
O S C 1/C L K IN
13
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
15
26
R C 7/R X /D T
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
17
24
R C 5/S D O
R C 3/S C K /S C L
R D 0/P S P 0
18
23
19
20
22
21
R C 4/S D I/S D A
R D 3/P S P 3
P IC 16F 877
P IC 16F 874
39
38
37
36
35
34
33
32
31
30
9
44
43
42
41
40
39
38
37
36
35
34
6
5
4
3
2
1
44
43
42
41
40
7
8
9
10
11
12
13
14
15
16
17
Q FP
R B 3/P G M
R B2
R B1
R B 0/IN T
VDD
VSS
R D 7/P S P 7
R D 6/P S P 6
R D 5/P S P 5
R D 4/P S P 4
R C 7/R X /D T
R C 7/R X /D T
R D 4/P S P 4
R D 5/P S P 5
R D 6/P S P 6
R D 7/P S P 7
VSS
VDD
R B 0/IN T
R B1
R B2
R B 3/P G M
R C 1/T 1O S I/C C P 2
R C 2/C C P 1
R C 3/S C K /S C L
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 4/S D I/S D A
R C 5/S D O
R C 6/T X /C K
NC
R A 4/T 0C K I
R A 5/A N 4/S S
R E 0/R D /A N 5
R E 1/W R /A N 6
R E 2/C S /A N 7
VDD
VSS
O 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
NC
18
19
20
21
22
23
24
25
26
27
282
PLC C
R D 2/P S P 2
R A 3/A N 3/V R E F +
R A 2/A N 2/V R E F R A 1/A N 1
R A 0/A N 0
M C L R /V P P /T H V
NC
R B 7/P G D
R B 6/P G C
R B5
R B4
NC
R D 1/P S P 1
R B 7/P G D
R B 6/P G C
R B5
R B4
R B 3/P G M
R B2
R B1
R B 0/IN T
VDD
VSS
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
R C 6 /T X /C K
R C 5 /S D O
R C 4 /S D I/S D A
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 3 /S C K /S C L
R C 2 /C C P 1
R C 1 /T 1 O S I/C C P 2
NC
VSS
VSS
28
27
26
25
24
23
22
21
20
19
18
17
16
15
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
1
2
3
4
5
6
7
8
9
10
11
P IC 16F 877
P IC 16F 874
33
32
31
30
29
28
27
26
25
24
23
12
13
14
15
16
17
18
19
20
21
22
11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
M C L R /V P P /T H V
R A 0/A N 0
R A 1/A N 1
R A 2/A N 2/V R E F R A 3/A N 3/V R E F +
R A 4/T 0C K I
R A 5/A N 4/S S
VSS
O 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 I
R C 1/T 1O S I/C C P 2
R C 2/C C P 1
R C 3/S C K /S C L
NC
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
VSS
VDD
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
NC
NC
R B4
R B5
R B 6 /P G C
R B 7 /P G D
M C L R /V P P /T H V
R A 0 /A N 0
R A 1 /A N 1
R A 2 /A N 2 /V R E F R A 3 /A N 3 /V R E F +
R E 2/C S /A N 7
VDD
P IC 16F 877/874
R A 4/T 0C K I
R A 5/A N 4/S S
D IP , S O IC
PIC16F876/873
M C L R /V P P /T H V
R A 0/A N 0
Pgina 11 de 58
R /W -1
IN T E D G
R /W -1
T 0C S
R /W -1
T 0S E
R /W -1
PSA
R /W -1
PS2
R /W -1
PS1
b it7
R /W -1
PS0
b it0
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
R = R e a d a b le b it
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 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
000
001
010
011
100
101
110
111
T M R 0 R a te
1
1
1
1
1
1
1
1
:
:
:
:
:
:
:
:
2
4
8
16
32
64
128
256
W D T R a te
1
1
1
1
1
1
1
1
:
:
:
:
:
:
:
:
1
2
4
8
16
32
64
128
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 12 de 58
P S out
1
1
R A 4/T 0C K I
p in
P ro g ra m m a ble
P re s c a le r
8
S y n c w ith
In te rn a l
c lo c k s
TMR0
P S out
(2 c y c le d e la y )
T 0S E
3
P S 2, P S 1, P S 0
PSA
T 0C S
N o te 1:
S e t in te rru p t
a g b it T 0IF
o n o v e ro w
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>).
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, asincrnico respecto
del programa, puede interrumpir la ejecucin de ste produciendo automticamente un
salto a una subrutina de atencin, de manera que pueda atender inmediatamente el
evento, y retomar luego la ejecucin 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 peridicamente (refresh de display, antirebote de
teclado, etc.), deteccin de pulsos externos, recepcin de datos, etc. Existen catorce
fuentes de interrupcin 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 interrupcin se
produce el mismo efecto que ocurrira si el programa tuviese un CALL 0004h en el punto
en que se produjo la interrupcin. En uno de los registros de control del sistema de
interrupciones existe un bit de habilitacin general de interrupciones GIE, que debe ser
programado en 1 para que las interrupciones puedan actuar. Al producirse una
interrupcin, este bit se borra automticamente para evitar nuevas interrupciones. La
instruccin RETFIE que se utiliza al final de la rutina de interrupcin, es idntica a un
retorno de subrutina, salvo que adems coloca en uno automticamente el bit GIE,
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 13 de 58
W a k e -u p (If in S L E E P m o d e )
T 0 IF
T 0 IE
R C IF
R C IE
IN T F
IN T E
T X IF
T X IE
S S P IF
S S P IE
In te rru p t to C P U
R B IF
R B 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
P IC 1 6 F 8 7 6 /8 7 3
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
C C P 2 IF
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
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 14 de 58
R /W -0
P E IE
R /W -0
T 0IE
R /W -0
IN T E
R /W -0
R B IE
R /W -0
T 0IF
R /W -0
IN T F
R /W -x
R B IF
b it0
R = R e a d a b le b it
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 gestin de los bits de este registro.
En primer lugar, cada indicador de interrupcin individual (RBIF, INTF, etc.) se debe poner
a 0 mediante software en el programa de tratamiento de la interrupcin correspondiente.
Como hemos visto en la figura 1.3.2, en el PIC16F87X slo hay disponible un vector de
interrupcin situado en la direccin 0004. A dicho programa de interrupcin le corresponde
comprobar estos bits para saber cul es el origen de la interrupcin.
Cuando llega una interrupcin, el PIC pone automticamente a 0 el bit GIE, de forma que
no se perturbe el tratamiento de la interrupcin en curso por otras interrupciones
eventuales. Este bits se pone automticamente a 1 al finalizar el programa de interrupcin
cuando se ejecuta la instruccin RETFIE.
Por ltimo, los bits de indicacin de interrupcin permanecen funcionales incluso cuando
las interrupciones correspondientes no se autorizan.
Debido a la incorporacin de una cantidad importante de perifricos 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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 15 de 58
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)
b it7
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 it0
b it 7:
b it 6:
b it 5:
b it 4:
b it 3:
b it 2:
b it 1:
b it 0:
R = R e a d a ble b it
W = W rita ble 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
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 16 de 58
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
b it0
R = R e a d a ble b it
W = W rita b le b it
- n = V a lu e a t P O R re s e t
b it 7:
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 17 de 58
b it7
R /W -0
(1)
U -0
R /W -0
E E IE
R /W -0
B C L IE
U -0
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:
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
U -0
R /W -0
C C P 2IE
b it0
U -0
R /W -0
C C P 2IF
b it0
R = R e a d a b le b it
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
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.
b it7
R /W -0
(1)
U -0
R /W -0
E E IF
R /W -0
B C L IF
U -0
R = R e a d a b le b it
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:
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 18 de 58
Q
VDD
WR
P o rt
CK
D a ta
bus
WR
PO RT
D a ta L a tc h
D
WR
T R IS
CK
T R IS L a tc h
R D T R IS
Q
CK
Q
N
I/O p in (1)
VSS
A n a lo g
in p u t
m ode
I/O p in (1)
D a ta L a tc h
WR
T R IS
CK
V ss
S c h m itt
Trig g e r
in p u t
b u ffe r
T R IS L a tc h
TTL
in p u t
b u ffe r
R D T R IS
Q
ENE N
EN
R D PO RT
T M R 0 c lo c k in p u t
To A /D C o n v e rte r
N o te 1:
R D PO RT
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
Pgina 19 de 58
EL PUERTO B
El puerto B es un puerto bidireccional de 8 bits completo, en le que slo una lnea se
comparte con otro recurso interno. Las lneas RB0-RB3 adoptan la estructura interna que
puede ver en la figura de la izquierda, mientras que las lneas RB4-RB7 tienen la
estructura de la figura derecha. El motivo de esto se encuentra en el hecho de que es
posible programar una interrupcin durante un cambio de estado de una cualquiera de las
lneas RB0-RB3. Si se utiliza esta posibilidad, el simple hecho de que cualquiera de las
lneas cambie de estado genera una interrupcin (ver la descripcin anterior del registro
INTCON). Tenga presente que slo las lneas programadas como entradas son
susceptibles de ser monitorizadas mediante este procedimiento.
VDD
R B P U (2)
w eak
P p u ll-u p
VDD
R B P U (2)
D a ta b u s
W R P o rt
w eak
P p u ll-u p
D a ta L a tc h
D
Q
W R P o rt
W R T R IS
TTL
In p u t
B u ffe r
CK
D a ta L a tc h
D
Q
I/O
p in (1)
CK
T R IS L a tc h
D
Q
I/O
p in (1)
CK
T R IS L a tc h
D
Q
W R T R IS
D a ta b u s
TTL
In p u t
B u ffe r
CK
R D T R IS
Q
ST
B u ffe r
L a tc h
D
R D T R IS
Q
R D P o rt
S e t R B IF
EN
R D P o rt
EN
F ro m o th e r
R B 7:R B 4 p in s
R B 0/IN T
D
R D P o rt
EN
S c h m itt Trig g e r
B u ffe r
Q1
R D P o rt
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 )
a n d c le a r th e R B P U b it (O P T IO N _R E G <7>).
Q3
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 )
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 lneas del puerto B dispone
de una resistencia de pull-up de alto valor conectada a la alimentacin. Esta resistencia
de pull-up puede activarse o no gracias al bit RBPU del registro OPTION (ver la
descripcin anterior de este registro al hablar del temporizador 0, al que afecta,
principalmente). La activacin o no de esta resistencia de pull-up es comn a todas las
lneas del puerto B. Adems, sta se desactiva automticamente durante un reset, as
como las lneas que estn configuradas como salida.
El sentido de trabajo de todas las lneas de este puerto se controla mediante el registro
TRISB, en el que un bit a 0 activa a la lnea correspondiente como salida, y un bit a 1 la
activa como entrada. Evidentemente, despus de un reset, todos los bits del registro
TRISB se ponen a 1.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 20 de 58
EL PUERTO C
El puerto C es un puerto bidireccional de 8 bits completo, en el que todas las lneas se
comparten con los dems recursos internos, segn la reparticin vista en la descripcin de
las seales disponibles en el circuito. A pesar de esto, cada una de las lneas de este
puerto adoptan la misma estructura, la cual se puede ver en la siguiente figura. se dispone
de un buffer CMOS clsico como salida, y de un trigger Schmitt como entrada.
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
P e rip h e ra l D a ta O u t
D a ta b u s
WR
PO RT
VDD
0
Q
1
CK
D a ta b u s
WR
PO RT
D
CK
I/O
p in (1)
Q
Q
S c h m itt
Trig g e r
P e rip h e ra l
Q
N o te 1:
2:
3:
1
CK
D
CK
I/O
p in (1)
Q
Q
T R IS L a tc h
VSS
VSS
R D T R IS
RD
PO RT
P e rip h e ra l in p u t
WR
T R IS
T R IS L a tc h
O E (3)
VDD
0
Q
D a ta L a tc h
D a ta L a tc h
WR
T R IS
P e rip h e ra l
RC0-RC2 / RC5-RC7
O E (3)
RD
PO RT
EN
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 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.
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
p e rip h e ra l s e le c t is a c tiv e .
S c h m itt
Trig g e r
R D T R IS
D
EN
S S P l in p u t
S c h m itt
Trig g e r
w ith
S M Bus
le v e ls
1
C KE
S S P S TA T <6>
N o te 1:
2:
3:
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 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.
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
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 lneas de este puerto es controlado por el registro
TRISC, en el que un bit a 0, activa a la lnea correspondiente como salida, y un bit a 1 la
activa como entrada. Evidentemente, despus de un reset, todos los bits del registro
TRISC se ponen a 1.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 21 de 58
EL PUERTO D
El puerto D es un puerto bidireccional de 8 bits completo, que no comparte sus lneas de
entrada/salida con ningn 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 a ta
bus
WR
PO RT
I/O p in (1)
CK
D a ta L a tc h
D
WR
T R IS
S c h m itt
Trig g e r
in p u t
b u ffe r
CK
T R IS L a tc h
R D T R IS
Q
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
WR
PO RT
RDx
p in
CK
TTL
Q
RD
PO RT
E NE N
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
W rite
TTL
CS
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 22 de 58
I/O p in (1)
CK
D a ta L a tc h
D
WR
T R IS
S c h m itt
Trig g e r
in p u t
b u ffe r
CK
T R IS L a tc h
R D T R IS
Q
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 lneas se pueden utilizar normalmente como las lneas de cualquier puerto paralelo,
o pueden servir de seales 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 continuacin
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 23 de 58
R -0
O BF
R /W -0
IB O V
R /W -0
PSPMO DE
U -0
R /W -1
b it2
R /W -1
b it1
R /W -1
b it0
b it0
R = R e a d a b le b it
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'
b it 2:
b it 1:
b it 0:
P O R T E D a ta D i r e c ti o n B i ts
LOS TEMPORIZADORES
Los PIC16F87X contienen tres temporizadores distintos, que disponen de diversas
posibilidades de funcionamiento, las cuales vamos a describir a continuacin. Cada
temporizador puede generar una interrupcin, como hemos visto en la presentacin de los
registros INTCON y PIR1. Los temporizadores 1 y 2 pueden adems asociarse a los
mdulos funcionales denominados y PWM, que permiten realizar la captura de datos
como entrada, la comparacin de datos como salida y la modulacin de impulsos en
duracin. Todas estas caractersticas son comparables a las que se encuentren
tradicionalmente en los temporizadores de mayores prestaciones de los micros de 8 bits.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 24 de 58
EL TEMPORIZADOR 0
El temporizador 0 es el ms 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 ledos. El contenido
de este registro vara de 0000 hasta FFFF, y vuelve a 0000 despus de su
desbordamiento, generando una interrupcin en ese momento, si sta se autoriza.
El esquema de la siguiente figura permite comprender los diversos modos de
direccionamiento de este temporizador.
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
c lo c k in p u t
T M R 1L
T M R 1H
1
T M R 1O N
o n /o ff
T 1O S C
R C 0/T 1O S O /T 1C K I
R C 1/T 1O S I
T 1S Y N C
1
T 1O S C E N
E n a b le
O s c illa to r(1)
P re s c a le r
1, 2, 4, 8
F o s c /4
In te rn a l
C lo c k
0
2
T 1C K P S 1:T 1C K P S 0
S y n c h ro n iz e
det
S L E E P in p u t
T M R 1C S
N o te 1:
Pgina 25 de 58
U -0
U -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
R /W -0
R /W -0
T M R 1C S
T M R 1O N
b it7
b it 7-6:
b it0
R = R e a d a b le b it
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
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 sita entre los pines RC0 y RC1, se realiza mediante la conexin de
un cuarzo entre dichos pines. La frecuencia mxima 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
b it T M R 2IF
TMR2
o u tp u t (1)
R eset
P o s ts c a le r
1:1 to 1:16
4
N o te 1:
EQ
T M R 2 re g
C o m p a ra to r
P re s c a le r
1:1, 1:4, 1:16
F o s c /4
P R 2 re g
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 26 de 58
El contenido de este registro se inicia en el valor 00 y aumenta con cada impulso del reloj
de instruccin, despus de la eventual divisin realizada por el prescaler. Cuando el
contenido se hace igual que el registro de periodo, se pone a 0 y se aplica una seal al
postdivisor. La salida de ste puede generar entonces una interrupcin, si ha sido
autorizada por el registro PIE1.
Los contenidos del prescaler y el postdivisor se ponen automticamente 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 - Direccin 0x12
U -0
R /W -0
R /W -0
R /W -0
R /W -0
R /W -0
R /W -0
T M R 2O N
T 2C K P S 1 T 2C K P S 0
b it7
b it 7:
R /W -0
b it0
R = R e a d a b le b it
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
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
00 = P re s c a le r
01 = P re s c a le r
1x = P re s c a le r
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
is 1
is 4
is 16
Pgina 27 de 58
La eleccin de estos eventos se realiza con los bits contenidos en el registro CCPxCON,
que veremos a continuacin.
Cuando tiene lugar una captura, se puede generar una interrupcin, 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 ledo, este
contenido se sustituye por el nuevo.
Observe tambin 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 diecisis flancos. Su contenido se pone 0 durante
un reset, as como durante cualquier parada del mdulo CCP.
Preste atencin al hecho de que, si vara el valor del prescaler con el fin de definir otras
condiciones de captura, se puede generar una falsa interrupcin, por lo que es
aconsejable detener el mdulo CCP antes de cambiar las condiciones de captura, para
evitar este fenmeno.
P re s c a le r
1, 4, 16
S e t a g b it C C P 1IF
(P IR 1<2>)
R C 2/C C P 1
P in
C C P R 1H
and
e d g e d e te c t
C a p tu re
E n a b le
T M R 1H
Q s
C C P R 1L
T M R 1L
C C P 1C O N <3:0>
Pgina 28 de 58
S
R
O u tp u t
L o g ic
m a tc h
C C P 1C O N <3:0>
M o d e S e le c t
C o m p a ra to r
T M R 1H
T M R 1L
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 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 C 2/C C P 1
(N o te 1)
TMR2
S
T R IS C <2>
C o m p a ra to r
C le a r T im e r,
C C P 1 p in a n d
la tc h D .C .
PR 2
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
b it7
b it 7-6:
b it0
R = R e a d a b le b it
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
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 30 de 58
T X R E G re g is te r
T X IE
8
MSb
LS b
(8)
P in B u ffe r
a n d C o n tro l
T S R re g is te r
In te rru p t
TXEN
R C 6/T X /C K p in
B a u d R a te C L K
TRMT
SPEN
S PBR G
B a u d R a te G e n e ra to r
TX9
T X 9D
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 31 de 58
S PBR G
64
or
16
B a u d R a te G e n e ra to r
FERR
OERR
C REN
MSb
S to p (8)
R S R re g is te r
LS b
0 S ta rt
R C 7/R X /D T
P in B u ffe r
a n d C o n tro l
D a ta
R e c o v e ry
RX9
8
SPEN
RX9
ADDEN
E n a b le
Load of
RX9
ADDEN
R S R <8>
R e c e iv e
B u ffe r
8
R X 9D
R C R E G re g is te r
F IF O
8
In te rru p t
R C IF
D a ta B u s
R C IE
Pgina 32 de 58
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 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
R C 7/R X /D T p in
B it 0
B it 1
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
B it 2
B it 7
B it 0
W ORD 1
B it 1
W ORD 2
B it 7
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
T X IF b it
W rite w o rd 2
T R M T bT itR M T
T X E N b it
'1'
'1'
TRANSMISIN SNCRONA
R C 7/R X /D T p in
b it0
b it2
b it1
b it6
b it7
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 7/R X /D T p in
b it0
b it1
b it2
b it3
b it4
b it5
b it6
b it7
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'.
RECEPCIN SNCRONA
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 34 de 58
R /W -0
CSRC
b it7
b it 7:
R /W -0
TX9
R /W -0
TXEN
R /W -0
SYNC
U -0
R /W -0
BR G H
R -1
TRMT
R /W -0
T X 9D
b it0
R = R e a d a b le b it
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
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:
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 35 de 58
El segundo registro principal que controla la SCI es el registro RCSTA, en el que cada bit
tiene el siguiente significado.
Registro RCSTA - Direccin 0x18
R /W -0
SPEN
b it7
R /W -0
RX9
R /W -0
SREN
R /W -0
C REN
R /W -0
ADDEN
R -0
FERR
R -0
OERR
R -x
R X 9D
b it0
R = R e a d a b le b it
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:
B R G H = 0 (Lw o S p e e d )
0
1
(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))
(S y n c h ro n o u s ) B a u d R a te = F O S C /(4(X +1))
X = v a lu e in S P B R G (0 to 255)
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
B R G H = 1 (H i g h S p e e d )
B a u d R a te = F O S C /(16(X +1))
NA
Pgina 36 de 58
En modo asncrono, definido por la puesta a 0 del bit SYNC del registro TXSTA, se utilizan
dos frmulas de clculo dependiendo del estado del bit BRGH de este mismo registro.
En modo sncrono definido por la puesta a uno de este mismo bit SYNC, slo se usa una
frmula. 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 tpicos para diferentes
configuraciones y diversas frecuencias de reloj, as como los porcentajes de error
obtenidos por este procedimiento con respecto a las velocidades tericas
BAU D
R AT E
(K )
0.3
1.2
2.4
9.6
19.2
76.8
96
300
500
H IG H
LO W
F O S C = 20 M H z
KBAU D
%
ERROR
NA
NA
NA
NA
19.53
76.92
96.15
294.1
500
5000
19.53
+1.73
+0.16
+0.16
-1.96
0
-
16 M H z
S PBR G
v a lu e
KBAU D
(d e c im a l)
255
64
51
16
9
0
255
F O S C = 5.0688 M H z
BAU D
R AT E
(K )
KBAU D
0.3
1.2
2.4
9.6
19.2
76.8
96
300
500
H IG H
LO W
NA
NA
NA
9.6
19.2
79.2
97.48
316.8
NA
1267
4.950
NA
NA
NA
NA
19.23
76.92
95.24
307.69
500
4000
15.625
%
ERROR
10 M H z
S PBR G
v a lu e
KBAU D
(d e c im a l)
+0.16
+0.16
-0.79
+2.56
0
-
207
51
41
12
7
0
255
4 MHz
NA
NA
NA
9.766
19.23
75.76
96.15
312.5
500
2500
9.766
%
ERROR
7.15909 M H z
S PBR G
v a lu e
%
KBAU D
(d e c im a l)
ERROR
+1.73
+0.16
-1.36
+0.16
+4.17
0
-
255
129
32
25
7
4
0
255
3.579545 M H z
NA
NA
NA
9.622
19.24
77.82
94.20
298.3
NA
1789.8
6.991
+0.23
+0.23
+1.32
-1.88
-0.57
-
1 MHz
S PBR G
v a lu e
(d e c im a l)
185
92
22
18
5
0
255
32.768 k H z
S PBR G
S PBR G
S PBR G
S PBR G
S PBR G
%
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
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
0
+3.13
+1.54
+5.60
-
131
65
15
12
3
0
255
NA
NA
NA
9.615
19.231
76.923
1000
NA
NA
100
3.906
+0.16
+0.16
+0.16
+4.17
-
103
51
12
9
0
255
NA
NA
NA
9.622
19.04
74.57
99.43
298.3
NA
894.9
3.496
+0.23
-0.83
-2.90
+3.57
-0.57
-
92
46
11
8
2
0
255
NA
1.202
2.404
9.615
19.24
83.34
NA
NA
NA
250
0.9766
+0.16
+0.16
+0.16
+0.16
+8.51
-
207
103
25
12
2
0
255
0.303
1.170
NA
NA
NA
NA
NA
NA
NA
8.192
0.032
+1.14
-2.48
-
26
6
0
255
F O S C = 20 M H z
KBAU D
%
ERROR
NA
1.221
2.404
9.469
19.53
78.13
104.2
312.5
NA
312.5
1.221
+1.73
+0.16
-1.36
+1.73
+1.73
+8.51
+4.17
-
16 M H z
S PBR G
v a lu e
(d e c im a l) K B A U D
255
129
32
15
3
2
0
0
255
F O S C = 5.0688 M H z
NA
1.202
2.404
9.615
19.23
83.33
NA
NA
NA
250
0.977
%
ERROR
10 M H z
S PBR G
v a lu e
(d e c im a l) K B A U D
+0.16
+0.16
+0.16
+0.16
+8.51
-
207
103
25
12
2
0
255
4 MHz
NA
1.202
2.404
9.766
19.53
78.13
NA
NA
NA
156.3
0.6104
%
ERROR
+0.16
+0.16
+1.73
+1.73
+1.73
-
3.579545 M H z
7.15909 M H z
S PBR G
v a lu e
%
(d e c im a l) K B A U D E R R O R
129
64
15
7
1
0
255
NA
1.203
2.380
9.322
18.64
NA
NA
NA
NA
111.9
0.437
+0.23
-0.83
-2.90
-2.90
-
1 MHz
S PBR G
v a lu e
(d e c im a l)
92
46
11
5
0
255
32.768 k H z
BAU D
R AT E
(K )
S PBR G
S PBR G
S PBR G
S PBR G
S PBR G
v a lu e
%
v a lu e
%
%
v a lu e
%
v a lu e
%
v a lu e
K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l)
0.3
1.2
2.4
9.6
19.2
76.8
96
300
500
H IG H
LO W
0.31
1.2
2.4
9.9
19.8
79.2
NA
NA
NA
79.2
0.3094
+3.13
0
0
+3.13
+3.13
+3.13
-
255
65
32
7
3
0
0
255
0.3005
1.202
2.404
NA
NA
NA
NA
NA
NA
62.500
3.906
-0.17
+1.67
+1.67
-
207
51
25
0
255
0.301
1.190
2.432
9.322
18.64
NA
NA
NA
NA
55.93
0.2185
+0.23
-0.83
+1.32
-2.90
-2.90
-
185
46
22
5
2
0
255
0.300
1.202
2.232
NA
NA
NA
NA
NA
NA
15.63
0.0610
+0.16
+0.16
-6.99
-
51
12
6
0
255
0.256
NA
NA
NA
NA
NA
NA
NA
NA
0.512
0.0020
-14.67
-
1
0
255
Pgina 37 de 58
BAU D
R AT E
(K )
9.6
19.2
38.4
57.6
115.2
250
625
1250
BAU D
R AT E
(K )
F O S C = 20 M H z
KBAU D
%
ERROR
9.615
19.230
37.878
56.818
113.636
250
625
1250
+0.16
+0.16
-1.36
-1.36
-1.36
0
0
0
16 M H z
S PBR G
v a lu e
(d e c im a l) K B A U D
129
64
32
21
10
4
1
0
%
ERROR
9.615
19.230
38.461
58.823
111.111
250
NA
NA
10 M H z
S PBR G
v a lu e
(d e c im a l) K B A U D
+0.16
+0.16
+0.16
+2.12
-3.55
0
-
103
51
25
16
8
3
-
7.16 M H z
S PBR G
v a lu e
%
(d e c im a l) K B A U D E R R O R
%
ERROR
9.615
18.939
39.062
56.818
125
NA
625
NA
+0.16
-1.36
+1.7
-1.36
+8.51
0
-
64
32
15
10
4
0
-
9.520
19.454
37.286
55.930
111.860
NA
NA
NA
S PBR G
v a lu e
(d e c im a l)
-0.83
+1.32
-2.90
-2.90
-2.90
-
46
22
11
7
3
-
F O S C = 5.068 M H z
KBAU D
4 MHz
3.579 M H z
1 MHz
32.768 k H z
S PBR G
S PBR G
S PBR G
S PBR G
S PBR G
v a lu e
v a lu e
v a lu e
v a lu e
%
%
%
%
%
v a lu e
E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l)
9.6
19.2
9.6
18.645
0
-2.94
32
16
NA
1.202
38.4
57.6
115.2
250
625
1250
39.6
52.8
105.6
NA
NA
NA
+3.12
-8.33
-8.33
-
7
5
2
-
2.403
9.615
19.231
NA
NA
NA
+0.17
+0.13
+0.16
+0.16
-
207
9.727
18.643
+1.32
-2.90
22
11
8.928
20.833
-6.99
+8.51
6
2
NA
NA
103
25
12
-
37.286
-2.90
55.930
-2.90
111.860 -2.90
223.721 -10.51
NA
NA
-
5
3
1
0
-
31.25
62.5
NA
NA
NA
NA
-18.61
+8.51
-
1
0
-
NA
NA
NA
NA
NA
NA
EL CONVERTIDOR ANALGICO/DIGITAL
El convertidor analgico digital incorporado al PIC16F87X4 es un modelo de 10 bits
precedido de un multiplexor de varias entradas. Como veremos a continuacin, el nmero
de entradas se puede definir por software por medio de los bits apropiados del registro de
control.
La referencia de tensin utilizada para esta conversin se puede definir como Vdd o la
tensin aplicada a RA3/AN3/Vref+, y tambien la referencia inferior como Vss o
RA2/AN2/Vref-. Adems, este convertidor ofrece la particularidad de poder funcionar
incluso en modo SLEEP.
En la siguiente figura se presenta su esquema interno y, aunque en esta figura no pueda
verlo, se utilizan cuatro registros: dos registros de control llamados ADCON0 y ADCON1, y
dos registros de resultados ADRESL y ADRESH
C H S 2 :C H S 0
111
110
101
100
V A IN
011
(I n p u t v o lta g e )
010
A /D
C o n v e r te r
001
000
VDD
R E 2 /A N 7 (1 )
R E 1 /A N 6 (1 )
R E 0 /A N 5 (1 )
R A 5 /A N 4
R A 3 /A N 3 /V R E F +
R A 2 /A N 2 /V R E F R A 1 /A N 1
R A 0 /A N 0
X000 o r
X010 o r
X100
V REF+
(R e fe re n c e
v o lta g e )
P C F G 3 :P C F G 0
X001 o r
X011 o r
X101
00XX o r 0X0X o r
1000 o r 1010 o r
1100
V REF(R e fe re n c e
v o lta g e )
VSS
1001 o r
1011 o r
1101
P C F G 3 :P C F G 0
N o te
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
1:
N o t a v a ila b le o n 2 8 -p in d e v ic e s .
Pgina 38 de 58
Las lneas de entrada del convertidor se comparten con las lneas del puerto A y del
puerto E, las cuales deben estar configuradas como entradas cuando se utilizan para
conversin. En caso contrario, el convertidor leer el nivel lgico presente en estos pines.
El convertidor utiliza un tcnica de muestreo y retencin que equivale a cargar una
capacidad con la tensin 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 conversin
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:
Registro ADCON0 - Direccin 0x1F
R /W -0
ADC S1
b it7
b it 7-6:
R /W -0
ADC S0
R /W -0
C HS2
R /W -0
C HS1
R /W -0
C HS0
R /W -0
G O /D O N E
U -0
R /W -0
ADON
b it0
R =R e a d a b le b it
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
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 rs 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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 39 de 58
U -0
ADFM
b it7
U -0
b it 7:
R /W -0
U -0
R /W -0
PC FG 3
R /W -0
PC FG 2
R /W -0
PC FG 1
R /W -0
PC FG 0
b it0
R =R e a d a b le b it
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
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
A
D
D
D
D
D
A
D
D
D
D
D
D
D
A
A
D
D
D
D
D
A
D
D
D
D
D
D
D
A
A
D
D
D
D
D
A
A
A
A
D
D
D
D
AN4
RA5
A
A
A
A
D
D
D
A
A
A
A
A
D
D
D
AN3
RA3
AN2
RA2
A
V REF+
A
V REF+
A
V REF+
D
V REF+
A
V REF+
V REF+
V REF+
V REF+
D
V REF+
A
A
A
A
D
D
D
V REFA
A
V REFV REFV REFD
V REF-
AN1
RA1
A
A
A
A
A
A
D
A
A
A
A
A
A
D
D
AN0
RA0
A
A
A
A
A
A
D
A
A
A
A
A
A
A
A
V REF+
V REF-
VDD
RA3
VDD
RA3
VDD
RA3
VDD
RA3
VDD
RA3
RA3
RA3
RA3
VDD
RA3
VSS
VSS
VSS
VSS
VSS
VSS
VSS
RA2
VSS
VSS
RA2
RA2
RA2
VSS
RA2
C HAN /
R EFS
8/0
7/1
5/0
4/1
3/0
2/1
0/0
6/2
6/0
5/1
4/2
3/2
2/2
1/0
1/2
A = A n a lo g in p u t
D = D ig ita l I/O
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 .
D e v i c e F r e q u e n cy
A D C l o ck S o u cr e (TA D )
O p e r a ti o n
A D C S 1: A D C S 0
2T O S C
00
100
8T O S C
01
400 n s (2)
32T O S C
10
1.6 s
RC
11
20 M H z
5 MHz
n s (2)
n s (2)
2-6
s (1, 4)
1.25 M H z
333.33 k H z
1.6 s
6 s
1.6 s
6.4 s
24 s (3)
6.4 s
25.6 s (3)
96 s (3)
400
2-6
s (1, 4)
2-6
s (1, 4)
2 - 6 s (1)
Legend:
N o te 1:
2:
3:
4:
S h a d e d c e lls a re a re o u ts id e o f re c o m m e n d e d ra n g e s .
T h e R C s o u rc e h a s a ty p ic a l T A D tim e o f 4 s .
T h e s e v a lu e s v io la te th e m in im u m re q u ire d T A D tim e .
F o r fa s te r c o n v e rs io n tim e s , th e s e le c tio n o f a n o th e r c lo c k s o u rc e is re c o m m e n d e d .
W h e n th e d e v ic e fre q u e n c ie s is g re a te r th a n 1 M H z , th e R C A /D c o n v e rs io n c lo c k s o u rc e is o n ly re c o m m e n d e d fo r s le e p o p e ra tio n .
5: F o r e x te n d e d v o lta g e d e v ic e s (L C ), p le a s e re fe r to E le c tric a l S p e c ic a tio n s s e c tio n .
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 40 de 58
Pgina 41 de 58
EL TEMPORIZADOR WATCHDOG
Como en el caso de los PIC 16C5X, PIC16CXX el temporizador watchdog de los
PIC16F87X est provisto con su propio oscilador autnomo de tipo RC interno, por lo que
no precisa ningn componente externo, y puede continuar funcionando incluso cuando el
reloj del PIC est parado, por ejemplo, durante una instruccin SLEEP.
Como todos sus homlogos, este temporizador cuenta permanentemente, y el hecho de
desbordarse, es decir, de llegar a FF hace que se genere un reset del microcontrolador. Si
el PIC est en modo SLEEP cuando se produce este desbordamiento, el efecto es que
salga de dicho modo.
Si no desea utilizar el watchdog, es posible invalidarlo mediante la escritura de un 0 en un
bit especfico del circuito durante su programacin. Este bit no forma parte del espacio
direccionable ni de los registros clsicos, por lo que no lo habr visto en ninguna de las
figuras anteriores. No obstante, todos los programadores del PIC saben acceder a l.
El tiempo de desbordamiento tpico de este temporizador es de 18 ms, aunque puede
variar un poco con la tensin de alimentacin y la temperatura.
Si este tiempo no es bastante largo, el predivisor del que hemos hablado para el
temporizador 0 se puede asignar al temporizador watchdog gracias al bit PSA del registro
OPTION (ver la descripcin de este registro en el apartado dedicado al temporizador 0).
En estas condiciones, las tasas de predivisin definidas por este mismo registro varan,
siendo el mximo permitido 128, con lo que es posible obtener tiempos de
desbordamiento que llegan a 2,5 s.
Las instrucciones CLRWDT y SLEEP ponen a 0 el temporizador watchdog, y a 1 el bit TO
del registro de estado (ver la descripcin de este registro al principio del captulo). Esto
permite evitar que se generen resets indeseados cuando el registro est, por ejemplo, en
modo SLEEP. Estas dos instrucciones ponen a 0 tambin al predivisor, si esta asignado al
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
W D T T im e r
P o s ts c a le r
M
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
W DT
T im e -o u t
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.
A d d re s s
N am e
2007h
C o n g . b its
81h ,181h
O P T IO N _R E G
PSA
B it 7
B it 6
B it 5
B it 4
B it 3
B it 2
B it 1
B it 0
(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
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 impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 42 de 58
Programa fuente:
El programa fuente esta compuesto por una sucesin de lneas de programa. Cada lnea
de programa esta compuesta por 4 campos separados por uno o ms espacios o
tabulaciones. Estos campos son:
[Etiqueta]
Comando
[Operando(s)]
[;Comentario]
Conjunto de instrucciones
El conjunto de instrucciones de los microprocesadores PIC 16F87X consiste en un
pequeo repertorio de solo 35 instrucciones de 14 bits, que pueden ser agrupadas para
su estudio en tres a cinco grupos. En este curso se ha optado por clasificarlas, desde el
punto de vista del programador, en cinco categoras bien definidas de acuerdo con la
funcin y el tipo de operandos involucrados. En primer lugar se agrupan las instrucciones
que operan con bytes y que involucran algn registro de la memoria interna.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 43 de 58
En segundo lugar se analizaran las instrucciones que operan solo sobre el registro W y
que permiten cargarle una constante implcita o incluida literalmente en la instruccin
(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
ejecucin de las instrucciones. Por ltimo se agrupan unas pocas instrucciones que
llamaremos especiales, cuyas funciones o tipos de operandos son muy especficos 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
O PC O DE
0
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 = 7-b it le re g is te r a d d re s s
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
O PC O DE
b (B IT #)
F ie ld
D e s c r i p ti o n
R e g is te r le a d d re s s (0x 00 to 0x 7F )
W
b
k
x
W o rk in g re g is te r (a c c u m u la to r)
B it a d d re s s w ith in a n 8-b it le re g is te r
L ite ra l e ld , c o n s ta n t d a ta o r la b e l
D o n 't c a re lo c a tio n (= 0 o r 1)
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
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 .
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.
D e fa u lt is d = 1
P ro g ra m C o u n te r
0
f (F IL E #)
b = 3-b it b it a d d re s s
f = 7-b it le re g is te r a d d re s s
L ite ra l a n d c o n tro l o p e ra tio n s
G e n e ra l
13
O PC O DE
k (lite ra l)
PC
TO
PD
k = 8-b it im m e d ia te v a lu e
T im e -o u t b it
P o w e r-d o w n b it
C A L L a n d G O T O in s tru c tio n s o n ly
13
11
O PC O DE
10
0
k (lite ra l)
k = 11-b it im m e d ia te v a lu e
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 44 de 58
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
MSb
LSb
S ta tu s
A f f e c te d
N o te s
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
A NDW F
C LRF
C LRW
COMF
DEC F
DEC FSZ
IN C F
IN C F S Z
IO R W F
MOVF
MOVW F
NOP
RLF
RRF
SUBW F
SW A PF
XORW F
f, d
f, d
f
f, d
f, d
f, d
f, d
f, d
f, d
f, d
f
f, d
f, d
f, d
f, d
f, d
A dd W and f
A N D W w ith f
C le a r f
C le a r W
C o m p le m e n t f
D e c re m e n t f
D e c re m e n t f, S k ip if 0
In c re m e n t f
In c re m e n t f, S k ip if 0
In c lu s iv e O R W w ith f
M ove f
M o v e W to f
N o O p e ra tio n
R o ta te L e ft f th ro u g h C a rry
R o ta te R ig h t f th ro u g h C a rry
S u b tra c t W fro m f
S w a p n ib ble s in f
E x c lu s iv e O R W w ith f
1
1
1
1
1
1
1(2)
1
1(2)
1
1
1
1
1
1
1
1
1
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
0111
0101
0001
0001
1001
0011
1011
1010
1111
0100
1000
0000
0000
1101
1100
0010
1110
0110
dfff
dfff
lfff
0xxx
dfff
dfff
dfff
dfff
dfff
dfff
dfff
lfff
0xx0
dfff
dfff
dfff
dfff
dfff
ffff
ffff
ffff
xxxx
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
C ,D C ,Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C ,D C ,Z
Z
1,2
1,2
2
1,2
1,2
1,2,3
1,2
1,2,3
1,2
1,2
1,2
1,2
1,2
1,2
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
BSF
BTFSC
BTFSS
f, b
f, b
f, b
f, b
B it C le a r f
B it S e t f
B it Te s t f, S k ip if C le a r
B it Te s t f, S k ip if S e t
1
1
1 (2)
1 (2)
01
01
01
01
00bb
01bb
10bb
11bb
bfff
bfff
bfff
bfff
ffff
ffff
ffff
ffff
1
1
2
1
2
1
1
2
2
2
1
1
1
11
11
10
00
10
11
11
00
11
00
00
11
11
111x
1001
0kkk
0000
1kkk
1000
00xx
0000
01xx
0000
0000
110x
1010
kkkk
kkkk
kkkk
0110
kkkk
kkkk
kkkk
0000
kkkk
0000
0110
kkkk
kkkk
kkkk
kkkk
kkkk
0100
kkkk
kkkk
kkkk
1001
kkkk
1000
0011
kkkk
kkkk
1,2
1,2
3
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
A N D LW
C A LL
C LRW DT
G O TO
IO R L W
M O V LW
R E T F IE
R E T LW
RETURN
SLEEP
S U B LW
X O R LW
k
k
k
k
k
k
k
k
k
A d d lite ra l a n d W
A N D lite ra l w ith W
C a ll s u b ro u tin e
C le a r W a tc h d o g T im e r
G o to a d d re s s
In c lu s iv e O R lite ra l w ith W
M o v e lite ra l to W
R e tu rn fro m in te rru p t
R e tu rn w ith lite ra l in W
R e tu rn fro m S u b ro u tin e
G o in to s ta n d b y m o d e
S u b tra c t W fro m lite ra l
E x c lu s iv e O R lite ra l w ith W
C ,D C ,Z
Z
T O ,P D
Z
T O ,P D
C ,D C ,Z
Z
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 45 de 58
Modos de direccionamiento
Direccionamiento de la memoria de datos (RAM)
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 posicin desde la 00 a la 7F. Como se vi en el captulo 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
seleccin de banco en el registro STATUS.
El registro FSR, es un puntero para direccionamiento indirecto. La posicin 00 del mapa de
RAM es la llamada direccin indirecta. S en cualquier instruccin se opera con la direccin
00, en realidad se estar operando con la direccin a donde apunte el contenido del FSR.
Por ejemplo si el FSR contiene el valor 14, una instruccin que opere sobre la direccin 0,
operara en realidad sobre la direccin 14. Se puede decir en este ejemplo que la posicin
14 de memoria fue direccionada en forma indirecta a travs del puntero FSR.
Ejemplo :
; Esta porcin de programa borra 5 posiciones de memoria a partir de la direccin 0x20
FSR equ 04
;(definicin al comienzo del programa)
.....................................
.....................................
movlw 5
;prepara para repetir 5 veces
movwf 0x7F
;(el registro 0x7F es el contador del loop)
movlw 0x20
;apunta a la direccin 0x20
movwf FSR ;
loop:
clrf INDF
;borra una posicin de memoria
incf FSR,1
;apunta a la siguiente
decfsz 0x7F,1
;si todava no borra todas
goto loop
;sige borrando
.....................................
.....................................
El direccionamiento indirecto es muy til para el procesamiento de posiciones consecutivas
de memoria, como en el ejemplo, o para el direccionamiento de datos en subrutinas.
Direccionamiento de la memoria de programa (EPROM, OTP)
D ire c t A d d re s s in g
In d ire c t A d d re s s in g
fro m o p c o d e
R P 1: R P 0
b a n k s e le c t
lo c a tio n s e le c t
IR P
b a n k s e le c t
00
01
10
F S R re g is te r
lo c a tio n s e le c t
11
00h
80h
100h
180h
7F h
FFh
17F h
1F F h
D a ta
M e m o ry (1 )
Bank 0
Bank 1
Bank 2
Bank 3
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 46 de 58
PC L
12
PC
5
P C L AT H <4:0>
P C L AT H
PC H
12
PC L
1 1 10
GOTO,CALL
PC
2
P C L A T H <4:3>
11
O p c o d e <10:0 >
P C L AT H
Herramientas de desarrollo
UNA MIRADA RAPIDA AL MPLAB.
Qu es el MPLAB ?
EL MPLAB es un "Entorno de Desarrollo Integrado " (Integrated Development
Environment, IDE) que corre en "Windows ", mediante el cual Usted puede desarrollar
aplicaciones para los microcontroladores de las familias PIC 16/17.
EL MPLAB le permite a Usted escribir, depurar y optimizar los programas (firmware) de
sus diseos con PIC 16/17. EL MPLAB incluye un editor de texto, un simulador y un
organizador de proyectos. Adems, el MPLAB soporta el emulador PICMASTER y a
otras herramientas de desarrollo de Microchip como el PICSTART - Plus.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 47 de 58
Pgina 48 de 58
EQU
ej. status equ 05
explicacin: define una constante de ensamble
INCLUDE
ej. include <PIC16F84.h>
explicacin: incluye en el programa un archivo con cdigo fuente
ORG
ej. org 0x100
explicacin: ensambla a partir de la direccin especificada
Para informacin ms completa referirse a la gua rpida del MPASM.
Una vez instalado adecuadamente el MPLAB, para realizar la simulacin de un programa
deben seguirse los siguientes pasos:
Lista de pasos:
1. Haga doble click en el cono correspondiente a MPLAB.
2. Crear el archivo fuente correspondiente (men File...New Source).
3. Salve el archivo (con extensin .ASM) una vez terminada su edicin (men
FILE...Save).
4. Debe a continuacin crearse un nuevo proyecto (men Project...New Project).
5. Cuando aparezca la ventana de New Project editar las cajas de texto:
Project path and Name y Development Mode, hacer click en <OK>.
6. En la siguiente ventana Edit Project, hacer click en la seccin Non-project files sobre el
nombre del archivo fuente realizado en los pasos 2 y 3.
7. Haga click en el botn <=add y luego de que ste aparezca en la seccin Project Files
haga click sobre el botn <OK>.
8. Salvar el proyecto (en el men Project...Save project).
9. Realizar la "construccin de todo el proyecto" (men Project...Build All).
10. En esta etapa se realiza en forma automtica el ensamble de nuestro programa fuente
y el vaciado de ste en memoria de simulacin. 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
simulacin>>>
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 49 de 58
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 50 de 58
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
R12
27K
R14
39K
R13
150K
POT2
1K
VCC
VCC
T1
BC557
C6
BOR3
B1
VCC
15pF
15pF
C10
sa
sb
sc
sd
se
sf
sg
sP
C15
100nF
1
2
3
C14
100nF
D2
D1
X2
4Mhz
13
14
33
34
35
36
37
38
39
40
2
3
4
5
6
7
1N4007
1N4007
PIC16C74A
OSC1/CLKIN
OSC2/CLKOUT
MCLR/VPP
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
RA0/NA0
RA1/NA1
RA2/NA2
RA3/NA3
RA4/TOCKI
RA5/AN4/SS
U5
C11
1000uF
+12V
C12
100nF
1
Vin
U6
MC7805T
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RSD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDI
RC5/SDO
RC6/TX/CK
RC7/RX/CT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
GND
2
+5V
8
9
10
19
20
21
22
27
28
29
30
15
16
17
18
23
24
25
26
TXD
RXD
3
C13
100nF
VCC
sa
sb
sc
sd
se
sf
sg
sP
R15
R16
R17
R18
R19
R20
R21
R22
4K7
R25
4K7
R24
4K7
R23
470
470
470
470
470
470
470
470
a
b
c
d
e
f
g
8
P
C4
RXD
10uF
C2
10uF
BC557
Q4
22mHy
L2
Comn
TXD
VCC
DISPLAYK1
DISPLAY KC
12
9
11
10
R1OUT
R2OUT
C1-
C1+
T1IN
T2IN
V+
a
b
c
d
e
f
g
8
P
Comn
Date:
File:
A4
Size
Title
BC557
Q5
U4
MAX232EJE
DISPLAYK2
DISPLAY KC
V-
C2-
C2+
R1IN
R2IN
T1OUT
T2OUT
Number
13
8
14
7
Comn
10uF
C5
10uF
C3
BC557
Q6
12-Sep-2002
\\Oscar\c_oscar\ADVSCH\PROJECTS\CursoUC\Curso\Curso.DDB
a
b
c
d
e
f
g
8
P
DISPLAYK3
DISPLAY KC
VCC
1
6
2
7
3
8
4
9
5
Sheet of
Drawn By:
DB9
I2
Revision
APENDICE 1
Circuito Propuesto
Pgina 51 de 58
APENDICE 2 - PIC16F87X
12.1
Instruction Descriptions
ADDLW
ANDWF
AND W with f
Syntax:
[label] ADDLW
Syntax:
[label] ANDWF
Operands:
0 k 255
Operands:
0 f 127
d [0,1]
(W) .AND. (f) (destination)
f,d
Operation:
(W) + k (W)
Status Affected:
C, DC, Z
Operation:
Description:
Status Affected:
Description:
BCF
Bit Clear f
Syntax:
[label] BCF
Operands:
0 f 127
0b7
Operation:
0 (f<b>)
Status Affected:
None
Description:
ADDWF
Add W and f
Syntax:
[label] ADDWF
Operands:
0 f 127
d [0,1]
Operation:
Status Affected:
C, DC, Z
Description:
f,d
ANDLW
Syntax:
[label] ANDLW
BSF
Bit Set f
Syntax:
[label] BSF
Operands:
0 f 127
0b7
f,b
f,b
Operands:
0 k 255
Operation:
1 (f<b>)
Operation:
Status Affected:
None
Status Affected:
Description:
Description:
BTFSS
CLRF
Clear f
Syntax:
Syntax:
[label] CLRF
Operands:
0 f 127
0b<7
Operands:
0 f 127
Operation:
Operation:
skip if (f<b>) = 1
00h (f)
1Z
Status Affected:
None
Status Affected:
Description:
Description:
BTFSC
Syntax:
Operands:
0 f 127
0b7
Operation:
skip if (f<b>) = 0
Status Affected:
None
Description:
CLRW
Clear W
Syntax:
[ label ] CLRW
Operands:
None
Operation:
00h (W)
1Z
Status Affected:
Description:
CLRWDT
Syntax:
[ label ] CLRWDT
Operands:
None
Operation:
00h WDT
0 WDT prescaler,
1 TO
1 PD
CALL
Call Subroutine
Syntax:
[ label ] CALL k
Operands:
0 k 2047
Operation:
(PC)+ 1 TOS,
k PC<10:0>,
(PCLATH<4:3>) PC<12:11>
Status Affected:
TO, PD
Status Affected:
None
Description:
Description:
COMF
Complement f
Syntax:
[ label ] COMF
GOTO
Unconditional Branch
Syntax:
[ label ]
Operands:
0 f 127
d [0,1]
Operands:
0 k 2047
Operation:
(f) (destination)
Operation:
k PC<10:0>
PCLATH<4:3> PC<12:11>
Status Affected:
Status Affected:
None
Description:
Description:
DECF
Decrement f
Syntax:
INCF
Increment f
Operands:
0 f 127
d [0,1]
Syntax:
[ label ]
Operands:
Operation:
(f) - 1 (destination)
0 f 127
d [0,1]
Status Affected:
Operation:
(f) + 1 (destination)
Description:
Decrement register f. If d is 0,
the result is stored in the W register. If d is 1, the result is stored
back in register f.
Status Affected:
Description:
f,d
GOTO k
INCF f,d
DECFSZ
Decrement f, Skip if 0
Syntax:
INCFSZ
Increment f, Skip if 0
Operands:
0 f 127
d [0,1]
Syntax:
[ label ]
(f) - 1 (destination);
skip if result = 0
Operands:
Operation:
0 f 127
d [0,1]
Operation:
Status Affected:
None
(f) + 1 (destination),
skip if result = 0
Description:
Status Affected:
None
Description:
INCFSZ f,d
IORLW
MOVLW
Move Literal to W
Syntax:
[ label ]
Syntax:
[ label ]
Operands:
0 k 255
Operands:
0 k 255
Operation:
Operation:
k (W)
Status Affected:
Status Affected:
None
Description:
Description:
MOVWF
Move W to f
IORWF
Inclusive OR W with f
Syntax:
[ label ]
Syntax:
[ label ]
Operands:
Operands:
0 f 127
d [0,1]
0 f 127
Operation:
(W) (f)
Operation:
Status Affected:
None
Status Affected:
Description:
Description:
NOP
No Operation
Syntax:
[ label ]
IORLW k
IORWF
MOVF
Move f
Syntax:
[ label ]
Operands:
0 f 127
d [0,1]
Operation:
f,d
MOVF f,d
(f) (destination)
Status Affected:
Description:
MOVLW k
MOVWF
NOP
Operands:
None
Operation:
No operation
Status Affected:
None
Description:
No operation.
RETFIE
RLF
Syntax:
[ label ]
Syntax:
[ label ]
Operands:
None
Operands:
Operation:
TOS PC,
1 GIE
0 f 127
d [0,1]
Operation:
None
Status Affected:
Description:
Status Affected:
RETFIE
RLF
RETLW
f,d
Register f
Syntax:
[ label ]
RRF
Operands:
0 k 255
Syntax:
[ label ]
Operation:
k (W);
TOS PC
Operands:
0 f 127
d [0,1]
Status Affected:
None
Operation:
Description:
Status Affected:
Description:
RETLW k
RRF f,d
Register f
RETURN
Syntax:
[ label ]
Operands:
None
SLEEP
Operation:
TOS PC
Syntax:
Status Affected:
None
[ label
]
Description:
Operands:
None
Operation:
00h WDT,
0 WDT prescaler,
1 TO,
0 PD
Status Affected:
TO, PD
Description:
RETURN
SLEEP
SUBLW
Syntax:
XORLW
Syntax:
[label]
Operands:
0 k 255
Operands:
0 k 255
Operation:
k - (W) (W)
Operation:
Status Affected:
Description:
Description:
SUBWF
Syntax:
Subtract W from f
[ label ]
SUBWF f,d
XORWF
Exclusive OR W with f
Syntax:
[label]
Operands:
0 f 127
d [0,1]
Operands:
0 f 127
d [0,1]
Operation:
Operation:
XORLW k
XORWF
f,d
Status Affected:
Description:
Description:
SWAPF
Swap Nibbles in f
Syntax:
Operands:
0 f 127
d [0,1]
Operation:
(f<3:0>) (destination<7:4>),
(f<7:4>) (destination<3:0>)
Status Affected:
None
Description:
Notas y Referencias
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
PIC 16/17 microcontroller data Book, Microchip
MPASM assembler. User's Guide, Microchip
MPLAB IDE User's Guide, Microchip.
www.microchip.com
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
Pgina 58 de 58