Beruflich Dokumente
Kultur Dokumente
PARA LA UEA
SISTEMAS D IG ITALES 11
2892896
",:,:.a.~ JnA
<-_._
IIr1fII.'
DrI,"""'"
o.p.r.na ....... o
EIeC"6nlea
UlM-IZCIPOTZlLCO
,~
ExTL'lslOtl UNIVEltSlT".'A
c> UU-IIC.,ot!llto
)ooM lporio
v.,. t"""
c..._ ~~
Lo,..,.
AaN. ..
V"" .. ~T. plaV.....
DiNOolitl'wlMa:
_._
....1iIioo
Modeot.o
Se .......
o Ra.ml
g::.=:~:;:.~~r.:'
C.P. 02'l1X1
Mh iu, D I'.
..:5 /A.
-_._ ~
DI\Ii.on Oto
o.pa".m.n,o Oto
EIK!I~
UIHZClPOrZlLCO
, ~.
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 .
e P onoo
Mh,co, D r
s...L<ln d. p""~L<ln
1 d .. \nbut.6II..:I,l.Onol
" 1'922219223
r .. 531'922a
~I
N"",.. d~ I'IC/6I"U
pO'G
l. U&A
Este material fue realizado con el objetivo de apoyar a los profesores que
impartan y a los alumnos que cursen las UEAs " Sistemas Digitales 11" y
" Laboratorio de Sistemas Digitales Il" del Area de Concentracin de
Sistemas Digitales y Computadoras del Departamento de Electrnica de
la Universidad Autnoma Metropolitana-Azcapotzalco en la
Licenciatura de Ingeniera Electrnica.
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.
Este material es resultado de la recopilacin de notas, ejercicios, cursos
tomados y la experiencia misma de los autores. Se ha reali zado sin fines
de lucro y con objetivos puramente didcticos y acadmicos para el
constante desarrollo y actuali zacin de la carrera de Ingeniera
Electrnica.
Deseamos agradecer la colaboracin en la elaboracin de las figuras y
diagramas a los alumnos: Aquino Aquino M.iguel y Arellano Mendoza
Alejandro Santiago de Ingeniera Electrnica.
TABLA DE CONTENIDO
UNIDAD I
INTRODUCCION A LOS MICROCONTROLADORES
1.1 . Evolucin de los microcontroladores ... ....... .
. . ... ......... .
1
3
CISC y RiSC.. .. .
. .. .... ...... .
. ........... .
UNIDAD II
CARACTERISTICAS DE UN MICROCONTROLADOR ...
n.1. Diagrama a bloques . ................. . ...... .. ..... .
El reloj y el ciclo de instruccin . ... . ................... .
P ipelining
Descripcin de lneas ..... . .
U.2. Recursos internos.
Generador de reloj - o scilador
8
9
10
10
11
El circuito de reset. ..
srATUS .........
7
7
7
11
Tipos de osciladores ..
Oscilador XT . "
Oscilador Re.. ..
Registro
3
6
.. ........ ..........
. ...... ... . .
UNIDAD III
ORGANIZACION DE LA MEMORIA ....... ..
llI. l . Memoria de programa .
IlL2. Memoria de datos
m .3. Registros ...... .... ..... ... ... .
.... ... .....
. .......... .............. . .. .
Registros SFR.
lIlA. Tipos de memoria ... ...
. ......... ...
Bancos de memoria ......................... .
Program counter ...... . .. ...... _. .. .
Snack .
. .. ............... .
VII
12
14
17
18
21
23
23
23
24
24
24
26
27
27
UNIDAD IV
PROGRAMACION ..
IV.I. Modos de direccionamiento ...
Direccionamiento directo ..
Direccionamiento indirecto . ... .
IV.2. Estructura general de un programa
Etiquetas
Instrucciones ..
Operandos . ..
Comentarios
Directi vas ...
IV. 3. Conj unto de instrucciones . .. ..... .
Instrucciones de transferencia de datos .. .... .
... .. ... , . . .
lnstrucciones aritmticas y lgicas
Instrucciones de manejo de bits.. . ..
. .. .. . ..... _.
Instrucciones de transferencia de control
.. . ... . .. . .
Instrucciones espec iales . .... ..... .. .. . .. . .
IV.4. Periodo de ejecucin de las instrucciones ..
IV.5. Archivos creados al ensamblar un programa
UNIDAD V
TEMPORIZADORES Y PUERTOS DE E/S
V.I . Temporizadores y contadores
Caractersticas generales
El free-run timer TMRO .. ... ... . .
Funcionamiento y modos de operacin .. .
v.2 . Programacin de los temporizadores y contadores .... . ... . . . .. .
. . .. .. . ... . .
El registro de OPTION ...
v.3 . La memoria de datos EEPROM .. .
El registro EECON I ....... . .. .. . ... ... . .
Lectura de la memoria EEPROM .. ... ... . ....... . . .. ... .. . . . ..
Escritura a la memoria EEPROM
v.4 . Puertos de entrada/salida
Caracteristi cas generales
Funcionamiento y modos de operacin
v .5. Programacin de los puertos
El puerto B .
El puerto A
VIII
29
29
30
31
32
33
33
34
34
34
37
38
39
41
42
44
44
45
47
47
47
47
48
49
49
54
55
56
57
59
59
60
60
60
61
UNIDAD VI
MANEJO DE INTERRUPCIONES ... .
VI.!. Tipos de interrupcin ' ....... ....... . . .
V1.2. Modos de operacin .
V I .3. Configuracin de interrupciones . ..
El registro INTCQN.
Salvar el contenido de los registros importantes ............ .
UNIDAD VII
APLICACIONES ............... .
Vll.l . La fuente de alimentacin del microcontrolador . .
VII.2. Los macros ESPERA y ESP~MAS .. ..... ..... .
VII.3 . El macro PRINT
........... .. .. .
VIIA . Los diodos em isores de luz LED 's (LighEmitting Diodes) ..
Vn .5. El teclado
... . .. .. ... .
V11.6 . El optoacoplador. ...
IX
65
65
66
66
66
69
76
76
77
77
78
81
81
82
86
88
91
96
97
99
IDO
IDO
102
lOS
UNIDAD 1
INTRODUCCION A LOS MICROCONTROLADORES
1.1. Evolucin de los microcontroladores
El desarrollo cada vez ms acelerado de los microcontroladores ha sido
posible a las tecnologas rec ientes que incorporan cientos y cientos de
transistores en un circuito integrado, que en un principio fueron
microprocesadores para computadoras que fueron construidas
adicionando perifricos externos como memoria, lneas de entradasalida, temporizadores y otros dispositivos a esos mi croprocesadores.
Con el tiempo, se disearon y construyeron circuitos que contuvieron
tanto a los procesadores como a sus perifricos los cuales han sido
llamados microcontroladores.
El'} el, ao de 1969 un equipo de ingenieros Japoneses ll eg a Estados
Unidos para solicitar a Intel la construccin de algun os circuitos para
calculadoras. Por parte de Intel el responsab le del proyeclO fue Marcian
Hoff qui en tena experiencia con una computadora POP8. Hoff sugi ri
un sistema que requera ms memoria de la que los Japoneses proponan
surg iendo as el primer mi croprocesador del que en 1971 lntel obtuvo Jos
derechos para comercializar como el 4004 que fue un microprocesador
de 4 bits con una velocidad de 6000 operaciones por segundo .
Posteriormente, la compaia CTC so licit a Intel y a Texas lnstruments
la fabricacin de un microprocesador de 8 bits para usarlo en terminales
yen Abril de 1972 apareci en el mercado el primer microprocesador de
8 bits llamado e l 8008 que poda accesar 16 kb de memoria y con 45
instrucciones, operando a una ve locidad de 300,000 operaciones por
segundo. lntel mantuvo el desarrollo de microprocesadores y en Abril de
1974 aparec i el procesador de 8 bits llamado el 8080 con 75
instrucciones y accesado 64 kb de memoria, con un precio inicial de
$360 USD.
8 bits: el 8085, sin embargo el Z80 seguia siendo mejor y ya todo estaba
decidido. Ya no hubo grandes mejoras por parte de los fabricantes y el
Z80, el 6502 y el 6800 fueron los microprocesadores ms representativos
de 8 bits.
En los aos 80's aparecieron los primeros microcontroladores, lo cuales
difieren de los microprocesadores en muchas fonnas. La primera y ms
importante es su funcionalidad . Para que un microprocesador se pueda
usar se le deben agregar otros componentes como memoria y
di spositivos para enviar y recibir datos. Un microcontrolador esta
di seado para ser todo en uno, ya que tiene incorporados todos los
perifricos necesarios ahorrando tiempo y espacio al construir
dispositivos electrnicos.
Von-Neumann
Harvard
Memoria
de dalos
Memoria
d.
VS.
la arquitectura Voo-
Timer
Memoria de datos
RAM
i"'.
datosV
Memoria de
EEPROM
CPU
Puerto A
.-..
Memoria de
programa
FLASH
Pue rto 8
UNIDADII
CARACTERISTlCAS DE UN MICROCONTROLADOR
11.1. Diagrama a bloques
El reloj y el ciclo de instruccin
El reloj del microcontrolador es uno de los principales suministros, el
cual es obtenido de un componente externo ll amado el "oscilador". El
rel oj entra al microcontrolador por medio de la lnea ose I donde un
circuito interno del microcontrol ador lo di vide en cuatro ciclos iguales
ll amados Q I, Q2, Q3 Y Q4. Estos cuatro ciclos constituyen un ciclo de
instruccin (tambin llamado ciclo de mqui na) du rante el cual se
ejecuta una instruccin.
OSC l
o'
Q'
h L--.lh
hL-_-I
I
I
Q'
'"
L -_ _~~L__~~L__~~
'c
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'
r~h'
EJ..,Dd6 ft I
~'~ '~h
'.MO \'LWSSII
l.MO vwr PORT8
J. CA U .SUR_ '
. I'OM"I'A.BITl
TC\' .1
"l'C" l
TCV.
TC\'5
Ejt< .. d6n 1
r<,<IIJ
I!Jo~",,16to
..'"
roldo 4
n.tIIo ,
F"d.SUR_ '
Descripcin de lneas
El PIe l 6F84 cuenta con 18 lneas.
frecuentemente en el mercado es
como encapsulado SMD el cual es
abreviacin de Dual In Package.
Mount Devices.
Pie 16F84
RA>
,
, "'"
;a:
, vu
, ,
,o>
RA4f1'OC" I
~ ,
~.
"
"
"""
"
oso
v..
"
.. ."....., ""
...
RBeflm'
"
"
, O>
"
10
Tipos de osciladores
El PICI6F84 puede trabajar con cuatro diferentes configuraciones del
oscilador. Las configuraciones hechas con un cri stal y un circuito RC
(resistor-capac itor) son las ms frecuentemente usadas. La configuracin
con un cristal se designa XT y la segunda se denomina Re . Esto es
importante porque, en ocasiones, cuando se compra o se configura un
microcontrolador, es necesario especificar e l tipo de osdlador.
Oscilador XT
El oscilador de cristal es un encapsulado metlico con dos lneas que
tiene impresa la frecuencia a la cual osci la el cristal. Es necesario
conectar un capacitor cermico de 22 pF o 30 pF entre las termina les del
cristal y tierra. En algu nos casos sc encuentran encapsulados los
capacitores y el cristal en un circuito con tres lneas. Ta l elemento se
llama un resonador cermico, las terminales dcl ccntro son la tierra
mientras que las lneas de los extremos se conectan a las lneas ose l y
OSC2 del microcontrolador. Es recomendab le conectar el osci lador lo
ms cercano al microcontrolador para evitar interfen:ncias en las lineas
por las cuales el microcontrolador recibe la seal de reloj. La frecuencia
del cristal es tpicamente de 4 Mh z.
PIe 16F84
.
n
,
.
ose.
Vdd
."
"
JI<
Cl
-r.~
el
PIC 16F84
18
2
17
"
tS
--
Vdd
....-----+-. CIo<'
C-"21,.
v" =-
PICI 6F84
__-1
OSCVCLKOliT
C lac"'.
Re
T Ose
TCYl
TCY'
Ten
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.
La seal de reset se usa para colocar al mi crocontrolador en un estado
conocido. Bajo este estado, el contenido de los registros se lleva una
posicin de inicio. El reset no solo se usa cuando el microcontrolador se
esta comportando de una fo rm a no deseada, si no que tambin puede
usarse para sacar al microcontrolador de un ciclo.
Para evitar colocar un cero lgico acc identalmente en la lnea MCLR,
esta linea debe conectarse va un resi stor al positivo de la fuente de
alimentacin. El valor del resistor debe ser entre 5 y 10 k. Este tipo de
resistor es de los llamados pull up.
PIe 16F84
18
\' dd
2
R== 5 IOk
17
3
4
SW
~l
5
6
14
_ _ _ _ _ _ _ _ __
i--j;:=;:=::=:;,;I
______
12 ms
Vdd-_ _ _ __
.xii.1 de rCK, _ __ _ __
---lr------i:;::;=::::<,;IL__
11m$
16
RAM
File regrslen (f)
Bus de direttiones de la
RAM
Reg~roW
17
;:t
1 RfI;,tro de inltrllffln 1
II
RClhlro STATUS
'"
nJ
""
I
ALU
I
1
Reg.,tro W
MUX
/
I
I
Figura 11 .12. Diagrama general de la ALU
18
."
.
d.~
19
DI
lJul
d~d.t05
'1
Coot.dflr de prognrn.
MOM
Il
MflOO,h
d~ protT.ma
Slatk de 11 niveles
(n-bit)
RAM
File. Rgllun (f)
BUI de di!'fl:dnts de l.
RAM
/
MUXde
Dir~ciOfl"
Dlrecdon.m;ento dlreclo
Dlreccionamtenlo
ndredo
Pow~-up
TImer
Dt1:odlf>C.Ici6n
d,
111$trut'Ciont:!l
Osd lador
Stln_up tlmer
Conlrol
.~
I~
Watchdog
Ttrnpclriud(in
~L':=::::n=m:':':::=:!J
MCi:ii"
OSClICLKQu r
OSCl /CLKJ i'I
Vdd,Vu
Regist ro STATUS
21
22
UNIDAD ID
ORGANIZACION DE L.A MEMORIA
El PIC l 6F84 tiene dos bloques de memoria separados, uno de datos y el
otro de programa. La memori a EEPROM y los registros GPR (registros
de propsito general) locali zados en la memoria RA M constituyen el
bloque de datos, mi entras que la memoria FLAS H es el bloque de
programa.
23
111.3. Registros
Registros SFR
Los registros SFR (Special Function Registers-registros de funciones
especiales) ocupan las primeras 12 localidades en los bancos O y 1 de la
memoria de datos.
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
(RPO~O)
STATUS,RPO
( RPO ~ 1)
del registro
BANKO
macro
bcf STATUS, RPO ;Selecciona el banco O
l'ndm
BANKI
macro
bsf STATUS, RPO ;Selecciona el banco I
endm
26
Stack
El PIC I6F84 tiene un stack de 13 bits de 8 niveles, o en otras palabras,
es un grupo de 8 locali dades de memoria de 13 bits cada una. El papel
del stack es almacenar el valor del program co unter de spus de un salto
en el programa principal a la direccin de un subprograma (por ejemplo
con una instruccin CALL) y poder retomar despus al punto donde se
interrumpi el programa principal (por ejemplo ejecutando las
instrucciones RETURN, RETL W o RETFIE). Las operaciones de
colocar y tomar del stack el program counter se llaman PUSH y POP,
respectivamente y como tal no estn implantadas como instrucciones en
el PICI6F84.
27
28
UNIDAD IV
PROGRAMACION
Programacin del microcontrolador
29
Direccionamiento directo
El modo de direccionamiento directo se reali za por medio de direcciones
de nueve bits. La direccin del operando se obtiene uni endo los siete bits
de una direccin directa indicada en el cdigo de la instruccin, con los
bits RPO y RPI de l registro STATUS, tal como se muestra en la
siguiente figura. Cualquier acceso a los registros F (file registers) es un
ejempl o de direccionamiento directo. Un file register es cualquier
registro SFR o GPR.
bsf
movlw
movwf
OxFF
TR ISA
;Carga en W un OxFF.
;La direccin del registro TRISA
; es tomada del cdigo de la
;instruccin movwf.
iI]
'"
I I I I I I I I
_
_________ _
..1
Banco
sducionado
" """"""""'
'<'<4.dI
Banct) O :Banco
Figura IV.I. Direccionamiento directo
30
Direccionamiento indirecto
El direccionamiento indirecto, a diferencia del directo, no toma una
direccin del cdigo de una instruccin, sino que la construye con la
ayuda de l bit IRP del registro STATUS y del registro FSR. La localidad
direccionada es accesada va el registro fNOF el cual conti ene, en efecto,
el dato de la direccin indicada por FSR. En otras palabras, cualqu ier
instruccin que use al registro fNOF como su registro en realidad estar
accesando el dato de la localidad indi cada por un regi stro FSR. Por
ejemplo, si un regi stro de props ito general (G PR) en la di reccin OFh
contiene un valor de 20, al escribir un va lor de OFh en el registro FSR y
leer el registro INDF se obtendr el valor de 20, lo cual indica que se
estar leyendo el GPR si n accesarl o directamente (pero si va FSR e
rNDF). Pareciera que este tipo de direccionamiento no tiene ventajas
sobre el direccionami ento directo pero ciertas aplicaciones se resuelven
ms fcil y eficientemente usando direccionami ento indirecto. El registro
fNDF contiene el dato ledo o escrito y el registro FSR la direcci n de la
localidad de memoria a leer o escribir.
70. bit del regislro
STATUS
'"
IR'
n
~
,-:'-r-r-",-r-,0
+
I IFSR
11
selecdonldo
g~
Loc:alidad
seleccionada
f----l:;==
... m77;>1%;
" . "8"'."'"~"'"'O~B.L"L"LL,
Figura IV.2. Direccionamiento indirecto
31
LOOP
oxoe
mov lw
movwf
FSR
clrf INDF
inefFSR
btfss FSR,4
goto LOOP
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).
IV.2. Estructura general de un programa
Fsicamente, un programa representa un archivo que se encuentra en el
di sco de la computadora (o en la memoria, si es ledo de un
microco ntrolador) y se escribe de acuerdo a las reglas del ensam blador o
alg n otro lenguaj e que consiste de s ignos alfabticos y palabras. Al
escribi r el programa se deben seguir esas reglas para que un programa
intrprete conv ierta cada instruccin como una seri e de ceros y unos que
tenga un significado para la lgica interna del microcontrolador.
La conve rsin se encuentra en un archivo ejec utable y en un archivo con
la extensin .HEX, donde .HEX significa hexadecimal, el cual
posteriormente se graba en el microcontrolador para su ejecucin.
El programa fuente, en lenguaje ensamblador, se hace en un editor de
texto y contiene los siguientes elementos bsicos:
.:. Etiquetas .
:. Instrucciones .
:. Operandos .
:. Directi vas .
:. Comentarios.
32
Etiqueta.
Instrucciones
Las instrucciones ya estn definidas por el microcontrolador especfico a
usar, de manera ta l que so lo resta seguir su uso en el lenguaje
ensamblador. La forma de escribir las instrucciones se le ll ama sintaxis
de la in struccin. En el ejemplo siguiente se puede reconocer un error de
escritura donde las instrucciones movlp y gotto NO existen para el
microcontrolador PICI6F84.
In strucciones escritas correctamente
movlw
H"OI FF '
goto
Start
Instrucciones escritas incorrectamente
movlp
H'O I FF '
gotto
Start
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:
movlw
movwf
El operando es un
nmero hexadecimal.
H'FF '
LEVEL
La variable LE VEL
es un operando en
memoria
del
microcontrolador.
Co mentarios
Un comentario es una serie de palabras que escri be el programador para
hacer ms claro y legible el programa. Los comentarios comnmente se
colocan despus de una instruccin c inician con un punto y coma ";".
Directivas
Una directiva es similar a una instruccin, pero a diferencia de una
instruccin, la directiva es independiente de l modelo del
microcontrolador y representa una caracterstica del lenguaje
ensamblador mismo. Las directivas se usan para dar un significado
poderoso a variables o registros. Por ejemplo, el nombre NIVEL se
puede usar para designar una variable en la localidad de memoria RAM
ODh. De esta fonna es ms fcil para el programador entender o recordar
34
Algunas directivas ms
frecuentemente usadas:
PROCESSOR 16F84
#include "pI6ffi4.inc"
35
~':l [~'!l.l.l.~ ~
n r
Inclusin de
org 0,,00
goto Main
org 0,,04
golo Maio
Vector de interrupcin.
; l a rutioa de alencin a
jla interrupcin no existe.
un macro
NincJude " banco.inc'
Comentario ----t-~~I~.~;n--------"
Etiqueta /
Instruccin /"""
I
Operando
....-
BANKI
movl",
movwr
OxOO
TRISB
BANKO
movlw
mo\'wr
loop goto
loop
, nd
36
)o>
37
Descripcin
OpefllcilI
Bande ....
el.... ObMrvactones
l a~s
MOVLW k
Mueve
constanle
1,
k-> W
W.
MOVWF
r.
MOVF I:d
Mueve W a
Mueve 1:
CLRW
CLRF f
Lim iaW.
L i ~af.
Inlercambia
los nibbles de
f.
W-H
r-> d
0-7 W
o ->r
r(Nl(""l
I
I
1.2
1
1
1
1.2
-> ~3,Ol.(7Al
No tas :
(-Si el opent ndo ruente es un p uerto, se lee el estado de las lneas del
mieroeontrolador.
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
39
-"" -
ADDLW k
__
0 ...._
W + k-)W
e.....
0II00rv_
C,DC.z
C,DC.Z
kW -) W
C,DC,Z
( W-) W
WANO k ?W
e,oc,z
1
1
1,2
WANDf-)d
1,2
WOR k? W
IORWF f.d
d,
constan te ,on
W.
OR de W con
\VORf-)d
1.2
XORLW k
f.
OR EKclusva
WXORk -) W
1,2
WXQRf-)d
f + 1 -7 f
f - I -7 f
1
1
1
1,2
1,2
1,2
1,
1,2
1,2
ADDWF f.d
Adiciona
constante y W .
Adiciona W y
""'
W+ f ? d
1,2
f.
StJBLW k
sunWF r,d
ANDLW k
Sustrae W d,
una constanle.
Sustrae W de f.
d,
ANO
constante ,on
W.
AN DWF f,d
AND
d,
con f.
IORLW k
XQRWF f.d
INCI: (.tI
DECF (.d
RLF f.d
OR
d,
constante
con W.
OR Excl usiva
dc\Vconf.
Incrementa
1,
ROla
i7.l:luicrda f
travs
dd
'""Y.
RRF f,tI
Ro"
derecha
travs
COMF (.d
r.
Ix:crementa f.
d<1
'''''Yo
Complementa
f
f~
NotJlS:
40
BCF r,h
BSF r,h
~ripda
Limpia el bit b
der.
Establece
I
lgico el bit b
de r.
Operacin
Ciclos
Observaciones
0-> ~b)
1.2
I -> ~b)
1.2
Banderas
afectad
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
movlw
Lookup
cal!
Lookup
addwf
retlw
retlw
retl w
k
kl
k2
retlw
kn
PCL,f
,.
BTFSC f.b
BTFSS f.b
DECFSZ f.d
--
Ope-
Prueba e l bit b
Salta si f(b)=O
de f y salta si
es O lgico.
Salta s i f(b) 1
Prueba e l bit b
de f y salta si
es 1 l ~ico .
Decrementa f y f - 1 7d.salta si Z I
,,"ta , ;
O
IRico.
Incrementa f y f + 17d,salta siZ 1
............
Ciclo.
ObHtyacionea
1(2)
1(2)
1(2)
1.2.3
1(2)
1.2.3
"
..Ita , ;
IQg!co.
Salta
l
di reccin
o
etiqueta k.
Llama
subrutina k.
Regresa de una
subrutina.
Regresa
"'o
constante
enW.
Regresa de una
interrupci n.
GOTO k
CALL k
RETURN
Rl:."'LW k
RETFlE
"
O
2
=.
2
2
2
=.
Notas :
l-Si el operando fuente es un puerto. se lee el estado de las lineas del microcontrolador.
43
r,
se
Instrucciones especiales
Matm6oko
NO!'
CLRWDT
5LH P
.........
Clcloa
ro,
TO. PO
t
I
0 -7 WDT. I -7 TO,
O -7 PO
TO, PD
No opcrution.
Limpia
"
Walchdog
Timer.
Pasa al modo
slandb '.
Oboe _ _
a.nd.,..
Operacin
Dnc:ripdb
0 7 WDT, I -7
r 7PD
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
45
46
UNIDAD V
TEMPORIZADORES Y PUERTOS DE E/S
V.l. Temporizadores y contadores
Caractersticas generales
El free-run timer TMRO
Fsicamente el timer es un registro cuyo va lor se incrementa
continuamente hasta 255 y a conti nuacin vue lve a arrancar: 0, 1, 2, 3,
4 ... 255 ... 0, 1, 2, 3 ... .. etcter..
.,
000000001
PS I
n~"
KD0000001
1t'===='="=-I=!!\. .f~-_
I_ ' -_'.lli..-.JI""'-
tL
TO
INTCON
PSI
T>lRO
PSO
O_ ......... l.Irl :l_~
., 1
0--+ ........10.
,:. _+..J)""---'-_ __
, I
poooo01
OPTION
PSI
rse
47
ose,
CUCOUT(2)
TImuO
BIt TOIF
811 GIE
49
IIIIIIIII
2892896
50
Pie 16F84
In ltrrLlpcJ.n
2SS~O
00000000
TMRO
Bus de dllM
51
clrr TMRO
cl rr INTCON
;TMRO=O.
;Interrupciones y TOI F=O
;deshabil itadas.
bsr STATUS,RPO ;Regi stro OPTlON en banco 1.
movlw B 00 II 000 1 ;J'rescalar 1:4, transo de bajada,
;reloj externo y pull up 's del
;pueno B acti vados.
movwrO PT ION REG
;OPTION_ REG <- W.
TOOVL
btrss INTCON,TO IF ;Prueba bit de so brenujo.
gota TO_OVL
push
macro
movwf
swapf
W_Te mp
W_Temp,F
BANKI
swapf
movwf
OPTION_REG ,W
Optio n_Tc mp
BANKO
swapf
mov wf
endm
STATUS,W
Stat_Te mp
;W_Temp <-W.
;Intercmbialos.
;Cambio al banco l .
;W <- O PT ION_ REG.
;Option_Te mp <- W.
;Cambio al banco O.
;W <- STATUS.
;Stat_ Temp <- W.
;Fin del macro push.
52
pop
macro
swapf
movwf
BANKI
swapf
movwf
BANKO
swapf
Stat_Temp,W
STATUS
Option_Temp,W
OPTION_ REG
W_Temp,W
endm
;W <- Stat_Tcmp.
;STATUS <- W.
;Cambio al banco l.
;W <- Option_Temp.
;OPTION_REG ,,- W.
;Cambio al banco O.
;W <- W_Temp.
;Fin del macro popo
EEADR
El registro EECON I
O = No inicia la lectura.
Bit I-WR (Writc Control Bit-Bit de control de escritura)
Activando este bit se inicia la esc ritura de datos desde el regi stro
EEDATA hacia la direcc in espec ificada por e l registro EEAD R.
I = Inicia la escritura.
O = No inicia la escritura.
Bit 2-WREN (EE PROM Write Enabl e Bit-Bit de habi li tacin de
escritura a EE PROM)
Si este bit no est acti vado, el microcontro lador no permi te la escritura a
EEPROM.
1 = Escritura permitida.
O= Escritura no permitida.
55
O=
bcf
STATUS,RPO
mov lw
movwf
0,00
bsf
bsf
bcf
movf
56
57
1)
2)
3)
4)
bcf
1110"lw
mo"wf
1110\'lw
mo"wf
bsf
bcf
bsr
mo" l\\'
mo"w l'
mo" lw
Illo\'wf
bsf
bsf
58
PORTA
I r--"'\
o(0
RA2
o
o(0
' - - -+(3
TRISA
59
60
clrf
clrf
bsf
movlw
movwf
STATUS
PORTB
STATUS,RPO
OxOF
TRlSB
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.
bcf
clrf
bsf
movlw
movw f
STATUS,RPO
PORTA
STATUS,RPO
OxlF
TRISA
61
+<,
.,.
,[
'"
SWI
I
=
"
KA ,
' 30
KAl
KA,
"
llO
16
JI
RA.m'OC K I
OSC ,
MCUt
oso hu
6 [
7 [
'"
RA.Z
,[
,[
,,
,,-
Pie 16F84
v ..
Vdd
..,
RBOII f\T
h ..
hll
' 0'
RO'
RO<
-+
I
I
u . .. ...
1-"
' 310
h1l
'31 0
h ll
330 0
1-'
' M .J
o,,'"
.J
h ..
"'o
.J
Figura V.S. Li neas de los puert os del PIC I6F84 usadas como salidas
y como entradas
62
( 12 V tpico)
loop.l
6JV
J
I
LM7805
sw
Lf-3______
/ __-r--_
'~
JJOO
63
64
UNIDAD VI
MANEJO DE rNTERRUPCIONES
VI. l. Tipos de interrupcin
Las interrupciones son un mecanismo dei microcontro lador que le
permite responder a eventos asncronos en el momento que ocurren,
independientemente de lo que el microco ntro lador este reali zan do. Esta
es una parte muy importante del ci rcuito porque proporciona una
conexin entre un microcontrolador y el ambi ente que lo rodea.
Generalmente, cada interrupcin cambi a el fluj o del programa, lo
interrumpe y despus de ejec utar una rutin a de atencin contina en el
mi smo punto del programa.
Pie 16F84
f lujo dt
.,v
qUI;:U""
lD"
.--------'-~
m" ,
,,,,,,.,,...
......
Subprocn l1l1
tproun ll
c~...~ ,"""."...
"1
Punlo U t i
tJn:udOn
dtl programa
de" tJMi611
R ~dd
ttOnhll ckl
65
GIE
EEIE
TOlE
-n
67
68
Instruccin
no. N
l...a instruccin
W=x
r-------t-+
d cs puCs d c una
interrupcin, revisa
el valor d el registro
dc trabajo W
Regreso al
programa
principal
Subprograma de
la Interrupcin
donde cambia el
valor del registro
de tra bajo W a
'V'
w=y
Instruccin no.
N+ \
actual.
3) Salva los registros deseados del banco O.
4) Salva los registros deseados del banco l .
5) Ejecuta la rutina de la interrupcin (ISR).
71
PUSH
MOVWF
SWAPF
MOVWF
W TEMP
STATUS,O
STATUS_TEMP
;Salva el registro W.
;W ~ STATUS.
;STATUSJEMP ~ W.
,
;..... Salva los registros del banco O.....
BCF
MOVF
MOVWF
MOVF
MOVWF
STATUS,RPO
TMRO,W
TMRO TEMP
PORTA,W
PORTA TEMP
;Cambia al banco O.
;Salva el registro TMRO.
;Salva el registTo PORTA.
STATUS,RPO
OPT10N_REG,W
OPT10N TEMP
TRISA,W
TRISA_TEMP
;Cambia al banco 1.
;Salva el registro OPT10N.
;Salva el registro TRISA.
;Termina el PUSH.
ISR CODE
;(Programa de la interrupcin).
POI'
STATUS,RPO
TMRO_TEMP,W
TMRO
PORTA_TEMP,W
PORTA
72
;Cambia al banco O.
;Restaura reg. TMRO.
;Restaura reg. PORTA.
BSF
MOVF
MOVWF
MOVF
MOVWF
STATUS,RPO
;Cambia al banco l .
OPTION_TEMP,W ;Restaura reg. OPTION.
OPT ION_REG
;Restaura reg. TR ISA.
TRlSAJEMl',W
TRISA
SWAPF
MOVWF
MOVF
RETF IE
STATUS_ TEMP,O
STATUS
W_TEMP,W
73
;W ~ STATUS_TEMP.
;STATUS ~ W.
;Restaura contenido de W.
;Termina el POPo
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
SWAPF
MO VW F
W TEMP
STATUS,W
STATUS TEMP
BAN KO
MOVF
MOVWF
MOVF
MOVWF
TMRO,W
TMRO TEMP
PORTA,W
PORTA_TEMP
;Camb ia al banco O.
;Salva el registro TMRO.
BANKI
MOVF
MOVWF
MOVF
MOVWF
endrn
OPTION_REG ,W
OPTION_TEMP
TRlSA,W
TRlSA_TEMP
;Cambia al banco 1.
;Salva el registro OPTION.
;Salva el registro TRISA.
;Termina el macro PUSH .
74
POP macro
;*"'*** Restaura los registros del banco O*****
BANKO
MOVF
MOVWF
MOVF
MOVWF
TMROJEMP,W
TMRO
PORTA_TEMP,W
PORTA
;Cambia al banco O.
;Restaura reg. TMRO.
;Restaura reg. PORTA.
*****
BANKI
MOVF
MOVWF
MOVF
MOVWF
;Cambia al banco l .
OPTION_TEMP,W ;Restaura reg. OPTION.
OPTION_REG
TRlSA_TEMP,W
;Restaura reg. TRlSA.
TRlSA
SWAPF
MOVWF
MOVF
endm
STATUS_TEMP,W ;W f- STATUS_TEMP.
STATUS
;STATUS f- W.
W_TEMP,W
;Restaura contenido de W.
;Termina el macro POPo
75
(lNTCON<4> ).
Interrupcin de sobreflujo del contador de TMRO
Un sobreOujo del contador de TMRO (cuando la cuenta pasa de FFh a
OOh) activar el bit TOIF (lNTCON<2 . Una de las apl icaciones de esta
interrupcin es para medir tiempo . Si se conoce cuanto tiempo necesita
el contador para comp letar un ciclo de OOh a FFh, entonces el nmero de
interrupci ones multiplicado por esa cantidad de tiempo dar como
resultado el tiempo total transcurrido . En la rutina de atencin de la
interrupcin alguna variable podr ser incrementada en la memoria
RAM, el va lor de esa variable multiplicado por la cant idad de tiempo
que el contador necesita para contar un ciclo completo dar como
resultado el ti empo transcurrido. La interrupcin puede apagarse o
76
77
bsf
INTCON
8 '00010000 '
INTCON
INTCON,GIE
de la lnea RBO,
78
btfse lNTCON,O IE
goto ISR_ADDR
PUS H
btfse lNTCON,RBIF
goto ISR]ORTB
blfse lNTCON,lNTF
goto ISR_ RBO
btfse lNTCON,TOIF
goto ISR _TMRO
BANK I
btfse EECON I,EElF
goto ISR_EE PROM
BANKO
;Baneo O.
ISR]ORTB
;Seccin de cdigo procesado
;por la interrupcin .
goto EN D_ISR
ISR_RBO
79
goto END_lSR
ISR_TMRO
80
UNIDADVU
APLICACIONES
Programacin del microco nt rolador
Los ejemplos mostrados a continuacin en esta unidad mostrarn cmo
conectar el PIC l 6F84 con otros perifricos o di spos iti vos al desarrollar
un sistema en particu lar.
CI - 22.d'
Cl -I O#l'
C'2_100",r
R _ 1K
TO-92.
Algunas acciones ms comnmente usadas en algunos programas son las
4Mhz.
[(4Mhz. / 4) / 2) / 256
CONSTANT PRESCALAR_ l = I
; Macros
ESPERA
macro
movlw
constante _ 1
constante _ '
call
endm
RETA RDO
ESP_MAS macro
movlw
constante 2,PRESCALAR 2
;constante_2 es el numero de
constante=2
;sobrcn ujos a esperar.
83
movwf
movlw
;Contador de sobreflujos.
C ICLO
PRESCALAR_2 ;PRESCALAR_2 es un prescalar para
;e l TMRO pasado como parmetro
;al macro.
call
endm
RET ARDOX
movwf
mov lw
RETARDOX
clrf
BANKI
movwf
BANKO
WAITI
bcf
WAIT2
btfss
;Contador de sobreflujos.
;Prescalar (fijo) asignado a TMRO.
CICLO
PRESCALAR_
TMRO
OPTlON_REG
lNTCON,TOlF
lNTCON,TOIF
gato
decfsz
WAIT2
C ICLO, l
gota
WAITl
RETURN
84
85
6553.6ms.
6.553
Otro
Salida
;Etiquetas
loca les.
rnovlw
movw f
movf
ca ll
Dato,w
Tab la
O tro
O ut ....
movf
xorl w
btfsc
gota
inc f
gota
;Apuntador -7 reg. W.
;Dato a despl egar -7 reg. W.
;Ll amada a rutin a para desplegar dato.
Dato,w
FinTabla-1
STATUS,Z
;Es el fi nal de la cadena?
Salida
;Si, sa le del loop.
Dato,f
;No, incrementa apuntador.
Otro
;Continu a en el loop.
Salida
end m
86
org
OxOO
gota
Main
Tabla
movwf
PCL
Mensajel dt "Sistemas Digitales 11"
Mensaje2 dl "Electrnica"
Fi n Tabla
Main
PRlNT Tabla,Mensaje I ,FinTabla,Dato,LCD
Tabla
Mensaje1
FinTabla
Dato
LeO
VII.4. Los diodos emisores de luz LED 's (Ligh -Emitting Diodes)
Los LED 's son a lg unos de los elementos ms comnmente usados en
electrnica. LEO es una abreviac in de "Light Em itting Oiode". Para
seleccionar un LED se toman en cuenta varios parmetros como son el
dimetro (tpicamente 3 o 5 mm), corriente de trabajo (lOmA, pero
puede ser tan bajo como 2mA para LED 's de alta eficiencia) y el color.
El LED Y su resistencia limitadora de corriente deben conectarse
correctamente para evitar daarlo o quemarlo. El pos itivo de la fuente
debe conectarse al nodo y el ctodo al negativo o ti erra del circuito. El
ctodo es comnmente el de la pata ms corta y es la parte plana del
bulbo del LEO. La unin PN debe polarizarse correctamente para que
nuya corriente de nodo a ctodo y el LEO emita luz, por lo que debe
determinarse el valor correcto de la resistencia limitadora de corriente.
El valor de la resistencia limitadora depende bsicamente de la fuente de
al imentacin, de la cual se resta la ca ida de voltaje en el LEO (Ud), cuyo
va lor es de 1.2v a 1.6v dependi endo del color del LEO.
,"
../
L~D
PllVpl lU
-'--
88
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
"
."
"'" " I ~
~
~~
~o
MotrOC'"
Mel.ll
'"
O'M
-~
U>
r--"1
uo
----'i
.~
c'-i .
"
"
l'
mo
mo
..
mo
"
'"'
"
..
mO
..
mn
.. o.
'M
"
Jt--,. ,~
"
'"' ..
'"' ..
Fig ura V ID, Uso de los puer tos del PIC I6F84 co n leds
89
PROCESSOR 16F84
#include "p l 6f84. inc"
ORG
gota
OxOO
Main
j Vector
ORG
gota
Ox04
Main
de reset.
BANK I
movlw
movwf
mov lw
movwf
BANKO
Oxff
TRISA
OxOO
TRISB
;Inicializa puerto A.
;TRlSA ~ Oxff, entradas.
;Ini cializa puerto B.
;TRlSA ~ OxOO. salidas.
movlw
movwf
Oxff
PORTB
gota
Loop
;Pennanece en el loop.
Loop
End
;Fin de l programa.
90
VII.S. El teclado
9\
.,.
---
R niI.~IK: '.
~pU Il _
de
.. p M
..t-----4f~________;;:;_;n
...
PIe I6F84
RAZ
RA'
KA.!
TI
T2
11
RAurQCKI
osel
MClR
uso
v ..
Vdd
RIMIINT
RB'
RBI
R"
..,
Ka..
RB'
"
"
4Mlb
16
"
"
"
.,.
JJOn
um
12
I!
"
92
Local
Salida
Loop
Local
ifN ivel ~ O
btfsc Puerto,Bit
;N ive l acti vo es O?
;Lnea de entrada acti vada?
;Si, sa lta a esperar retardo.
;Nivel activo es I?
;Lnea de entrada act ivada?
;Si, salta a esperar retardo.
else
btfss Puerto, Bit
endif
gota Salida
ESPERA Retardo
ifNivel ~~ O
btfss Puerto, Bit
;Nive l acti vo es O?
;Unca de entrada desactivada
;(tecla li berada)?
;S i, sa lta a esperar retardo.
;N ivel acti vo es l .
;Lnea de entrada desactivada
;(tecla liberada)?
;S i, sa lla a esperar retardo.
Loop
else
btfsc Puerto,Bit
endif
gota
Loop
ESPERA Retardo
call
Rutina
Salida
endm
Nivel
Puede ser "O" o " 1" y representa la transicin de subida o de
bajada a detectar para considerar que una tecla se ha pres ionado o
liberado.
Puerto
Bit
Retardo
Rutina
94
; Declaracin de variables
C block OxOc
CICLO
PRESCALAR_2
endc
; Estructura de la Memoria de Programa
ORG
Oxoo
goto
Main
ORG
goto
Ox04
Main
# include
#include
# include
"bancos.inc"
"tecla.inc"
"espera.inc"
;Vector de resel.
;Yector de interrupcin .
;No hay rutina de interrupcin.
Main
BANKI
movlw
movwf
movlw
movwf
OxlT
TRJSA
OxOO
TRJSB
;Inicializa puerto A.
;TRlSA ~ Oxff, entradas.
;Iniciali za puerto B.
;TRJSB ~ OxOO, salidas.
PORTB
;Puerto B ~ O.
BANKO
clrf
Loop
TECLA O,PORTA ,O, 1OO,Enciende
Loop
bsf
retum
PORTB ,7
;Enciende el LEO
bcf
PORTB ,7
;Apaga el LEO
Enciende
Apaga
retum
End
95
VII.6. El optoacoplador
Un optoacoplador combina un LED y un foto-transistor en el mismo
encapsulado. El propsito de un optoacoplador es separar dos partes de
un circ uito por las siguientes razones:
> Interferencia.
..
, "
"
RAO
4MH.l
ose,
MCi:R
Hly
"
v.
...
....,"
ose,
Vdd
." "
...
...
"
"
"
97
PROCESSOR 16F84
#include " p 16f84.inc"
ORG
goto
OxOO
Main
;Vector de reset.
ORG
goto
Ox04
Main
;Vector de interrupcin.
;No hay rutina de interrupcin.
#include "bancos.inc"
Main
BANKl
mov lw
movwf
mov lw
movwf
movlw
movwf
BA NKO
Loop
Oxff
TRISA
OxOO
TRlSB
;Inicializa puerto A.
;TRlSA ~ Oxff. entradas.
;Inicial iza puerto B.
;TRlSB ~ OxOO, salidas.
b00l l0000
OPTION_REG
clrf
clrf
PORTB
TMRO
;Puerto B ~ O.
;TMRO f- O.
movf
movwf
goto
TMRO.w
End
PORTB
Loop
98
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
...
PIe 16F84
RAl
RAI
RAl
NAO
'01<0
"
RA4ffOCKI
osel
16
Ma:R
osa
"
V ..
"
+5\
Vdd
RBM NT
..7
.8'
N"
."
R.'
99
VII.9. El relevador
El relevador es un dispositivo electromecnico que transforma una seal
elctrica en movimiento mecnico. Consiste de una bobina de alambre
con material aislante, un ncleo de metal y una armadura metlica con
uno o ms contactos.
100
PIe 16F84
RA '
RA'
RAJ
RAO
oso
ose,
MCtR
v.
"
"
"
4M A:l
"
VdO
RBOIINT
R87
RB,
R. .
RBl
RB'
"
'UJ
R"
"
"
"
- Utv
so...
......
TO
Rtetifka60r
~'"~
Uv
'"
ot<l...
101
102
PIe 16F84
RA2
KAI
18
RAl
RAI
17
-4MJlz
osel
MCiJi
v..
ose,
VdO
7
Rel
R"
Re,
R.'
RBJ
RR4
"
"
/
C.rga
/
/'
- UOv
60Ht
330
,.. lOd
1I",.~ .. riIo
ckt .pto. copl .....
103
PROCESSOR 16F84
#include "pI6f84.inc"
RELE
PORTB,6
ORG
gota
OxOO
Main
;Vector de reset.
ORG
gato
Ox04
Main
#include "banking"
#include "tecla .inc'
#include "espera.inc"
;Inicio del programa principal.
Ma in
BANKI
movlw
movwf
movlw
OxfT
TRISA
OxOO
;Inicializa puerto A.
;TRISA ~ Oxff. entradas .
Inicializa puerto B.
104
movwf
BANKO
TRJSB
clrf
PORTB
;Puerto B f- O.
Loop
TECLA O,PORTB ,O, I OO,Enciende
TECLA O,PORTB , 1, lOO,Apaga
goto
Loop
Enciende
bsf
RELE
;Enciendc el relevador.
RELE
;Apaga el relevador.
retum
Apaga
bcf
retum
End
, - - - --,
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
PIC 16F84
KA,
ItA I
OA'
u-!Z-
RA4fI'OCKI
osel
MCOi
osa
Va
4Mlb
,1)~.1.1.
'l'1'~
~ re: ;::;-
Vdd
. . . . NT
'8'
r--'i
081
RH<
,--!-I
RB'
08'
...
12
)J()
11
110
RBJ
~~~IO
'JOJ-----l-_
1]0
JJ'
,JO
JJ'
107
160
108
96
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:
Estado actual
Display del
Display del
digito ms
dig ito menos
sign ificat ivo
sign ificativo
- (MSDl
- (lSDl
O
O
l
Estado sjguiente
Display del
Display del
digito ms
dig ito menos
significati vo
significati vo
-(LSDl
(MSD)
O
1
O
O
O
1
O
1
1
O
1
1
109
Por eje mpl o, DI SPLA Y7 Ox21 desp legar el numero 21 en los display' s
como lo muestra el programa siguiente:
; . .... Declaracin y config uracin del mi crocontrolador .....
PROCESSOR 16F84
#include " p 16f84.inc'
; Declaracin de variables
Cblock OxOc
Encendido
Digito
ende
ORG
gota
OxOO
ORG
Ox04
gota
ISR
; Vector de reset.
Maio
;Vector de interrupcin.
;Salto a rutina de interrupcin .
Main
INIT_ DISPLA y
DISPLA Y7 0><21
loop
goto loop
End
;Permanece en el loop.
;Fin del programa
11 0
INIT_DlSPLAY macro
; Inicial iza los Puertos ......
BAN KI
clrf
clrf
TRISA
TRJSB
BANKO
clrf
PORTA
clrf
PORTB
; Inicializa el Timer
BANKI
movlw
movwf
B' I OOOOIOO'
OI'TION_REG
B'OO 100000'
INTCON
:TMRO .
BANKO
movlw
movwf
movlw
movwf
bsf
cndm
DISPLAY? macro
mov lw
movwf
ca ll
endm
.96
TM RO
INTCON,GIE
;Arranca cl Timer.
;Habilita globa lmente intemlps.
Dato
Dato
Di gi to
Despliega
bcf
btfsc
goto
movlw
movwf
bcf
call
INTCON,GIE
INTCON,GIE
I SR
.96
TMRO
INTCON,TOIF
Despliega
RETFIE
111
Despliega
movf
clrf
andlw
movwf
PORTA,W
PORTA
OxOF
Encend ido
Encendido,O
bsr
bcr
Encendido,O
Encendido, l
Dcspl icga_ LSD
Encendido, l
Apaga_ MSD
Enccndido,O
Encendido,l
Despliega_ MSD
Encendido, !
;Apaga MSD.
Digito ,W
gota
Prueba~MSD
Prueba_ MSD
blfsc
gota
bcr
bsr
gala
Apaga_ MSD
bcr
Despl iega_ LSD
movf
andlw
subl w
btfss
gota
movf
andlw
gota
Mayor_9_ LSD
movlw
gala
OxOF
.9
STATUS,C
Mayor_ 9_ LSD
Di g ito,W
OxOF
Di splayOut
. 10
Disp layOut
112
Despliega_MSD
swapf
andlw
sublw
btfss
goto
swapf
and lw
goto
Mayor_9_MSD
movlw
Digi to, l
OxOF
.9
STATUS ,C
Mayor_9_MSD
Digito,W
OxOf
Di sp layOul
. 10
Tabla_7Segs
PORT8
Encendido, W
PORTA
DisplayOut
call
movwf
movf
movwf
RETURN
PCL, I
8 '001 11111 '
8 '0000011 0'
8 '01011011 '
8 '01001 11 1'
8'011001 10'
8'011011 0 1'
8 '0 111 110 1'
8 '00000111 '
8'01111111'
8 '0 11 01 111'
8'00000000'
11 3
Se le,m,"'; de ;mpr,m"
<+)
""""
IIIDIIII
2892696
U'M
TK189S
M'
V .O
2892896
Hotas del PtC16FU pIIr1I I
:10 AlMO
ISD I '10-n - nU - 1
... n
II1II11 :
11."
- Ql
.U -I'70 J1 - 025"
.....""-
..., ~
IIflllOf'Ol.J1.vu.
c.._._ ~
...
~-.....:.
-~
S - ..
...........,.
c:-.-".~~
~,~EdfIDMIM