Académique Documents
Professionnel Documents
Culture Documents
PARA LA UEA
SISTEMAS D IG ITALES 11
NOTAS DEL PICl6F84
PARA LA UEA
Este malenal tue di<:tamlnacjo y aprobado POf el COI1sejo
Edilorial de l. Oivl$l6n de CierICin abtu e Il'Igenl.rl.
!Se la U!lidadA.zeapotzalco de la UAM. tI\ Su sesi6tr del dia
1 de OClubre del 2003.
NOTAS DEL PIC16F84
PARA LA UEA
SISTEMAS DI G ITA L ES 11
2892896
",:,:.a.~ JnA
<-_._ IIr1fII.'
DrI,"""'" C..nc... 8at.ICIIl elo'lgeft>l...
o.p.r.na ....... o 1M EIeC"6nlea
UlM-IZCIPOTZlLCO
,~
c> UU-IIC.,ot!llto
)ooM lporio
c..._ ~~
v.,. t"""
M .... Albo .... Lo,..,.
AaN. ..
V"" .. ~T. plaV.....
DiNOolitl'wlMa:
_._
Modeot.o ....1iIioo
Se ....... o Ra.ml
..:5 /A.
-_._ ~
el lIIi -ra,.Il.lce
jootl~V... \.oo.no
c.,.._Sollodoc.u""n
Mo, ,,, AJ\Io.1O Lo"", _ , .
VI<f<I< NoO Tl pio v.., ..
DiotW"I'oo:\od .
Modo.'" Serrano IU.mlnt
fIt<Mo"IUIt<ioo1ht
M . Dolor.. C"deDo. V,oU.
s...L<ln d. p""~L<ln
1 d .. \nbut.6II..:I,l.Onol
~I " 1'922219223
r .. 531'922a
En estas notas se cubren todos los temas que marcan los programas
analticos oficiales y aprobados en la UAM de las VEAs mencionadas
anteriormente, en los que se indica que el profesor podr usar cualquier
microcontrolador para impartir dichas materias. En este caso el
microcontrolador usado es el PIC 16F84 que en la actualidad es uno de
los mas ampliamente usados en aplicaciones de control de propsito
general.
v
TABLA DE CONTENIDO
UNIDAD I
INTRODUCCION A LOS MICROCONTROLADORES
1.1 . Evolucin de los microcontroladores ... ....... . 1
1.2. Fami lias de microcontrol adores.. ...... . . ... ......... . 3
1.3. Comparacin de microcontroladores fre nte a microprocesadores
CISC y RiSC.. .. . . .. .... ...... . 3
1.4. mbito de apl icacin de los microcontroladores.. . ........... . 6
UNIDAD II
CARACTERISTICAS DE UN MICROCONTROLADOR ... 7
n.1. Diagrama a bloques . ................. . ...... .. ..... . 7
El reloj y el ciclo de instruccin . ... . ................... . 7
P ipelining 8
Descripcin de lneas ..... . . 9
U.2. Recursos internos. 10
Generador de reloj - o scilador 10
Tipos de osciladores .. 11
Oscilador XT . " 11
Oscilador Re.. .. 12
El circuito de reset. .. 14
La unidad central de procesamiento (CPU) . ... ...... ... ..... . . . 17
La unidad aritmtica y lgica (ALU) .. .. .. .... ....... . 18
Registro srATUS ......... .. ........ .......... . ...... ... . . 21
UNIDAD III
ORGANIZACION DE LA MEMORIA ....... .. 23
llI. l . Memoria de programa . 23
IlL2. Memoria de datos 23
m .3. Registros ...... .... ..... ... ... . 24
Registros SFR. .... ... ..... . .......... .............. . .. . 24
lIlA. Tipos de memoria ... ... . ......... ... 24
Bancos de memoria ......................... . 26
Program counter ...... . .. ...... _. .. . 27
Snack . . .. ............... . 27
VII
UNIDAD IV
PROGRAMACION .. 29
IV.I. Modos de direccionamiento ... 29
Direccionamiento directo .. 30
Direccionamiento indirecto . ... . 31
IV.2. Estructura general de un programa 32
Etiquetas 33
Instrucciones .. 33
Operandos . .. 34
Comentarios 34
Directi vas ... 34
IV. 3. Conj unto de instrucciones . .. ..... . 37
Instrucciones de transferencia de datos .. .... . 38
lnstrucciones aritmticas y lgicas ... .. ... , . . . 39
Instrucciones de manejo de bits.. . .. . .. .. . ..... _. 41
Instrucciones de transferencia de control .. . ... . .. . . 42
Instrucciones espec iales . .... ..... .. .. . .. . . 44
IV.4. Periodo de ejecucin de las instrucciones .. 44
IV.5. Archivos creados al ensamblar un programa 45
UNIDAD V
TEMPORIZADORES Y PUERTOS DE E/S 47
V.I . Temporizadores y contadores 47
Caractersticas generales 47
El free-run timer TMRO .. ... ... . . 47
Funcionamiento y modos de operacin .. . 48
v.2 . Programacin de los temporizadores y contadores .... . ... . . . .. . 49
El registro de OPTION ... . . .. .. . ... . . 49
v.3 . La memoria de datos EEPROM .. . 54
El registro EECON I ....... . .. .. . ... ... . . 55
Lectura de la memoria EEPROM .. ... ... . ....... . . .. ... .. . . . .. 56
Escritura a la memoria EEPROM 57
v.4 . Puertos de entrada/salida 59
Caracteristi cas generales 59
Funcionamiento y modos de operacin 60
v .5. Programacin de los puertos 60
El puerto B . 60
El puerto A 61
VIII
UNIDAD VI
MANEJO DE INTERRUPCIONES ... . 65
VI.!. Tipos de interrupcin ' ....... ....... . . . 65
V1.2. Modos de operacin . 66
V I .3. Configuracin de interrupciones . .. 66
El registro INTCQN. 66
Salvar el contenido de los registros importantes ............ . 69
Interrupcin externa de la lnea RBO/INT del microcontrolador 76
Interrupcin de sobrellujo del contador de TMRO ..... ... ... ..... .. . 76
lntenupcin de cambio de estado de las lneas 4, 5, 6 Y 7 del puerto B.. 77
Interrupcin al terminar la subrutina de escritura a la EEPROM 77
Inicializacin de una interrupc in . 78
UNIDAD VII
APLICACIONES ............... . 81
Vll.l . La fuente de alimentacin del microcontrolador . . 81
VII.2. Los macros ESPERA y ESP~MAS .. ..... ..... . 82
VII.3 . El macro PRINT ........... .. .. . 86
VIIA . Los diodos em isores de luz LED 's (LighEmitting Diodes) .. 88
Vn .5. El teclado ... . .. .. ... . 91
V11.6 . El optoacoplador. ... 96
VIl .7. El optoacoplador como lnea de entrada .. 97
VII .8. El optoacoplador como linea de salida .. 99
Vl1.9. El re levador. .............. .. IDO
Conexin de un relevador al microcontrolador via un transistor .. IDO
Conex in de un relevador y un optoacoplador al mi crocontrolador.. . 102
VII.l O. Los display's de siete segmentos (mu ltiplexaje) ... ......... .. lOS
IX
UNIDAD 1
INTRODUCCION A LOS MICROCONTROLADORES
2
1.2. Familias de microcontroladores
CISC Y RISC
3
Harvard Von-Neumann
Memoria Memoria
de dalos d.
4
RAM - memoria de datos usada por un programa durante su ejecucin.
En la memoria RAM se almacenan todos los datos temporales durante la
operacin normal del sistema.
Timer
Memoria de datos
RAM
i"'.
Memoria de
CPU .-.. programa
EEPROM
i
Puerto A Pue rto 8
5
1.4. mbito de aplicacin de los microcontroladores
Este chip cuenta con solo dos lneas para la transferencia de datos al
programarlo, lo que lo convierte en un producto flexible para el
desarrollo de prototipos y pasar a continuacin a la produccin en lnea o
bien puede ser usado para mejorar programas de productos terminados.
6
UNIDADII
CARACTERISTlCAS DE UN MICROCONTROLADOR
OSC l
t I I
o' h L--.lh
I
hL-_-I
Q' I
Q'
I
L -_ _~~L__~~L__~~
'"
'c
7
Pipelining
La ejecucin de una instruccin se inicia al llamar a la instruccin de la
memo ria de programa en cada ciclo Q 1 Y escribindola en el regi stro de
instruccin (instructi on register) durante Q4. La decodificacin y
ejecucin de la instruccin se realizan entre los siguientes ciclos Q 1 Y
Q4. En el diagrama siguiente se puede ver la relacin entre el ciclo de
instruccin y el reloj del oscilador (OSC 1). El contador de programa
(program counter-PC) contiene la direccin de la siguiente instruccin a
ejecutar.
El ciclo de instruccin consiste de los ciclos Q 1, Q2, Q3 Y Q4, en donde
gracias al pipeline cada instruccin se ejecuta efectivamente en un ciclo,
pero si la instruccin causa un cambio en el program counter (el PC
apunta a otra direccin), como por ejemplo saltos y llamadas a
subrutinas, se necesitan dos ciclos para ejecutar la instruccin, ya que la
instruccin debe ser procesada nuevamente.
Ejcmolo:
TC". TCV' "l'C" l TC\' .1 TCV. TC\'5
I r~h' EJ..,Dd6 ft I
1'.'chSUB_ ' + 1
g
TCYO lee la instruccin MOVL W 55 h (no imponando para nosotros en estc
momento que instruccin fu e ejecutada).
TCYl ejecuta la instruccin MOVLW 55h y lee MOVWF PORTB .
TCY2 ejecuta la instruccin MOVWF PORTB y lee CALL SUB _ l .
TCY3 ejet:uta la ll amada a una subrutina CALL SUB_ 1 Y lee la instrucc in BSF
PORTA,BITI. Ya que esta instruccin no es la que se necesita o no es la pri mera
instruccin de SUB_ l , la instruccin debe ser leda nuevamente. Este es un cl aro
ejemplo de una instruccin que necesita ms de un ciclo para ejecutarse.
TCY4 se usa totalmente para leer la primera instruccin de la subrutina SUB_ l .
TCYS ejecuta la primera instruccin de SUB_ 1 Y lee la siguiente instruccin.
Descripcin de lneas
, ~.
"
, "'" "
RA4f1'OC" I
""" "
, vu
;a: oso
v..
"
.. ."....., ""
, ,
RBeflm'
"
,o>
...
, O>
"
"
Figura 11.3. Distribucin de lineas del PICI6F84
9
Linea no. 3. RA4 lnea 4 del puerto A. Su funcin adicional es
TOCKI y es una lnea de control del temporizador.
Linea no. 4. MCLR entrada de reset y voltaje de programacin
Vpp del microcontrolador.
Linea no. 5. Vss tierra.
Lnea no. 6. RBO lnea O del puerto B. Funciona altemamente
como entrada de interrupcin.
Lnea no. 7. RBI lnea I del puerto B. No tiene funcin adicional.
Lnea no. 8. RB2 lnea 2 del puerto B. No tiene funcin adi cional.
Linea no. 9. RB3 lnea 3 del puerto B. No tiene funcin adiciona l.
Linea no. 10. RB4 lnea 4 del puerto B. No tiene funcin adicional.
Lnea no. 11. RBS lnea 5 del puerto B. No tiene funcin adicional.
Lnea no. 12 . RB6lnea 6 del puerto B. Lnea de reloj (clock) en el
modo de programacin.
Lnea no. 13. RB7 lnea 7 del puerto B. Linea de datos (data) en el
modo de programacin.
Lnea no. 14. Vdd alimentac in.
Lnea no. 15. OSC2 lnea asignada para conectarl o con un
oscilador.
Lnea no. 16. OSC I lnea asignada para co nectarlo con un
oscilador.
Lnea no. 17. RAO lnea Odel puerto A. No tiene funcin adicional.
Lnea no. 18. RA 1 lnea I del puerto A. No ti ene funcin adici.onal.
10
Tipos de osciladores
Oscilador XT
PIe 16F84
.
n
Cl
."
-r.~
J
,
ose.
"
Vdd JI< ~ ~
. el
II
PIC 16F84
18
2 17
3 "
tS
4
S t
Figura 11.5. Oscilador XT encapsulado
Oscilador Re
....-----+-. CIo<'
C-"21,. 1 PICI 6F84
12
puede volverse muy sensible al ruido y la humedad, por lo que es
recomendable usar resistencia de un valor entre 3 y 100 k.
Aunque el oscilador puede trabajar sin un capacitor externo (C=O pF), se
recomienda usar capacitores de 20 pF para el ruido y estabilidad.
No importando que tipo de oscilador que se use, el reloj es di vidido entre
4 y puede obtenerse por medi o de la lnea OSC2/CLK OUT y empl earse
para sincronizar otros circuitos externos.
T Ose
VoIllJe
13
Para evitar que la seal inestable de l reloj tenga una mala influencia en el
comportamiento del microcontrolador, es necesario mantener al
microcontrolador en un estado de reset durante la estab ilizacin del
oscilador de l reloj. La figura anterior muestra una seal de un oscilador
de cuarzo al encender la fuente de alimentacin.
El circuito de reset.
PIe 16F84
18
\' dd
2 17
R== 5 IOk
3
4
~l
SW 5
14
El microcontrolador PIe 16F84 conoce varias fuentes de reset:
15
inestabilidad en la fuente de alimentacin. Para resolver este problema es
necesario asegurar que el microcontrolador se encuentre en un estado de
reset cada vez que la fuente caiga por abajo del lmite permitido.
V dd _ _ _ _ _ _ _ _ __
000 .._.. _.._......._..-...-...-... -.. -ff._. _. -.. -.. . . .-..-.. -.._. .-.
5,,"'1 d., r.,.ct __ _ _ _ _ _ _ _ _
J
i--j;:=;:=::=:;,;I
12 ms
______
Vdd-_ _ _ __
16
Puede ser necesario usar componentes electrnicos especiales para
generar la seal de reset y que aparezca un cero lgico en la lnea MCLR
hasta que el voltaje se encuentre en los lmites correctos.
Bus de datos 8
RAM
File regrslen (f)
Bus de direttiones de la
RAM
Reg~roW
17
La CPU conecta todas las partes del microcontrolador de manera
centralizada y tal vez la funcin ms importante es decodificar las
instrucciones del programa. Esta conexin se ll eva a cabo por medio de
los buses de datos y direcciones.
'" /
MUX
nJ
/
""
ALU
I
I
1
Reg.,tro W
I
I
Figura 11 .12. Diagrama general de la ALU
18
En instrucciones con dos operandos, generalmente un operando est en
el registro de trabajo (denominado registro W) y el otro cs uno de los
registros de propsito general o es una constante. Operando es el
contenido sobre el cual se ejecuta una operacin y un registro es
cualquiera de los regi stros GPR o SFR, GPR es una abreviacin de
"General Purpose Register-Registro de Propsito General" y SFR es
"Special Function Regi ster-Registro de Funcin Especial".
19
DI lJul d~d.t05 '1
Coot.dflr de prognrn.
r
MOM
MflOO,h D Il
d~ protT.ma Slatk de 11 niveles I RAM
(n-bit) File. Rgllun (f)
BUI de di!'fl:dnts de l.
RAM
/ MUXde \
Dir~ciOfl"
1
I Dlrecdon.m;ento dlreclo
Dlreccionamtenlo
ndredo
Pow~-up
TImer
Dt1:odlf>C.Ici6n
Osd lador
d,
111$trut'Ciont:!l
Conlrol
y
Stln_up tlmer
.~ Watchdog
I~
Ttrnpclriud(in ~L':=::::n=m:':':::=:!J
~
OSClICLKQu r
OSCl /CLKJ i'I
MCi:ii" Vdd,Vu
20
Regist ro STATUS
21
Bil 3-PD (Power-down)
Este bit es puesto a I lgico al suministrar energa o encender la fuente
de alim entacin, despus de cada Teset regu lar y despus de ejecutar la
instruccin CLRWDT. La instruccin SLEE.P lo limpia cuando el
microcontrolador pasa al modo de bajo consumo de energa. Colocarlo
en uno tambin es posible al ocurrir una seal en la lnea RBOIJNT. al
completarse una escritura en la EEPROM interna y por un watchdog
tambin.
I = Despus de encender la fuente de alimentacin.
0 = Ejcc ulando la inslruccin SLEEP.
22
UNIDAD ID
ORGANIZACION DE L.A MEMORIA
23
procedimiento estricto para escribir en la memoria EEPROM, el cual
debe ser seguido para evitar escrituras errneas o acc identales.
La memo ria RAM ocupa espacio dentro del mapa de memoria de datos
usando de la localidad OxOC a la Ox4F (68 localidades). Las localidades
de la memoria RAM se ll aman tambi n regi stros GPR lo cual es una
abreviacin de General Purpose Registers. Los regi stros GPR se pueden
accesar sin importar el banco seleccionado en ese momento.
111.3. Registros
Registros SFR
24
Acu.nd o
aalal
loul id a6u
uob titnt
el m l~mo
reunado
lin Importar
f l b3nco
f l banco
Loca lid,de,
de Mfmorl.
__ +-_lIOui:pl.;~::~a,
obtiene
L _____---l IFPn
7n L--:,-,,-,-,".-.L--:,c----,c--' ,,,o
3Df
2S
Bancos de memoria
Ejem plo:
bcf STATUS,RPO
bsf STATUS,RPO
BANKO macro
bcf STATUS, RPO ;Selecciona el banco O
l'ndm
BANKI macro
bsf STATUS, RPO ;Selecciona el banco I
endm
26
Como ya se dijo anteriormente, las localidades OCh a la 4Fh son los
registros de propsito general (GPR) los cuales pueden ser usados como
memoria RAM . Cuando las localidades 8Ch a la CFh del banco I son
accesadas, se estarn accesando exactamente las mismas localidades de l
banco O. En otras palabras, si se desea accesar uno de los registros GPR,
no importar el banco que est seleccionado o en el cual se est
posicionado.
Program counter
Stack
27
28
UNIDAD IV
PROGRAMACION
29
Direccionamiento directo
'"
Sitie bits en la instruccin
I
iI] + I I I I I I I I
_ _________ _ ..1
Banco
/
sducionado
" """"""""'
Banct) O :Banco
'<'<4.dI
Figura IV.I. Direccionamiento directo
30
Direccionamiento indirecto
'" IR'
n
~ +
,-:'-r-r-",-r-,0
11
I IFSR
B~n~-~--- --t-
-- ~_n~l
selecdonldo
/
Loc:alidad g~ f----l:;==
seleccionada
... m77;>1%;
" . "8"'."'"~"'"'O~B.L"L"LL,
Figura IV.2. Direccionamiento indirecto
31
Un ejemplo de direccionamiento indirecto es el s iguiente, donde se enva
un grupo de datos por comu nicacin serie trabajando con buffer e
ndices, borrando una parte de la memoria RAM ( 16 localidades):
Una lectura del regi stro INDF cuando el contenido del registro FSR es
cero regresa el valor de cero y una lectura del registro INDF cuando FSR
es cero trae como resu ltado una operacin NOP (no operation).
32
Etiqueta.
Instrucciones
2892896
JJ
Operandos
Los ope randos son elementos de las instrucciones que necesitan stas
para poderse ejecutar. Us ualmente los operandos son registros. variables
o co nstantes.
Operandos tpicos:
El operando es un
movlw H'FF ' nmero hexadecimal.
movwf LEVEL
t
La variable LE VEL
es un operando en
memoria del
microcontrolador.
Co mentarios
Directivas
34
que la localidad de memoria ODh contiene informacin acerca del
NIVEL . Las directivas que a continuacin se toman como ejemplo
pertenecen al ensamblador MPASM dc Microchip.
Algunas directivas ms
frecuentemente usadas:
PROCESSOR 16F84
#include "pI6ffi4.inc"
35
El eje mplo siguiente muestra un programa escrito en lenguaje
ensamblador respetando las reglas bsicas anteriores.
Directi va ---t--
I
Operando movlw
mo\'wr ;Saca , 's por el puert o B.
36
En el programa anterior se puede observar que despus de los
comentarios iniciales se defin en varios parmetros impo rtantes del
microcontrolador como por eje mplo, el tipo del oscilador, el
encendido/apagado del watchdog timer y la habilitacinJdeshabilitacin
del circuito interno de reloj , con la directiva sigui ente:
37
La transfere ncia de datos en el PIC I6F84 se hace usando el registro de
trabajo (W) y un reg istro f ( fil e register) el cual representa cualquier
localidad de la RAM intern a (independientemente de que se trate de un
SFR o un GPR).
No tas :
(-Si el opent ndo ruente es un p uerto, se lee el estado de las lneas del
mieroeontrolador.
2-S i se ejecu ta esta instruccin sobre el registro TMRO y d= l , el
prescalar as ignado al ti mer automticamente se lim pia.
Las tres primeras instrucciones de la tab la ante rior reali zan las siguientes
acciones: esc ribir una constante en el registro W (MOVL W significa
MOVe Literal 10 W), cop ia un dato del registro W en la RAM y copia un
da10 de la RAM al registro W (o en la misma localidad de la RAM, en
cuyo caso solo cam bia el estado de la bandera Z). La instruccin CLRF
escribe la co nstante OOh en el reg istro f. mientras que la instruccin
38
CLRW escribe la constante OOh en el registro W. La instruccin SWA PF
intercambia de lugar los dos nibbles de 4 bits de un registro.
39
__
-"" -
ADDLW k
ADDWF f.d
Adiciona
constante y W .
Adiciona W y
f.
""'
0 ...._
W + k-)W
W+ f ? d
-
C,DC.z
C,DC.Z
e.....
1
1
0II00rv_
1,2
NotJlS:
I-Si t i upuando (uenle es un puerto, se let el tuado de la! lneas del
micnK'o ntroIJldor.
2-S i .'it ej uta ClIla in51rucci n sobre d rq:i5lro TMRO y d = I, el pre5ular u ignado
. 1 timer au to m'tica ml'nl t se limpia.
40
La un idad lgica de l PIC tiene la capacidad de rea lizar la operaciones de
AND, ORo EXOR, complemento (COMF) y rotacin (RLF y RRF).
Las instrucciones de rotacin mueven los bits del registro por medio de
la bandera de carry (C) un espacio a la izquierda o a la derecha. El bit
que sale del registro se escribe en la bandera e y el valor de la bandera e
se escribe en el bit d el lado opuesto del registro.
-
BCF r,h
BSF r,h
~ripda
Limpia el bit b
der.
Establece , I
lgico el bit b
Operacin
0-> ~b)
I -> ~b)
Banderas
afectad
Ciclos
I
Observaciones
1.2
1.2
de r.
Notas:
. -Si el operando fu ente es un puerto, se lee el estado de las lneas del
microcontrolado r.
2-Si se ejecuta esta ins truccin sobre ti registro TMRO y d = l , el prescala r asignado
allimer a ulo m' ticamcnte st' limpia.
41
Las instrucciones GOTO. CALL y RETURN se ejecutan de manera
similar que en otros mi crocontroladores. ni camente que el stack es
independiente de la memori a RAM , fue ra del alcance del prog ramador y
limitado a ocho ni ve les. La instru ccin RETL W k es idntica que la
instrucc in RET URN , excepto que antes de regresar de un subprograma
se escribe en el regi stro W una constante definida por el operando de la
instruccin. Esta instruccin perm ite disear fcilmente tablas de
bsqueda (listas). Se usa ms co mnmente para determ in ar la pos icin
en una tabla adicionndo le a la direccin de ini cio de la tabl a la
constante de finida por la instruccin y leer el dato de esa localidad (la
cual se encuentra usualm ente en memori a de programa).
La tab la se puede formar como un subprograma que cons iste de una serie
de instrucc iones RETL W k, donde las constantes k son mi embros de la
labia.
Main movlw 2
cal! Lookup
Lookup addwf PCL,f
retlw k
retlw kl
retl w k2
retlw kn
42
almacenada en el registro W, a la direccin de inicio de la tabl a
encontrada en el registro PCL para encontrar la direcci n real del dato
locali zado en memoria de programa. Al regresar de l subprograma se
tendr en el registro W el contenido de un miembro de la lab ia
direccionada. En el ejemplo anterior, despus de ejecutar la instruccin
M ,.
BTFSC f.b --
rellw se encontrar en el regislTo W la constante k2.
Prueba e l bit b
Ope-
Salta si f(b)=O
_
............ Ciclo.
1(2)
ObHtyacionea
J
de f y salta si
es O lgico.
BTFSS f.b Prueba e l bit b Salta s i f(b) 1 1(2) J
de f y salta si
es 1 l ~ico .
DECFSZ f.d Decrementa f y f - 1 7d.salta si Z I 1(2) 1.2.3
,,"ta , ; O
IRico. "
lNC FSZ f,d Incrementa f y f + 17d,salta siZ 1 1(2) 1.2.3
..Ita , ; O
IQg!co. "
GOTO k Salta
di reccin
l
o
2
etiqueta k.
CALL k Llama
subrutina k.
=. 2
Notas :
l-Si el operando fuente es un puerto. se lee el estado de las lineas del microcontrolador.
43
La instruccin RETF IE (RETum Fro m Interrupt and Interrupt Enablel
sirve para regresar de un a rutina de una interrupcin y difiere de la
instruccin RETURN so lo en que automti camente estab lece a Ilgico
el bit GIE (G lobal Interrupt Enablel. Cuando sucede una interrupcin se
limpia este bit y solo el va lor del program CQunter se coloca en el tope
del stack.
Instrucciones especiales
Oboe _ _
Matm6oko
NO!'
Dnc:ripdb
No opcrution.
Operacin
.........
a.nd.,.. Clcloa
t
CLRWDT Limpia 0 7 WDT, I -7 ro, I
Walchdog
Timer.
" r 7PD
TO. PO
Todas las instrucc iones se ejec utan en un ciclo de mquina. exce pto las
instrucciones de salto condi cional que se ejecutan en dos ciclos de
mq uina si la co ndi cin se cumpl e, o si el contenido del program counter
es cambi ado por algu na instru ccin. En ese caso, la ejecucin requiere
dos ciclos y duranrc el segundo ciclo de instruccin se ejecuta una
instruccin NOP (No Opcrati on). Un ciclo de instruccin est compuesto
de cualIO pul sos de la se a l de reloj, por lo que si la frecuencia del
osci lador para dicha sc ilal es de 4Mhz. el tiempo para ejecutar una
instruccin es de I !J.S, Y en caso de saltos condicionales, el periodo de
ejecucin es de 2 mi crosegundos.
44
IV.5. Archivos creados al ensamblar un programa
45
46
UNIDAD V
TEMPORIZADORES Y PUERTOS DE E/S
Caractersticas generales
.,
000000001
T>lRO
KD0000001
n~"
INTCON tL
TO 1t'===='="=-I=!!\. .f~-_
I_ ' -_'.lli..-.JI""'-
PSI PS I PSO
J 1 , I 1
poooo01
OPTION m PSI rse
Figura V.1. Relacin entre eltimcr TMRO y el presca lar
47
Este incremento se hace en segundo plano (background) de todo lo que
hace el mi crocontrolador. Una de las fonnas como el programador puede
usar e l tim er es inc rementando tambin una variable cada vez que oc urra
un sobrenujo en el timer. Si se conoce cuanto ti empo necesita un timer
para ll egar de O a 255, entonces mu ltiplicando el valor de una variable
por ese tiempo se puede obtener el ti empo transcurrido.
TImuO
BIt TOIF
811 GIE
48
nueva interrupcin O que se pucda detectar un nuevo sobre flujo. Adems
del reloj del oscilador interno, se puede usar un reloj externo por medio
de la lnea RA4rrOCKI para incremen tar el estado del tim er. Elegir un a
de estas dos opciones se hace por medio del bit TOeS del registro
OPTION. Adems, la opcin del reloj ex tern o, se puede de fi nir el ti po de
transicin (subida o bajada) por medio de la cual e l timer incrementar
su valor.
El registro OPTION
49
IIIIIIIII
2892896
Bit 3-PSA ( Prescaler Assignm ent Bit-Bit de asignacin del prescalar)
Este bit asigna el prescalar al Timer O-TMRO o al watchdog.
I = El prcscalar es asignado al watchdog.
O = El prescalar es as ignado a l free-run timer TMRO.
Bit 4-TOSE (TM RO So urce Edge Seleet Bit- Bit de selecci n del
flanco o transicin de la fuente de TMRO)
Se puede disparar TMRO por medio de un pulso en la lnea RA4rrOCK I,
este bit determina si ser con la transicin de bajada o de sub ida.
I = tran sicin de bajada.
O = transicin de subida.
Bit S-TOCS (TM RO C lock Source Select Bit-Bit de seleccin del reloj
de TMRO)
Este bit ind ica si e l free-fUn timer incrementar su estado usando el
osc il ador intern o cada 4 pul sos de la seal de reloj o por medio de pulsos
extern os en la lnea RA4rrOCK l .
I = Pulsos externos (contador).
0 = '11 del reloj interno (tempori zador).
50
Pie 16F84
In ltrrLlpcJ.n
2SS~O
00000000
TMRO
Bus de dllM
51
/\ continuacin se encuentra un programa que iniciali za al tempori zador
para que se incremente con transiciones de bajada de la seal de reloj
externa usando un prcscalar dc 1:4 .
TOOVL
btrss INTCON,TO IF ;Prueba bit de so brenujo.
gota TO_OVL ;No ocurri nterrup., espera.
push macro
movwf W_Te mp ;W_Temp <-W.
swapf W_Temp,F ;Intercmbialos.
BANKI ;Cambio al banco l .
swapf OPTION_REG ,W ;W <- O PT ION_ REG.
movwf Optio n_Tc mp ;Option_Te mp <- W.
BANKO ;Cambio al banco O.
swapf STATUS,W ;W <- STATUS.
mov wf Stat_Te mp ;Stat_ Temp <- W.
endm ;Fin del macro push.
52
pop macro
swapf Stat_Temp,W ;W <- Stat_Tcmp.
movwf STATUS ;STATUS <- W.
BANKI ;Cambio al banco l.
swapf Option_Temp,W ;W <- Option_Temp.
movwf OPTION_ REG ;OPTION_REG ,,- W.
BANKO ;Cambio al banco O.
swapf W_Temp,W ;W <- W_Temp.
endm ;Fin del macro popo
53
prescalar tambin. Cuando cJ prescalar es asignado al watchdog limer,
so lo la in struccin CLR WDT limpiar al prescalar y al watc hdog timer
al mi smo ti empo. El cambi o de l presca lar est completamente bajo
control de l prog ramador y puede cambiarse en cua lqui er momento
mi entras un programa se est ejecutando .
54
El registro EECON I
55
Bit 3-WRERR (Write EEPROM Error Flag-Bandera de eHor de
escritura a EE PROM)
Este bit se act iva solo cuando una escritura a EEPROM ha sido
interrump ida por una seal de Teset o cuando ha expirado el watchdog
ti mer (si es que se encuentra ac ti vado).
I = Ocurri error.
O= No ocurri error.
56
Despus de la ultima instrucci n, el contenido de la direccin cero de la
EEPROM se encuentra en el registro de trabajo W.
57
1\ cOlllinuacin se muestra el segmento de un programa que escribe el
dalo OxEI. a la primera localidad de la EE PROM.
58
V.4. Puertos de entrada/salida
Caractersticas generales
I r--"'\ PORTA
RA2
o(0
o
' - - -+(3
o(0
TRISA
Figura V.4. Relacin entre los reg istros TRI SA y PO RTA
59
Funcionamiento y modos de operacin
Por medio de los registros TRlS del PI C 16F84 se pueden definir las
lneas de los puertos como entradas o como salidas, de acuerdo al
dispositivo cancelado a la lnea correspondiente. Escribiendo un Ilgico
en el bit correspondiente del registro TRJS, la lnea del puerto se
configura como en trada, en caso contrario, un O lgico indicar que la
linea es salida. Cada uno de los dos puertos del Pie 16F84 tiene su
correspondiente registro TRlS (TRISA y TRlSB), localizados en las
direccion es 85h y 86 h, respectivamente.
El puerto B
El puerto B del PIC 16F84 tiene 8 lneas, su regi stro para configurar las
lineas como entradas o salidas es el reg istro TRISB localizado en la
direccin 86h. Cada lnea del puerto B tiene una resi stencia de pull-up
interna (el rcsi stor que define una linea a uno lgico), la cual puede
activarse escribiendo un O lgico en sptimo bit (RBP U) del regi stro
OPTIO . Estas resistencias automticamente se deshabilitan cuando la
lnea del puerto es configurada como salida. Cuando se alimenta el
microcontrolador los pull-up 's se deshabilitan.
Las cuatro lneas ms signifi cativas del puerto B: RB4 a RB7, pueden
generar una interrupcin cuando su estado cambia de uno a cero lgico o
de cero a uno lgico. Solo las lneas configuradas como entradas pueden
generar la interrupcin (si cualquiera de las lneas RB4-RB7 es
configurada co mo salida, no se genera interrupcin al cambiar su
estado). Esta caracterstica en conjunto con las resistencias de pull-up
facilita la resolucin de problemas prcticos como por ejemplo usar un
teclado matricial. Si las filas del teclado se conectan a entradas del
puerto B, al presionar un a tecla se puede generar una interrupcin. El
60
microcontrolador determina cual tecla se presion al procesar la
interrupcin.
El puerto A
El puerto A del PICI6F84 tiene cinco lineas, su reg istro para configurar
las lneas como entradas o sali das es TRISA local izado en la direcc in
85h. La quinta lnea de l puerto A tiene dos funciones. En esta lnea est
localizada tambin una entrada externa para e l timer TMRO. Una de las
dos funciones se selecciona con el bit TOCS (TMRO Clock Sourec
Selection bit) del registro OPTION . Este bit le indica al timer TMRO qu e
incremente su valor ya sea del osci lador in terno o va pulsos externos por
medio de la linea RA4rrOC KI.
61
Res um iendo, de lo que se ha visto hasta el momento se puede ya
configurar el hardware para algun as lneas de los puertos del PIC I 6F84
funcionen como entradas y olras funcionen como salidas de la siguiente
manera:
+<,
KA ,
"
~ ' 30
,[ JI o,,'"
-+
16
RA.m'OC K I OSC ,
I
MCUt oso hu I
,, v .. Vdd
h ..
u . .. ...
1-"
SWI
~
I hll ' 310
..,
~
6 [ RBOII f\T 7
1-'
h1l '31 0
= 7 [ ' M .J
h ll 330 0 ~
[
2
' 0' .J
RO' RO<
h .. "'o ~
[ .J
Figura V.S. Li neas de los puert os del PIC I6F84 usadas como salidas
y como entradas
62
A conti nuacin se muestra e l circuito de una ruente de alim entac in para
proporcionar una tensin estable de trabaj o de +5 Vec. a un sistema
digita l que use un PIC I6F84.
sw
/ __-r--_
Lf-3______
I J LM7805
I
72~V
( 12 V tpico)
loop.l
6JV '~
I
2
JJOO
63
64
UNIDAD VI
MANEJO DE rNTERRUPCIONES
Pie 16F84
f lujo dt Punlo U t i
.,v tJn:udOn
dtl programa
~
qUI;:U""
,,,,,,.,,...
lD" .--------'-~ r
......
Subprocn l1l1
m" ,
tproun ll
c~...~ ,"""."...
R
"1 ,
de" tJMi611
ttOnhll ckl
principal
65
VI.2. Modos de operacin
El registro INTCON
66
Bit 2-TOIF (TMRO Overflow Interrupt Flag Bit-Bit de la bandera de
la interrupcin de sobreflujo del TMRO)
1 = el contador cambio su cuenta de FFh a OOh.
O= no ocurri sohrenujo.
Este bit debe limpiarse en el programa para que pueda detectarse una
siguiente interrupcin de este tipo.
67
Bit 6-EEIE (EEPROM Write Complete Interrupt Enable Bit-Bit de
habilitacin de la interrupcin al completarse una escritura en la
EEPROM)
Este bit habilita la interrupcin que ocurre al terminar una rutina de
escritura a la EEPROM.
1 = interrupcin habilitada.
O~ interrupcin deshabilitada.
Si EEIE Y EEIF (q ue se encuentra en el registro EECONI) se habilitan
simultneamente, puede ocurrir una interrupcin de este tipo.
68
Figura V1.2. Lgica de interrupciones del PI C l6F84
69
Antes quc ocurra la
inlerrupdn, el registro
de trabajo W tiene el
Instruccin valor 'X'
no. N Subprograma de
_ _ _ _---lllnterrupcin
W=x . la Interrupcin
L donde cambia el
valor del registro
l...a instruccin r-------t-+ de tra bajo W a
d cs puCs d c una 'V'
Regreso al
interrupcin, revisa programa w=y
el valor d el registro principal
dc trabajo W
Instruccin no.
N+ \
70
La instruccin SWAPF STATUS,O carga los bits 0-3 del registro
STA TUS en los bits o posiciones 4-7 del reg istro W y los bits 4-7 del
registro STA TUS en los bits 0-3 del registro W.
71
PUSH
MOVWF W TEMP ;Salva el registro W.
SWAPF STATUS,O ;W ~ STATUS.
MOVWF STATUS_TEMP ;STATUSJEMP ~ W.
,
;..... Salva los registros del banco O.....
;(Programa de la interrupcin).
POI'
72
;..... Restaura los registros del banco I
73
Este mi smo ejemplo se puede reali zar usando macros, obteniendo con
esto un programa ms legible . Los macros ya definidos pueden usarse
para escribi r nuevos macros . Los macros llamados BANK 1 y BAN KO,
Jos cuales ya se exp licaron en el tema de "Organi zac in de memoria", se
usan en los macros PUSH y POP.
PUS H macro
MOVWF W TEMP ;Salva el reg istro W.
SWAPF STATUS,W ;W f- STATUS.
MO VW F STATUS TEMP ;STATUS_TEMP f- W.
74
POP macro
75
Interrupcin externa de la lnea RBO/INT del microcontrolador
76
Interrupcin de cambio de estado de las lneas 4, 5, 6 Y 7 del puerto B
77
Inicializacin de una interrupcin
78
El ejemplo sigui ente muestra una form a tpica para el manejo de
interrupciones. El PICI6F84 tiene solo una localidad de memoria donde
se almacena la direccin de una rutina de una interrupcin . Esto implica
que es necesario primero detectar cul interrupcin se ha generado (si
ms de una fuente de interrupcin est activa) y poder ejecutar la parte
del programa que se refiere a esa interrupcin .
ISR]ORTB
79
goto END_lSR ;Salta al final de la interrupcin.
ISR_TMRO
80
UNIDADVU
APLICACIONES
CI - 22.d' C'2_100",r
Cl -I O#l' R _ 1K
81
Para obtener una salida estable de 5V en la salida (linea 3) del regulador,
el voltaje de entrada en la linea I del LM7805 debe estar entre 7V y 24V
y dependiendo del consumo de corriente del circuito a alimentar se debe
usar el regulador LM7805 apropiado . Existen diferentes versiones del
LM780S y para un consumo de corriente de hasta 1A se debe usar e l
LM7805 con encapsul ado de tipo TO-220. Si la corriente total a
consumir es de SOmA, se puede usar el 78L05 y para corrientes de hasta
I DOmA se puede usar el regu lador con encapsulado pequeo del tipo
TO-92.
Fose ~ 4Mhz.
82
Prescalar Divisor Intervalo
00000000 1:2 0.5 12 ms
0000 000 1 1:4 1.024 ms
0000 0 111 1:256 65.536 ms
; Macros
83
movwf C ICLO ;Contador de sobreflujos.
movlw PRESCALAR_2 ;PRESCALAR_2 es un prescalar para
;e l TMRO pasado como parmetro
;al macro.
call RET ARDOX
endm
RETARDO
movwf CICLO ;Contador de sobreflujos.
mov lw PRESCALAR_ ;Prescalar (fijo) asignado a TMRO.
RETARDOX
clrf TMRO
BANKI
movwf OPTlON_REG ;Asigna el prescalar al timer TMRO.
BANKO
WAITI bcf lNTCON,TOlF ;Limpia bandera sobreflujo de TMRO.
WAIT2 btfss lNTCON,TOIF ;Sobreflujo= l ?
ESPERA 100
84
Como ya se indic anteriormente, e l Macro ESP_ MAS tiene un
argumento ad ic iona l que le indi ca el prescalar usado, por ejemplo:
ESPjdAS 100,7
85
VII.3. El macro PRlNT
movf Dato,w
xorl w FinTabla-1
btfsc STATUS,Z ;Es el fi nal de la cadena?
gota Salida ;Si, sa le del loop.
inc f Dato,f ;No, incrementa apuntador.
gota Otro ;Continu a en el loop.
Salida
end m
86
A continuacin se muestra un segmento del programa que usa el Macro
PRlNT:
org OxOO
gota Main
87
VII.4. Los diodos emisores de luz LED 's (Ligh -Emitting Diodes)
,"
../ L~D
PllVpl lU
-'--
88
Usando la cada de voltaje en la resistencia limitadora (Ur) y e l valor de
la corriente a circular en el LED (O.002A a O.O IA) se puede determinar
e l valor de la resistencia R=Ur/l.
Ur ~ 5v - Ud ~ 5v - 1.5v ~ 3.5v.
En los ejemp los a usar en esta unidad se conectarn los LED 's usando
lgica pos itiva, es decir, para encender el LEO se enviar por la lnea a la
cual est conectado un uno lgico, tal y como lo muestra en el ejemplo
siguiente en donde el programa iniciali za al puerto B como salida y
enva, en efecto, un un o lgico en cada lnea del puerto B para encender
los LED's.
Pie 16FlI4
o ~ uo
o~
"
o ~
."
~,
~~
~
Jt---
MotrOC'" ~o
Mel.ll
"'" " I ~ l'
"
1
O'M
'" mo
U>
"
1 -~
mo ..
r--"1 uo ~
" mo
c'-i .
----'i .~ 'M "
~
" '"' .. ,. ,~
mO .. "
mn .. o.
'"' ..
'"' ..
Fig ura V ID, Uso de los puer tos del PIC I6F84 co n leds
89
;..... Declaracin y con fi guracin del microcontrolador .....
PROCESSOR 16F84
#include "p l 6f84. inc"
movlw Oxff
movwf PORTB ;Enciende todos los leds.
Loop
gota Loop ;Pennanece en el loop.
90
VII.S. El teclado
Los teclados son dispositivos mecamcos usados para conectar dos
puntos. Vi enen en diferentes tipos y con diferentes propsitos. Las teclas
que se usarn en este ejempl o son de los llamados "dip-switch" o "dip-
keys" y tienen cuatro patas (dos para cada contacto) que les da
estabilidad mecnica.
9\
.,.
---
R niI.~IK: '.
~pU Il _ .. p M
de
..t-----4f~________;;:;_;n
... RAZ
KA.!
PIe I6F84
RA'
"
" 4Mlb
16
TI T2 RAurQCKI osel
11 MClR
v ..
RIMIINT
uso
Vdd
RB'
"
"
"
.,.
JJOn
um
..,
12
RBI R"
2 I!
Ka..
RB'
"
Figura VII.4. Lineas del PICl6F84 usadas como entradas con
swi tch 's
92
La solucin a los rebotes es tener entonces un programa que detecte el
momento en el que se presiona una tecla y el momento en el que se
libera la misma.
Salida
endm ;Fin del macro.
93
Este Macro se encontrar en el archivo "tecla.inc" para poder usarlo en
otros programas y tiene los sigui entes argumentos:
94
; Declaracin de variables
# include "bancos.inc"
#include "tecla.inc"
# include "espera.inc"
95
VII.6. El optoacoplador
96
VU.7. El optoacoplador como linea de entrada
." "
" ... ... "
....," ... "
"
~
97
En el programa mostrado a conti nuac in las salidas del microcontrolador
desplegarn el estado del contador:
PROCESSOR 16F84
#include " p 16f84.inc"
#include "bancos.inc"
98
VII.8. El optoacoplador como linea de salida
El programa de este eje mplo deber entregar un " 1" lgico en la lnea 3
del Puerto A para que se encienda el LEO y se acti ve el transistor del
optoacoplador. La salida del transistor en este caso esta limitada
aproximadamente a 250mA.
+ Ih
RBM NT ..7
.8' N"
2 ."
R.'
99
VII.9. El relevador
100
PIe 16F84
RA '
RAJ
RA'
RAO
"
" 4M A:l
oso
"
MCtR ose, "
v. VdO
RBOIINT R87
"
RB, R. .
"
RBl - Utv
RB'
" so...
'UJ R"
"
...... Rtetifka60r
TO ~'"~ + Uv
'"
ot<l...
101
La resistenc ia de IOK en la base del tTan sistor sirve para limitar la
corriente del microcontrolador a la requerida por el transistor. La
resistencia de IOK entre la base del tran sistor y la tierra evita que el
posible ruido existente en la base active al relevador, lo que perm ite que
solo una seal clara y correcta del microcontrolador lo active.
102
PIe 16F84
RA2 KAI 18
RAl RAI 17
-4MJlz
osel
MCiJi ose,
v.. VdO
7 Rel
"
R" /
8 Re,
RBJ
R.'
RR4
" /'
/ - UOv
60Ht
C.rga
330
,.. lOd
1I",.~ .. riIo
ckt .pto. copl .....
103
El programa siguiente acti va un re levador usando algunos de los Macros
ya vistos en esta un idad.
PROCESSOR 16F84
#include "pI6f84.inc"
#include "banking"
#include "tecla .inc'
#include "espera.inc"
104
movwf TRJSB ;TRJSA f- OxOO, salidas.
BANKO
Enciende
bsf RELE ;Enciendc el relevador.
retum
Apaga
bcf RELE ;Apaga el relevador.
retum
8.
Se puede desplegar un nmero de varios dgitos conectando varios
display's de este tipo y aunque los display's de LCD son ms flexibles,
los di sp lay 's de 7 segmentos an son un estndar en la industria debido a
su robustez a la temperatura, visibilidad y amplio ngu lo de vista. Los
segmentos se llaman a, b, e, d, e, f. g Y dp, donde dp es el punto decimal
(decimal point),
105
Los 8 LED's de l di splay pueden estar configurados como ctodo o nodo
co mn. Con un di splay de ctodo comn, el ctodo debe conectarse a OV
y los LED 's se encienden con uno lgico. En los de nodo comn el
nodo debe conectarse a +5 V y los segmentos se encienden con un cero
lg ico.
En el mtodo del multip lexaj e se usan 7 lneas para los segmentos y una
para el punto decima l y por cada di splay adicional se requiere solo una
lnea extra. Las lineas de los segmentos y de l punto se conectan en
paralelo a todos los di splay 's. La lnea comn (e l ctodo) se conecta
separada para cada di splay y se acti va con cero lgico por un corto
periodo de ti empo para encender el di splay. Cada di splay se enciende a
una ve loc id ad de al menos 100 veces por segundo tal q ue parezca que
todos los di splay 's estn encendidos al mi smo ti empo. Cuando se
encie nd a cada disp lay debe entregrsele el carcter a desplegar.
Se pueden manejar hasta 6 di splay 's sin afectar la brillantez de cada uno
y cada display estar encendido un sexto de l tiempo de manera que el ojo
humano piense q ue el display est encendido todo el ti empo. Todas las
seales o tempo rizacin es producida por el programa de manera que la
ve ntaja de este mtodo es la fl exibil idad.
t 06
A continuacin se muestra un diagrama de cmo manejar dos display' s
con el PICI6F84.
PIC 16F84
ItA I ~
KA, OA'
u-!Z- 4Mlb
,1)~.1.1. 'l'1'~
~ re: ;::;-
RA4fI'OCKI osel
MCOi osa
Va Vdd
. . . . NT '8'
12
r--'i 081 RH<
)J()
,--!-I 11 110
~~~IO
RBJ
RB'
'JOJ-----l-_ ...
08'
L 1]0
JJ'
,JO
JJ'
107
En el listado siguiente se encuentran dos Macros (INIT_D1SPLA Y7 y
D1SPLA Y7). El primero de ellos iniciali za todo el ambiente y el
hardware para manejar los di splay's. En este Macro se definen datos
como el periodo de refresco del display y las lineas del microcontrolador
usadas para conectar los di splay's. El segundo Macro se usa para
desplegar los nmeros del O al99 en los dos di splays.
D1SPLA Y7 numero
incrementos = 160
108
Por otra parte, para determinar cul de las salidas de l Puerto A se debe
encender (las sali das del Puerto A estn conectadas a los ctodos de los
display' s) se realiza una lectura del estado actual de las lneas del Puerto
A para determi nar cul di splay est apagado y cual est encendido en ese
momento y poder fijar el estado siguiente de los display's, usando una
tabla de estados del siguiente tipo:
109
Por eje mpl o, DI SPLA Y7 Ox21 desp legar el numero 21 en los display' s
como lo muestra el programa siguiente:
PROCESSOR 16F84
#include " p 16f84.inc'
; Declaracin de variables
Main
INIT_ DISPLA y
DISPLA Y7 0><21 ;Despliega en los dos display 's de
;7 segmentos.
11 0
INIT_DlSPLAY macro
; Inicial iza los Puertos ......
BAN KI
clrf TRISA ;I)ucrtos A Y B como salidas.
clrf TRJSB
BANKO
clrf PORTA :Todas Ia.'i salidas a " O".
clrf PORTB
; Inicializa el Timer
BANKI
movlw B' I OOOOIOO' ;Mucvc el prcscalar (32) al
movwf OI'TION_REG :TMRO .
BANKO
movlw B'OO 100000' ;Habilita intemlpcin del
movwf INTCON ;TMRO. no globalmentc.
movlw .96
movwf TM RO ;Arranca cl Timer.
bsf INTCON,GIE ;Habilita globa lmente intemlps.
cndm
I SR bcf INTCON,GIE
btfsc INTCON,GIE
goto I SR
movlw .96
movwf TMRO
bcf INTCON,TOIF
call Despliega
RETFIE
111
Despliega
movf PORTA,W ;Estado actual de di splay encendido.
clrf PORTA ;Apaga todos los di splay ' s.
andlw OxOF ;Enmascara parte baja del byte.
movwf Encend ido
Prueba_ MSD
blfsc Encendido, l ;El display del MS D apagado?
gota Apaga_ MSD ;No, apaga MS D.
bcr Enccndido,O ;Si , Apaga LSD,
bsr Encendido,l ;enciende MSD y
gala Despliega_ MSD ;desp liega MSD.
Apaga_ MSD
bcr Encendido, ! ;Apaga MSD.
112
Despliega_MSD
swapf Digi to, l ;Obtiene solo MSD.
andlw OxOF
sublw .9 ;Compara MSD con 9.
btfss STATUS ,C ;MSD mayor que 9?
goto Mayor_9_MSD ;Si, MSD es numero invalido.
swapf Digito,W ;No, mueve a W solo el MSD.
and lw OxOf
goto Di sp layOul ;Obtiene cdigo de 7-seg de MSD y
;despligalo.
Mayor_9_MSD
movlw . 10 ;Si MSD>9, despliega con todos
;Ios segmentos apagados.
DisplayOut
call Tabla_7Segs ;Obtiene el cdigo 7-seg del numero
movwf PORT8 ;a desplegar y envalo al Puerto B.
movf Encendido, W ;Por el Puerto A activa solo un
movwf PORTA ;di splay.
RETURN
Tabla_7Segs
addwf PCL, I
retlw 8 '001 11111 '
retlw 8 '0000011 0'
retlw 8 '01011011 '
retlw 8 '01001 11 1'
retlw 8'011001 10'
retlw 8'011011 0 1'
retlw 8 '0 111 110 1'
redw 8 '00000111 '
retlw 8'01111111'
rctlw 8 '0 11 01 111'
retlw 8'00000000' ;Numero mayor a 9 se despliegan todos
;Ios segmentos apagados.
11 3
1<10145 BU PlClru l.~ t<!'CJn nI"""
pu .... LA lilA I CI'I0.,. I;J Sffeo6n
SlSTt.MASOIGlT.uLlill ele P,od,",CIfI
Se le,m,"'; de ;mpr,m" ~ O..!riI>KJn Ed,lor ,.les
....1 mes d. Ib,,1 "'1,110 2004
... 1... 1.11 ..... .,. " SKc,/n
CIt Imprulll 1 R.p,ocIucco6n de 1, Se "npr,m~,O<l
Unnoe,sodld Aul~i ~e!ropohl,", lOO el.mplar .. mi. sobr. nlt.
Un/c:I..oAlcipOU'iko piro 'e""",lII ,
<+)
""""
Form.ro de PapeJet. de VMClmt.nto
IIIDIIII
2892696
U'M 2892896
TK189S
M'
V .O
Hotas del PtC16FU pIIr1I I
K
:10 AlMO
ISD I '10-n - nU - 1
... n II1II11 : - Ql
11."
.U -I'70 J1 - 025"
.....""-..., ~
IIflllOf'Ol.J1.vu.
c.._._ ~
~
-~
...
c:-.-".~~
~-.....:. ...........,.
S - .. ~,~EdfIDMIM