Está en la página 1de 150

_____________________________________________________________________________________ 1

ndice

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ (

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ -

ndice

Presentacin

Captulo 1 *Prctica 1+ "misin , Recepcin con cdi&o CRC .istado de "misor asm /r&ani&rama &eneral de "misor asm .istado de Recept asm /r&ani&rama &eneral de Recept asm .istado de Rs(-( asm .istado 1 or&ani&ramas de !eclado asm .istado de .cd asm .istado de P16284 inc

11 11) (4 (0 --0 -) 41 4-

Captulo 2 *Prctica (+ "scritura , .ectura con cdi&o 3ammin& .istado de 3ammin& asm

40 4) 0-

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 4

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

/r&ani&ramas de 3ammin& asm

64

Captulo 3 *Prctica -+ 5imulador ascensor de cuatro pisos .istado de 6scensor asm /r&ani&rama &eneral de 6scensor asm

)1 ))) 88

Captulo 4 (Gua del Pic 16F84) 1 "ncapsulado ( 6r7uitectura interna - Re&istros internos 4 Pro&ramacin 0 Instrucciones del Pic

41 440 46 18184

Captulo 5 (Gua del

icro!Pic "rainer)

184 111 110 11) 1(1

1 6r7uitectura del 9icroPic !rainer ( Componentes del 9icroPic !rainer - "l mdulo de $isualizacin .C# 4 5o2t:are recomendado

Captulo 6 (Gua del

icro!Pic "rainer Plus)

1(1(0

1 6r7uitectura del 9icroPic !rainer Plus

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 0

( Componentes del 9icroPic !rainer Plus - "l teclado ;e<adecimal 4 Canal de comunicacin serie R5(-( 0 5o2t:are de control para el 9icroPic !rainer

1-1 1-( 1-4 1-6

Presupuesto

1-)

#p$ndice # (Contenido del dis%uete)

141

#p$ndice & (&i'lio(ra)a)

140

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 6

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ )

Introduccin

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 4

*ntroduccin

"l presente Pro1ecto Fin de Carrera tiene por objeto elaborar un conjunto de prcticas de di2erente complejidad 7ue sir$an de apo1o en la docencia de los microcontroladores PIC16F84 .os microcontroladores PIC suponen un a$ance si&ni2icati$o en la materia de dispositi$os di&itales empleados en el control de sistemas 5u reducido tama=o as% como sus ele$adas prestaciones lo con$ierten en un elemento indispensable en el campo de los microcontroladores Por este moti$o> desde el #epartamento de "lectrnica> !ecnolo&%a de Computadoras 1 Pro1ectos se pretende realizar un conjunto de prcticas 7ue pro2undicen en las prestaciones de los mismos de 2orma 7ue el alumno asimile los conceptos 2undamentales mediante la realizacin de una serie de prcticas de complejidad creciente "stas prcticas adems estn orientadas a la realizacin de supuestos industriales reales con los 7ue el alumno se $a a encontrar en el ejercicio de su pro2esin Por tanto> se pretende dotar al #epartamento de un conjunto de prcticas de alto ni$el> 7ue permitan apro$ec;ar al m<imo los recursos materiales de 7ue se dispone en el laboratorio "l Pro1ecto consta de tres cap%tulos en los 7ue se desarrollan di$ersas prcticas basadas en el microcontrolador PIC16F84> se&uidos por tres cap%tulos en los 7ue se detallan caracter%sticas t?cnicas de este microcntrolador as% como del @it de desarrollo a 2in de 7ue este trabajo pueda ser empleado como un manual didctico completo

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 18

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 11

Cap%tulo 1

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1-

Practica 1+ ,-isin . /ecepcin de datos en serie con cdi(o C/C

.a prctica trata de conectar dos placas microApic trainer mediante el puerto serie del micropic trainer plus Bna placa $a a actuar como emisora de datos 1 otra como receptora Para comprobar si la comunicacin ;a sido correcta se $a a utilizar un cdi&o CRC .os dos pro&ramas necesarios para la realizacin de la prctica *el de la placa emisora 1 el de la receptora+> se $an a pro&ramar en un microprocesador pic 16284 *$er &u%a del pic16<84 1 &u%a del microApic trainer+ .a placa emisora> $a a obtener los datos del teclado ;e<adecimal ubicado en el micropic trainer plus .os datos $an a ser tomados en &rupos de tres> es decir> cada $ez 7ue se pulsen tres teclas> el pro&rama instalado en el PIC de la placa emisora les $a a realizar el cdi&o CRC 1 las $a a en$iar junto con este a tra$?s del puerto serie ubicado en el micropic trainer plus *$er 2i&ura (+ Cada tecla se $a a considerar como cuatro bits de datos de manera 7ue al 8 le corresponder el 8888> al 1 el 8881> al ( el 8818> 1 as% ;asta lle&ar a la F *1111+ "l conjunto de tres teclas> $a a 2ormar entonces un dato de 1( bits 7ue $a a ser con$ertido a un cdi&o CRC tambi?n de 1( bits "n el .C# del microApic trainer se $a a $isualizar el conjunto de las tres teclas pulsadas 1 el cdi&o CRC correspondiente a las mismas *$er 2i&ura 1+ Bna $ez $isualizado se mandarn $%a serie las teclas 1 el cdi&o correspondiente a estas #ebido a 7ue el CRC ocupa 1( bits> se tendrn 7ue realizar dos transmisiones> una de 8 bits 1 otras con los otros 4 bits

Fi(ura 1 9icroApic trainer "n el .C# se obser$a un ejemplo de 2uncionamiento de la placa emisora

Fi(ura 2 9icroApic trainer plus "n ?l se encuentra el teclado 1 el puerto serie

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 14

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

.a placa receptora> $a a recibir las tres teclas pulsadas 1 su cdi&o CRC correspondiente Bna $ez recibidas las teclas> estas $an a ser $isualizadas en el .C# 1> a su $ez> con$ertidas a su cdi&o CRC Por Cltimo> se $a a recibir el cdi&o CRC obtenido en la placa emisora 1 se pasar al obtenido por esta 5i el resultado de este nue$a CRC es cero> la transmisin ;abr sido correcta 1 nos aparecer el mensaje de buena 5i> por el contrario> el CRC obtenido no es nulo> la transmisin ser incorrecta 1 aparecer en el .C# un mensaje de error Como la placa emisora realiza operaciones con el .C# 1 con el teclado 7ue pueden a2ectar a la transmisin> se $an a introducir en ambos pro&ramas unas rutinas con retardos #e esta 2orma> antes de recibir un dato> la placa receptora $a a entrar en un bucle de 8>1 se&undosD si la l%nea de recepcin se mantiene a 1 durante este periodo de tiempo> se pasa a la recepcin del dato> si la l%nea cambia antes de 7ue ;a1an transcurrido los 8>1 se&undos> se $uel$e a comenzar la cuenta desde cero Cada $ez 7ue la placa emisora $a a transmitir> mantiene la l%nea de transmisin a 1 durante 8>( se&undos> para ase&urarse as% 7ue la receptora pasa a recibir 9ediante este proceso de retardos> se $an a conse&uir despreciar los ecos producidos en el teclado 1 las operaciones realizadas en el .C# de la placa emisora> 1a 7ue esta utiliza la misma l%nea para transmitir> para operar con el .C# 1 para obtener datos del teclado 5i no se realiza esta operacin de retardos> la placa receptora podr%a considerar las operaciones realizadas por la placa emisora como datos en$iados 1 recibir> por tanto> datos incorrectos continuamente "l cdi&o CRC> se obtiene a partir de un dato de 1( bits "l dato es con$ertido a un cdi&o CRC de 2orma 7ue si el dato $ar%a el CRC $ar%a> correspondiendo un Cnico CRC a cada conjunto de 1( bits "l CRC $a a ser el especi2icado mediante el si&uiente polinomio &eneradorE
G * X + = X 1( + X 11 + X - + X ( + X + 1

.as F del polinomio &enerador indican 7ue en esa posicin del CRC ;a1 colocada una puerta /R e<clusi$a #e esta 2orma> el es7uema electrnico correspondiente a este polinomio $a a ser el representado en la 2i&ura (

Fi(ura 2 "s7uema correspondiente a '*<+ Como se puede apreciar en la 2i&ura (> para cada F ;a1 una puerta F/R pero de 2orma in$ersa> es decir> para F a la doce> tenemos una F/R *"+ en el bit 8 del CRC> para F a la 11 la tenemos en el bit 1 *#+> para F cubo en el bit 4 *C+> para F cuadrado en el 18 *G+ 1 para F lo tendremos en el bit 11 *6+
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 10

.os bits del 8 al 1 2orman un re&istro de desplazamiento de manera 7ue cada pulso de reloj ori&ina 7ue el bit 8 pase al )> el ) pase al 6> 1 as% sucesi$amente ;asta lle&ar al ( 7ue pase al 1 .os bits a codi2icar sern introducidos por la entrada IH Para comprobar el modo de 2uncionamiento del circuito> se introduce un 1 en la entrada IHD si se considera 7ue el re&istro CRC esta a cero inicialmente> la salida de la puerta " ser un 1 *recordar 7ue una F/R nos da a la salida un uno cuando las entradas son distintas+D este uno $a a parar a las dems puertas de 2orma 7ue en 6 se tiene este 1 1 un 8 del re&istro once *es un cero ;asta 7ue lle&a el si&uiente pulso de reloj> momento en el cual pasa a $aler i&ual 7ue la realimentacin> 7ue es 1 en este caso+> por lo 7ue el re&istro diez pasa a $aler 1D a la puerta G entra el 1 1 un 8 del re&istro diez *1a 7ue toda$%a no se ;a producido el pulso de reloj cuando la realimentacin lle&a a la puerta+> dando un 1 para el re&istro nue$eD de i&ual 2orma se obtiene un 1 en el oc;oD al siete $a lo 7ue ;ab%a en el oc;o> es decir> un 8 *antes del pulso de reloj+> al seis lo 7ue ;ab%a en el siete 1 al 2inal del re&istro de desplazamiento tendremos un 8 *en este caso+D por Cltimo en la puerta # entra el 1 1 un 8 del re&istro 1 dando un 1 para el re&istro 8 !ras esto se obtiene el CRC 111188888881 para una entrada 1D el si&uiente bit entra por IH 1 $aria el re&istro CRC Cuando los 1( bits del dato se ;a1an introducido> se tendr su cdi&o CRC correspondiente 5i al cdi&o CRC obtenido se le introduce este mismo CRC la salida $a a ser cero 6pro$ec;ando esta propiedad> se emite el dato 1 su CRC *placa emisora+D tras recibir el dato *placa receptora+> se le realiza el CRC 1> a este> se le introduce el CRC recibido de 2orma 7ue si el resultado es cero> la transmisin ;a sido correcta * Ier 2i&ura -+

Fi(ura 3 "s7uema de la comprobacin de transmisin "n la tabla 1> se $a a reco&er todo el proceso correspondiente a la trans2ormacin de un dato a CRC "l dato $a a ser 1888 8888 1881 *884+ "n la tabla representada se $a a $er la posicin> el cdi&o CRC en cada posicin 1 el bit de entrada Posicin C/C 8 888888888888 1 111188888881 ( 188818888881 181181888881 4 818118188888 0 881811818888 6 888181181888 ) 888818118188 8 888881811818 4 888888181181 18 111188818111 11 188818881818 1( 1111 1111 1111 "a'la 1 /btencin de cdi&o CRC a partir de un dato *0 1 8 8 1 8 8 8 8 8 8 8 1

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 16

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Por Cltimo> se $a a obtener de nue$o el cdi&o CRC del $alor obtenido en la tabla 1 para comprobar si e2ecti$amente tiene 7ue dar cero "n este caso el $alor inicial del CRC no $a a ser cero> sino 7ue $a a ser el $alor obtenido en la anterior tabla Posicin 8 1 ( 4 0 6 ) 8 4 18 11 1( C/C 181181888188 818118188818 881811818881 888181181888 888818118188 888881811818 888888181181 888888818118 888888881811 888888888181 888888888818 888888888881 1111 1111 1111 "a'la 22 Comprobacin de transmisin correcta *0 8 8 1 8 8 8 1 8 1 1 8 1

"n las pr<imas pa&inas> se presenta un listado de los distintos pro&ramas necesarios para la pro&ramacin del pic> as% como comentarios e<plicati$os de todos ellos 6l 2inalizar el listado de cada pro&rama> se presenta un or&ani&rama del mismo "misor asm E "s el pro&rama principal a instalar en la placa emisora *el 7ue se instala ;a de ser el 2ic;ero emisor ;e<+ Recept asmE "s el pro&rama a instalar en la placa receptora Rs(-( asmE "l 2ic;ero no ;a1 7ue pro&ramarlo> pero ;a1 7ue tenerlo a la ;ora de ensamblar cual7uiera de los dos anteriores pro&ramas "n el se inclu1en las rutinas necesarias para lle$ar a cabo la transmisin 1 recepcin serie !eclado asmE Como el anterior> pero se encar&a de controlar el teclado ;e<adecimal .cd asmE Como los anteriores> pero para el control del .C# P16284 incE "l 2ic;ero inclu1e Cnicamente las de2iniciones de re&istros 1 $ariables necesarias para pro&ramar el micro 16284 .a directi$a include del ensamblador permite incluirlo en cual7uier pro&rama 2uente

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1)

EMISOR.ASM
El programa toma las teclas pulsadas en el teclado del upic trainer plus y las enva por el puerto serie. Las teclas pulsadas son tomadas de tres en tres y representadas en el LCD del upic trainer. A su vez los conjuntos de tres teclas son convertidos a un cdigo CRC de doce bits que es enviado por el puerto serie y visualizado en el LCD. ediante el uso de este cdigo CRC! podemos comprobar si "ay error o no en la transmisin serie. list p#$%&'( )*e de&ine el tipo de dispositivo ).ncluye arc"ivo con de&inicin de registros

include +a,-p$%&'(.inc+ Lcd/var equ 010c 2ey/var equ 010e Rs343/var equ 01$0 5emp/$ equ 01$4 5emp/3 equ 01$( DA6.D equ 01$7 8.5$ equ 01$% 8.53 equ 01$9 CRC$ equ 01$' CRC3 equ 01$: RE;$ equ 01$a RE;3 equ 01$b DA6 equ 01$c DA6$ equ 01$d 8A<D.=* equ .:%00 CL2.> equ .(000000 org goto org 0 .>.C.= 7

).nicio de las variables para el LCD ).nicio de las variables para el teclado ).nicio de las variables para la comunicacin )De&inicin de las distintas variables usadas )en el programa

)6elocidad de comunicacin )?recuencia de trabajo en ciclos @ segundo )Aara que al resetear se vaya a .>.C.= ).ndica donde comienza el programa )Carga rutinas del LCD )Carga rutinas del teclado )Carga rutinas para la )comunicacin

include +a,-LCD.A* + include +a,-5ECLAD=.A* + include +a,-R*343.A* + 5A8LA mov& movC& 5emp/$!B ACL

)>os va a llevar los desplazamientos )dentro de los distintos mensajes

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A continuacin se de&inen los distintos mensajes que van a aparecer en el LCD del microEpic trainer. ensaje equ F retlC retlC retlC retlC retlC retlC retlC GDG GaG GtG GoG G,G G G 0100

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 18

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

ensaje$ equ F retlC GCG retlC GRG retlC GCG retlC G,G retlC 0100 ensaje3 equ F retlC GEG retlC GmG retlC GiG retlC GsG retlC GoG retlC GrG retlC G G retlC GdG retlC GeG retlC G G retlC GdG retlC GaG retlC GtG retlC GoG retlC GsG retlC 0100 ensaje4 equ F retlC GeG retlC GnG retlC G G retlC GsG retlC GeG retlC GrG retlC GiG retlC GeG retlC G G retlC GcG retlC GoG retlC GnG retlC G G retlC GCG retlC GRG retlC GCG retlC 0100 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Comienzo del programa. .>.C.=, clr& bs& movlC movC& DA6.D *5A5<*!RA0 bG0000$$$$G =A5.=>/RE; )8orra la variable DA6$ )*elecciona pagina $ de datos

)Areescaler de $3' para perro )guardiHn bc& .>5C=>!;.E )Desconecta interrupciones bc& *5A5<*!RA0 )*elecciona pagina 0 de datos clrCdt )Re&resca perro guardiHn call <A/LCD )Con&igura R8 y RA para control del LCD call LCD/.>. )Rutina de inicializacin del LCD movlC bG0000$$00G call LCD/RE; )Conecta el LCD movlC bG0000000$G )8orra el LCD y lo sitIa en la )posicin de inicio JK= EL call LCD/RE; ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 14 )*alida del mensaje +Emisor de datos+. movlC movC& movlC movC& .>.C.=/3, ensaje3 5emp/$ )Carga la variable con el inicio del mensaje .$7 5emp/3 )>M de caracteres del mensaje )Lee el carHcter de la tabla )Lo visualiza en el LCD )Desactiva transmisin para que )receptor no reciba datos errneos )Retardo en la visualizacin del carHcter 5emp/$!? )6a al siguiente carHcter de la tabla 5emp/3!? )*i es el Iltimo sale del bucle. .>.C.=/3 DA6.D!0 FN: 01c0 LCD/RE; )*i es la primera vez que pasa salta )para visualizar otro mensaje. )*egunda lnea del LCD 5A8LA LCD/DA5= 51d/pin

call call bc& delay inc& dec&sz goto clrCdt bt&sc goto movlC call

call

)6isualizacin del mensaje +en serie con CRC+. movlC movC& movlC movC& bs& goto ensaje4 5emp/$ .$% 5emp/3 DA6.D!0 )Lo pone a uno para que la pr1ima no .>.C.=/3 )sea otra vez la primera pasada.

bc& DA6.D!0 call delay call delay call LCD/.>. )Repetimos el proceso para visualizar movlC bG0000$$00G )dos nuevos mensajes. call LCD/RE; movlC bG0000000$G call LCD/RE; movlC ensaje )6isualizacin del mensaje +Dato,+ movC& 5emp/$ movlC .% movC& 5emp/3 .>.C.=/$, call call inc& dec&sz goto clrCdt bt&sc goto movlC call movlC movC& movlC movC& bs& goto 5A8LA LCD/DA5= 5emp/$!? 5emp/3!? .>.C.=/$ DA6.D!0 L==A 01c0 LCD/RE; ensaje$ 5emp/$ .( 5emp/3 DA6.D!0 .>.C.=/$ )*i es la 3O pasada se va a L==A )6isualizacin del mensaje +CRC,+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ (8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 8ucle principal del programa. L==A, clrCdt call movlC subC& bt&sc goto call call bt&ss goto bt&ss goto goto bs& movC& movlC goto bs& movC& rl& rl& rl& rl& bc& bc& bc& bc& movlC goto bs& mov& iorC& bs& bs& bs& bs& mov& andC& movlC call mov& sublC bt&ss goto mov& addlC call goto

2ey/*can 01'0 5ecla!B *5A5<*!P L==A 2ey/8CD <A/LCD DA6.D!9 primera DA6.D!% segunda tercera DA6.D!9 8.53 01'% sigue DA6.D!% 8.5$ 8.5$!$ 8.5$!$ 8.5$!$ 8.5$!$ 8.5$!4

)E1plora el teclado )*i "ay tecla pulsada sale del

bucle

)*i es la $O pasada va a primera )*i es la 3O pasada va a segunda )*i no es ni $O ni 3O! va a tercera )Lo activa para que sea 3O pasada

primera

segunda

)Lo activa para que sea 4O pasada )Rota a la izquierda 8.5$ cuatro veces )para dejar el dato en las cuatro )posiciones de mHs peso. )Las cuatro posiciones de menos peso las )pone a cero.

tercera

sigue

8.5$!3 8.5$!$ 8.5$!0 01'9 sigue DA6.D!7 )Aara indicar que es la 4O pasada 2ey/$!B 8.5$!? )Copia la tecla en los cuatro bits 2ey/$!9 ) de menos peso de 8.5$ 2ey/$!% )La variable 2ey/$ se utiliza como 2ey/$!7 )au1iliar en el arc"ivo teclado.asm 2ey/$!( 2ey/$!B 8.5$!? 01'' LCD/RE; )Aosiciona el cursor del LCD segIn pasada. 5ecla!B ) ueve la tecla pulsada al acumulador .: *5A5<*!C )Q Es mayor que nueve R ayor/que/: )* 5ecla!B )>o 0140 )Ajuste A*C.. de datos del 0 al : LCD/DA5= )6isualiza el dato serie 5ecla!B 0149 LCD/DA5= *5A5<*!RA0 )Ajuste A*C.. de datos de la A la ? )*elecciona pHgina $

ayor/que/: mov& addlC call serie bs&

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ (1 movlC movC& bs& bc& bs& mov& movC& call call bt&sc goto goto bG$$$0$$$$G A=R58 )R87 entrada y R8( salida =A5.=>/RE;!>=5/R8A< )Desconecta cargas pullSup *5A5<*!RA0 )*elecciona pHgina 0 51d/pin )Activa pin de transmisin 5ecla!B 51dreg )5ransmite carHcter pulsado delay )Retardo en la transmisin 51D DA6.D!7 )*i es la 4O pasada va a CRC crc L==A

Rutina de temporizacin de unos 0!3 segundos. delay movlC .300 movC& DA6$ delay$ movlC .370 movC& DA6 )La temporizacin se realiza mediante delay3 nop )las restas sucesivas de dos variables dec&sz DA6!? goto delay3 dec&sz DA6$!? goto delay$ return Esta rutina se encarga de transmitir los $3 bits del cdigo CRC mediante la transmisin de CRC$ y CRC3. crc movlC 01c( call LCD/RE; )Coloca posicin en LCD call AR=; )=btiene cdigo CRC de 8.5$ y 8.53 clr& DA6.D )8orra la variable para que la )pr1ima sea la 4O pasada. bs& *5A5<*!RA0 )*elecciona pHgina $ movlC bG$$$0$$$$G movC& A=R58 )R87 entrada y R8( salida bs& =A5.=>/RE;!>=5/R8A< )Desconecta cargas pullSup bc& *5A5<*!RA0 )*elecciona pHgina 0 bs& 51d/pin mov& CRC$!B movC& 51dreg call delay call 51D )5ransmite los ' primeros bits del CRC bs& 51d/pin mov& CRC3!B movC& 51dreg call delay call 51D )5ransmite los ( Iltimos bits del CRC call <A/LCD movlC .( movC& DA6$ rl& CRC3!? )Rota cuatro posiciones para colocar rl& CRC3!? )los ( bits a visualizar de CRC3 en rl& CRC3!? )las posiciones de mHs peso. rl& CRC3!? crc3 rl& CRC3!? bt&sc *5A5<*!C )*i al rotar C vale uno! el bit a movlC G$G )visualizar serH un $ si no serH un 0 bt&ss *5A5<*!C movlC G0G call LCD/DA5= ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ ((

I ! I "specialidad "lectrnica Industrial dec&sz DA6$!? goto crc3 movlC .' movC& DA6$ rl& CRC$!? bt&sc *5A5<*!C movlC G$G bt&ss *5A5<*!C movlC G0G call LCD/DA5= dec&sz DA6$!? goto crc$ goto L==A

#a$id Rodr%&uez 'onzlez ___________

)Cuando imprima ( bits salta a crc3 )para ver los otros oc"o. )Aara visualizar ' datos

crc$

)Cuando visualiza los ' vuelve a L==A

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Esta rutina se encarga de darnos el cdigo CRC de los datos representados en 8.5$ y 8.53. El resultado de $3 bits es devuelto en CRC$ y en los cuatro bits de menos peso de CRC3. AR=; movlC dG'G movC& 5emp/$ movlC dG7G movC& 5emp/3 clr& CRC$ clr& CRC3 clr& DA6$ mov& 8.5$!C movC& RE;$ mov& CRC$!C 1orC& RE;$!? )=r e1clusiva entre RE;$ y el acumulador bt&sc RE;$!0 goto vale$ goto vale0 movlC bG0000$000G movC& DA6 movlC bG0000$$$0G movC& RE;3 movlC bG000000$0G movC& RE;$ goto FN7 )6a cinco posiciones adelante movlC bG$$$$0$$$G movC& DA6 clr& RE;$ clr& RE;3 mov& RE;3!C 1orC& CRC3!? mov& RE;$!C 1orC& CRC$!? goto rotar )Rota una posicin el cdigo CRC. bc& CRC3!9 mov& DA6!C bt&sc DA6!4 iorC& CRC3!? bt&ss DA6!4 andC& CRC3!? bt&sc DA6$!0 goto base3 rr& 8.5$!$ mov& 8.5$!C movC& RE;$ dec&sz 5emp/$!$

base

vale$

vale0

&inrot

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ (goto base movlC dG$G movC& DA6$ mov& 8.53!C movC& RE;$ rr& 8.53!$ dec&sz 5emp/3!$ goto base return )*i se "an acabado los ( bits de 8.53 sale de la

base3

rutina.

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD La rutina se encarga de rotar una posicin a la derec"a el cdigo CRC! de &orma que el bit de menos peso de CRC3 pasa a ser el de mHs peso de CRC$. rotar bt&sc CRC$!0 bs& DA6$!9 bt&ss CRC$!0 bc& DA6$!9 bt&sc CRC3!0 bs& DA6$!% bt&ss CRC3!0 bc& DA6$!% rr& CRC$!$ rr& CRC3!$ bt&sc DA6$!9 bs& CRC$!9 bt&ss DA6$!9 bc& CRC$!9 bt&sc DA6$!% bs& CRC3!9 bt&ss DA6$!% bc& CRC3!9 bt&sc CRC$!0 bs& CRC3!4 bt&ss CRC$!0 bc& CRC3!4 bt&sc CRC3!9 bs& CRC$!9 bt&ss CRC3!9 bc& CRC$!9 bc& CRC3!9 goto &inrot

)6uelve a la posicin siguiente de donde se )llamo a la subrutina.

end

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ (4

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ (0

=rganigrama general para el programa E .*=R.A*

RECEPT.ASM
El programa toma las teclas pulsadas en el teclado del upic trainer plus de la placa emisora a travTs del puerto serie. Las teclas son recibidas de tres en tres y representadas en el LCD. <na vez convertidas a su cdigo CRC se recibe va serie el cdigo calculado por el emisor y se comprueba si es igual al calculado! comprobHndose as si "ay o no "ay error en la transmisin.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ (6

I ! I "specialidad "lectrnica Industrial list p#$%&'(

#a$id Rodr%&uez 'onzlez ___________

)*e de&ine el tipo de dispositivo

include +a,-p$%&'(.inc+ ).ncluye arc"ivo con de&inicin de )los registros. Lcd/var equ 010c Rs343/var equ 01$$ 5emp/$ equ 01$4 5emp/3 equ 01$( DA6.D equ 01$7 8.5$ equ 01$% 8.53 equ 01$9 CRC$ equ 01$' CRC3 equ 01$: RE;$ EU< 01$a RE;3 EU< 01$b *ER equ 01$c *ER$ equ 01$d 8A<D.=* equ .:%00 CL2.> equ .(000000 org goto org 0 7 ).nicio de las variables para el LCD ).nicio de las variables de las rutinas R*343 )De&inicin de las distintas variables usadas )en el programa.

)6elocidad de comunicacin )?recuencia de trabajo en c@s )Aara que al resetear se vaya a .>.C.= ).ndica donde comienza el programa

.>.C.=

include +a,-LCD.A* + )Carga rutinas del LCD include +a,-R*343.A* + )Carga rutinas para la comunicacin 5A8LA mov& movC& 5emp/$!B ACL )>os va a llevar los desplazamientos dentro )de los distintos mensajes

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A continuacin se de&inen los distintos mensajes que van a aparecer en el LCD del upic trainer. ensaje equ F retlC retlC retlC retlC retlC retlC retlC GDG GaG GtG GoG G,G G G 0100

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ () ensaje$ equ F

retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC

GRG GeG GcG GeG GpG GcG GiG GoG GnG G,G 0100

ensaje3 equ F retlC G G retlC GRG retlC GeG retlC GcG retlC GeG retlC GpG retlC GtG retlC GoG retlC GrG retlC G G retlC GsG retlC GeG retlC GrG retlC GiG retlC GeG retlC 0100 ensaje4 equ F retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC GdG GeG G G GdG GaG GtG GoG GsG G G GcG GoG GnG G G GCG GRG GCG 0100

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Comienzo del programa. .>.C.=, clr& bs& movlC movC& bc& bc& clrCdt DA6.D *5A5<*!RA0 )*elecciona pagina $ de datos bG0000$$$$G =A5.=>/RE; )Areescaler de $3' para perro )guardiHn .>5C=>!;.E )Desconecta interrupciones *5A5<*!RA0 )*elecciona pagina 0 de datos )Re&resca perro guardiHn

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ (8

I ! I "specialidad "lectrnica Industrial call call movlC call movlC call

#a$id Rodr%&uez 'onzlez ___________

<A/LCD )Con&igura R8 y RA para control del LCD LCD/.>. )Rutina de inicializacin del LCD bG0000$$00G LCD/RE; )Conecta el LCD bG0000000$G )8orra el LCD y lo sitIa en la )posicin LCD/RE; )de inicio J K= E L.

)*alida del mensaje +Receptor serie+. movlC movC& movlC movC& .>.C.=/3, call call call inc& dec&sz goto clrCdt bt&sc goto movlC call ensaje3 5emp/$ .$7 5emp/3 )Carga la variable con el inicio )del mensaje )>M de caracteres del mensaje

5A8LA )Lee el carHcter de la tabla LCD/DA5= )Lo visualiza en el LCD delay )Retardo en la visualizacin del carHcter 5emp/$!? )6a al siguiente carHcter de la tabla 5emp/3!? )*i es el Iltimo sale del bucle. .>.C.=/3 )*i es la primera vez que pasa )salta para ver otro mensaje )*egunda lnea del LCD

DA6.D!0 FN: 01c0 LCD/RE;

)6isualizacin del mensaje +de datos con CRC+. movlC movC& movlC movC& bs& goto bc& call call call movlC call movlC call movlC movC& movlC movC& .>.C.=/$, call call inc& dec&sz goto ensaje4 5emp/$ .$% 5emp/3 DA6.D!0 )Lo pone a uno para que la pr1ima no sea .>.C.=/3 )otra vez la primera pasada. DA6.D!0 delay delay LCD/.>. bG0000$$00G LCD/RE; bG0000000$G LCD/RE; ensaje 5emp/$ .% 5emp/3 5A8LA LCD/DA5= 5emp/$!? 5emp/3!? .>.C.=/$ )Repetimos el proceso para visualizar )dos nuevos mensajes.

)6isualizacin del mensaje +Dato,+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ (4

clrCdt bt&sc goto movlC call movlC movC& movlC movC& bs& goto

DA6.D!0 L==A 01c0 LCD/RE; ensaje$ 5emp/$ .$0 5emp/3 *ER!0 .>.C.=/$

)*i es la 3O pasada se va a L==A )6isualizacin del mensaje +Recepcion,+

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 8ucle principal del programa. L==A, clrCdt bs& *5A5<*!RA0 )*elecciona pHgina $ movlC bG$$$0$$$$G movC& A=R58 )R87 entrada y R8( salida bs& =A5.=>/RE;!>=5/R8A< )Desconecta cargas pullSup bc& *5A5<*!RA0 )*elecciona pHgina 0 bs& comp comp3 comp$ R1d/pin .$00 *ER$ .377 *ER R1d/pin comp *ER!? comp$ *ER$!? comp3 R1D )Lnea de recepcin a +$+ )Este bucle nos ejecuta un retardo )de 0!$ segundos. El pin de recepcin )deberH estar a $ durante ese tiempo )de manera continuada. *i este pin no )esta a $ durante 0!$ segundos! vuelve )al comienzo de una nueva cuenta de )0!$ segundos. Con esto no consideramos )como datos las operaciones que este )realizando el emisor. )Espera recibir un carHcter

movlC movC& movlC movC& bt&ss goto dec&sz goto dec&sz goto call call bt&ss goto bt&ss goto goto bs& movlC call mov& movC& goto bs& movlC call mov& movC& rl& rl& rl& rl&

serie

primera

segunda

<A/LCD DA6.D!9 )*i es la $O pasada va a primera primera DA6.D!% )*i es la 3O pasada va a segunda segunda tercera )*i no es ni $O ni 3O! va a tercera DA6.D!9 )Aara que la pr1ima sea 3O pasada 01'% LCD/RE; )Aosiciona el cursor R1dreg!B 8.53 ) anda a 8.53 el carHcter recibido sigue DA6.D!% )Lo activa para que la pr1ima sea 4O )pasada 01'9 LCD/RE; R1dreg!B 8.5$ ) anda a los cuatro bits de mas peso de 8.5$!$ )8.5$ el caracter recibido. 8.5$!$ 8.5$!$ 8.5$!$

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ -8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

bc& 8.5$!4 bc& 8.5$!3 bc& 8.5$!$ bc& 8.5$!0 goto sigue tercera movlC 01'' call LCD/RE; mov& R1dreg!B movC& DA6.D iorC& 8.5$!? )Coloca el carHcter recibido en los ( bs& DA6.D!9 )bits de menos peso de la variable 8.5$. bs& DA6.D!% bs& DA6.D!7 bs& DA6.D!( mov& DA6.D!B andC& 8.5$!? clr& DA6.D )Aara que vuelva a ser $O pasada sigue mov& R1dreg!B ) ueve la tecla recibida al acumulador sublC .: bt&ss *5A5<*!C )V Es mayor que nueve R goto ayor/que/: )* mov& R1dreg!B )>o addlC 0140 )Ajuste A*C.. de datos del 0 al : call LCD/DA5= )6isualiza el dato bt&sc DA6.D!9 )*i es 4O pasada va a crc goto L==A goto crc ayor/que/: mov& R1dreg!B addlC 0149 )Ajuste A*C.. de datos de la A a la ? call LCD/DA5= bt&sc DA6.D!9 goto L==A goto crc )*i es 4O pasada va a crc DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Esta rutina se encarga de obtener el cdigo CRC de los caracteres recibidos. Al resultado le vuelve a realizar el cdigo CRC con el cdigo CRC recibido del emisor. *i el resultado de esta operacin es cero! la transmisin "abrH sido correcta. crc movlC 01c( call LCD/RE; clr& CRC$ )8orra CRC clr& CRC3 call AR=; )=btiene CRC de los datos 8.5$ y 8.53 bs& *5A5<*!RA0 )*elecciona pHgina $ movlC bG$$$0$$$$G movC& A=R58 )R87 entrada y R8( salida bs& =A5.=>/RE;!>=5/R8A< )Desconecta cargas pullSup bc& *5A5<*!RA0 )*elecciona pHgina 0 bs& R1d/pin )Lnea de recepcin a +$+ com com3 com$ movlC movC& movlC movC& bt&ss goto dec&sz goto dec&sz goto .$00 *ER$ .377 *ER R1d/pin com *ER!? com$ *ER$!? com3 )Este bucle es similar al comp.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ -1 call mov& movC& call mov& movC& call call R1D R1dreg!B 8.5$ R1D R1dreg!B 8.53 AR=; <A/LCD clrC iorC& bt&ss goto clrC bc& bc& bc& bc& iorC& bt&ss goto goto )Espera recibir un carHcter )Almacena carHcter recibido en 8.5$ )Espera recibir un carHcter )Almacena carHcter recibido en 8.53 )=btiene CRC de 8.5$ y 8.53 a partir del )CRC obtenido antes. )8orra el acumulador )=r entre CRC$ y el acumulador )*i CRC$ no es cero! se va a error

CRC$!? *5A5<*!P error$ CRC3!9 CRC3!% CRC3!7 CRC3!( CRC3!? *5A5<*!P error$ bueno

)*i los ( bits de menos peso de CRC3 )no son cero se va a error )*i el CRC es nulo va a bueno

)6isualizacin del mensaje +Error+ error$ movlC 01cb call LCD/RE; movlC GEG call LCD/DA5= movlC GrG call LCD/DA5= movlC GrG call LCD/DA5= movlC GoG call LCD/DA5= movlC GrG call LCD/DA5= goto L==A )6isualizacin del mensaje +8uena+ bueno movlC 01cb call LCD/RE; movlC G8G call LCD/DA5= movlC GuG call LCD/DA5= movlC GeG call LCD/DA5= movlC GnG call LCD/DA5= movlC GaG call LCD/DA5= goto L==A

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ -(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de temporizacin de unos 0!3 segundos. delay delay$ delay3 movlC movC& movlC movC& nop dec&sz goto dec&sz goto return .300 *ER$ .370 *ER *ER!? delay3 *ER$!? delay$

)La temporizacin se realiza mediante )las restas sucesivas de dos variables

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Esta rutina es la que realiza en realidad la conversin de los datos a su cdigo CRC. AR=; movlC dG'G movC& 5emp/$ movlC dG7G movC& 5emp/3 clr& *ER$ mov& 8.5$!C movC& RE;$ mov& CRC$!C 1orC& RE;$!? bt&sc RE;$!0 goto vale$ goto vale0 movlC bG0000$000G movC& *ER movlC bG0000$$$0G movC& RE;3 movlC bG000000$0G movC& RE;$ goto FN% movlC bG$$$$0$$$G movC& *ER clr& RE;$ clr& RE;3 goto FN$ mov& RE;3!C 1orC& CRC3!? mov& RE;$!C 1orC& CRC$!? goto rotar )Rota una posicin el cdigo CRC. bc& CRC3!9 mov& *ER!C bt&sc *ER!4 iorC& CRC3!? bt&ss *ER!4 andC& CRC3!? bt&sc *ER$!0 goto base3 rr& 8.5$!$ mov& 8.5$!C movC& RE;$ dec&sz 5emp/$!$ goto base ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

base

vale$

vale0

&inrot

_____________________________________________________________________________________ -movlC dG$G movC& *ER$ base3 mov& 8.53!C movC& RE;$ rr& 8.53!$ dec&sz 5emp/3!$ goto base return )*i se "an acabado los ( bits de 8.53 sale de la rutina. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD La rutina se encarga de rotar una posicin a la derec"a el cdigo CRC! de &orma que el bit de menos peso de CRC3 pasa a ser el de mHs peso de CRC$. rotar bt&sc CRC$!0 bs& *ER$!9 bt&ss CRC$!0 bc& *ER$!9 bt&sc CRC3!0 bs& *ER$!% bt&ss CRC3!0 bc& *ER$!% rr& CRC$!$ rr& CRC3!$ bt&sc *ER$!9 bs& CRC$!9 bt&ss *ER$!9 bc& CRC$!9 bt&sc *ER$!% bs& CRC3!9 bt&ss *ER$!% bc& CRC3!9 bt&sc CRC$!0 bs& CRC3!4 bt&ss CRC$!0 bc& CRC3!4 bt&sc CRC3!9 bs& CRC$!9 bt&ss CRC3!9 bc& CRC$!9 bc& CRC3!9 goto &inrot return end

)6uelve a la posicin siguiente de donde se )llamo a la subrutina.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ -4

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ -0

/r&ani&rama &eneral del pro&rama R"C"P! 659

/r&ani&rama de la subrutina PR/' empleada por "9I5/R 659 1 R"C"P! 659 para la obtencin del cdi&o CRC en las $ariables CRC1 1 CRC(

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ -6

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

RS232.ASM
Conjunto de rutinas diseWadas para los transmiten o reciben caracteres en serie. dispositivos $%c11 que

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ -) CL2=<5 equ CL2.> XX 3 )Calcula duracin del ciclo mHquina DELAY equ JJCL2=<5@8A<D.=*L@4LS.7 )Calcula la duracin del bit DELAY/L equ loC DELAY )Calcula la parte baja de DELAY DELAY/K equ "ig" DELAYN$ )Calcula la parte alta de DELAY DELAY/*5AR5 equ JDELAY@3LNDELAY )Calcula duracin del bit de inicio DELAY/*5AR5/L equ loC DELAY/*5AR5 )Calcula parte baja de DELAY/*5AR5 DELAY/*5AR5/K equ "ig" DELAY/*5AR5N$ )Calcula parte alta de DELAY/*5AR5 C8L=C2 Rs343/var )Reserva de memoria para las variables )utilizadas 51dreg )Registro de transmisin R1dreg )Registro de recepcin Cont )Contador de bits transmitidos Dlycnt/l )Contador de delay parte baja Dlycnt/" )Contador de delay parte alta A=R58!( A=R58!7 )Lnea de transmisin )Lnea de recepcin

E>DC Zde&ine Zde&ine 51d/pin R1d/pin

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de transmisin. 5ras el bit de inicio se transmite la palabra de ' bits contenida en el registro transmisor 51dreg seguido de dos bits de stop. 51D movlC ' movC& Cont bc& call 51D/ne1t bc& rr& 51d/pin Delay/bit *5A5<*!C 51dreg!? )5ransmisin de palabras de ' bits )5ransmite el bit de inicio

)Desplazamiento a dc"a para )transmitir $M el bit L*8 )*i el carry es uno! se transmite )un +$+ )*i el carry es cero se transmite )un +0+

bt&sc *5A5<*!C bs& 51d/pin bt&ss *5A5<*!C bc& 51d/pin

call Delay/bit dec&sz Cont!? )Decrementa contador de bits goto 51D/ne1t )Cuando transmite los ' sale del )bucle bs& 51d/pin )5ransmite un bit de stop call Delay/bit bs& 51d/pin )5ransmite segundo bit de stop call Delay/bit retlC 0

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ -8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de recepcin. 5rHs detectar el bit de inicio! espera recibirse una palabra ' bits. *e recibe primero el bit de menos peso. R1D R1D/$ clr& R1dreg clrCdt bt&sc R1d/pin goto R1D/$ call Delay/ini movlC ' movC& Cont R1D/ne1t bc& rr& *5A5<*!C R1dreg!? )Recibir primero el bit de menos peso )C"equea bit de entrada y mira si es +$+ )Activa bit 9 de R1dreg )Espera entre bits )Decrementa contador de nM de bits )Dos retardos correspondientes a los )dos bits de stop )8orrar registro receptor )Re&resco del BD5 )Espera el bit de inicio J+0+L )5iempo de retraso del bit de inicio J$.7 )resto de los bitsL )' bits de datos

bt&sc R1d/pin bs& R1dreg!9 call Delay/bit dec&sz Cont!? goto R1D/ne1t call Delay/bit call Delay/bit

retlC 0 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de temporizacin para los intervalos entre bit y bit Delay/bit Delay/bit/$ Delay/bit/3 clrCdt movlC DELAY/K movC& Dlycnt/" movlC DELAY/L movC& Dlycnt/l dec&sz Dlycnt/l!? goto Delay/bit/3 dec&sz Dlycnt/"!? goto Delay/bit/$ retlC 0

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de temporizacin para el bit de inicio en el modo de recepcin. Esta temporizacin es de $.7 con respecto a la del resto de bits. As se consigue que el muestreo sea apro1imadamente en el centro de cada bit recibido. Delay/ini Delay/ini/$ Delay/ini/3 clrCdt movlC DELAY/*5AR5/K movC& Dlycnt/" movlC DELAY/*5AR5/L movC& Dlycnt/l dec&sz Dlycnt/l!? goto Delay/ini/3 dec&sz Dlycnt/"!? &oto #ela1_ini_1 retl: 8

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ -4

TECLADO.ASM
Aresenta un conjuntos de rutinas que permiten la gestin de un teclado "e1adecimal. El teclado "e1adecimal se supone conectado a la puerta 8 y su disposicin es la siguiente, R80 R8$ R83 R84 5ECLA SSSSS 0 $ 3 4 ( 7 % 9 ' : A 8 C D E ? C=D.;= SSSSSSSSSSSSSS 0$$$$$0$ # 019D $$$0$$$0 # 01EE $$$0$$0$ # 01ED $$$0$0$$ # 01E8 $$0$$$$0 # 01DE $$0$$$0$ # 01DD $$0$$0$$ # 01D8 $0$$$$$0 # 018E $0$$$$0$ # 018D $0$$$0$$ # 0188 0$$$$$$0 # 019E 0$$$$0$$ # 0198 0$$$0$$$ # 0199 $0$$0$$$ # 0189 $$0$0$$$ # 01D9 $$$00$$$ # 01E9

R8( SSX R87 SSX R8% SSX R89 SSX

[SSS[SSS[SSS[SSS[ [ $ [ 3 [ 4 [ ? [ [SSS[SSS[SSS[SSS[ [ ( [ 7 [ % [ E [ [SSS[SSS[SSS[SSS[ [ 9 [ ' [ : [ D [ [SSS[SSS[SSS[SSS[ [ A [ 0 [ 8 [ C [ [SSS[SSS[SSS[SSS[

cbloc\

2ey/var )Reserva de memoria para las variables 5ecla )Aara devolver el cdigo de la tecla 2ey/$ )>M de columnas a e1plorar 2ey/3 )5emporal de cdigo 2ey/Delay/$ )6ariables de temporizacin 2ey/Delay/3 endc

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de e1ploracin del teclado. La variable +5ecla+ retorna con el cdigo de la tecla pulsada o el cdigo 01'0 si no se pulsa ninguna. 2ey/*can, bs& movlC movC& bs& bc& movlC movC& movlC movC& mov& movC& nop mov& movC& subC& bt&ss goto bs& *5A5<*!RA0 )*elecciona pHgina $ bG0000$$$$G A=R58 )R89SR8( salidas! R84SR80 entradas =A5.=>/RE;!>=5/R8A< )Activa cargas pullSup *5A5<*!RA0 )*elecciona pHgina 0 ( 2ey/$ )>M de columnas a e1plorar bG0$$$$$$$G 5ecla )Columna a activar 5ecla!B A=R58 )Activa columna A=R58!B 2ey/3 5ecla!B *5A5<*!P 2ey/*can/3 *5A5<*!C

2ey/*can/$,

)Lee las &ilas )V Kay alguna pulsada R )>o "ay ninguna pulsada )>o "ay ninguna en esa columna

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 48

I ! I "specialidad "lectrnica Industrial rr& dec&sz goto movlC movC& return

#a$id Rodr%&uez 'onzlez ___________

5ecla!? )*elecciona siguiente columna 2ey/$!? 2ey/*can/$ 01'0 )Retorna cdigo 01'0 Jno "ay pulsacinL 5ecla

2ey/*can/3, 2ey/*can/4, 2ey/*can/(,

movlC movC& clr& ClrCdt dec&sz goto dec&sz goto mov& movC&

.$00 2ey/Delay/$ 2ey/Delay/3

)8ucle de temporizacin de unos 30m* )para evitar el rebote al pulsar

2ey/Delay/3!? 2ey/*can/( 2ey/Delay/$!? 2ey/*can/4 5ecla!B A=R58 )5ras la temporizacin se lee nuevamente )si la tecla es la misma. As se evitan )los rebotes

nop mov& subC& bt&ss goto mov& movC& return

A=R58!B 2ey/3!B *5A5<*!P )Es la misma RR 2ey/*can/$ )>o! seguir con la e1ploracin 2ey/3!B )*i guardar en variable de salida +5ecla+ 5ecla

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Convierte el cdigo de la tecla que "aya en la variable +5ecla+ a Ke1adecimalJ0S?L. El resultado se devuelve en la variable +5ecla+. 2ey/5abla mov& addC& retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC retlC mov& movC& clr& call 2ey/$!B ACL!? 019d 01ee 01ed 01eb 01de 01dd 01db 01be 01bd 01bb 019e 019b 0199 01b9 01d9 01e9 )Calcula desplazamiento sobre )sobre la tabla )0 )$ )3 )4 )( )7 )% )9 )' ): )A )8 )C )D )E )?

2ey/8CD,

5ecla!B 2ey/3 2ey/$ 2ey/5abla

)Almacena el cdigo temporalmente )Contador 8CD a 0 )8usca cdigo en la tabla

2ey/8CD/3

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 41 subC& bt&sc goto inc& goto 2ey/8CD/$ mov& movC& 2ey/3!B *5A5<*!P 2ey/8CD/$ 2ey/$!? 2ey/8CD/3 )Compara con el de la tecla )Coincide RR )*i )>o! incrementa contador 8CD

2ey/$!B 5ecla )Carga 8CD en la variable de salida

return

/r&ani&rama de la subrutina Je1_5can

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 4(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

/r&ani&rama de la subrutina Je1_G#C

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 4-

LCD.ASM
El conjunto de rutinas que se presentan a continuacin permiten realizar las tareas bHsicas de control del mdulo de visualizacin LCD. *e emplean los dispositivos $%c11. Zde&ine Zde&ine Zde&ine Zde&ine Zde&ine Zde&ine E>A8LE D.*A8LE LEER E*CR.8.R =??/C= A>D= =>/C= A>D= bs& bc& bs& bc& bc& bs& A=R5A!3 A=R5A!3 A=R5A!$ A=R5A!$ A=R5A!0 A=R5A!0 )Activa E )Desactiva )Aone LCD en odo RD )Aone LCD en odo BR )Desactiva R* Jmodo comandoL )Activa R*

C8L=C2

Lcd/var Lcd/5emp/$ Lcd/5emp/3

).nicio de las variables. *erH la primera )direccin libre disponible

E>DC

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de con&iguracin del A.C para el LCD. <A/LCD bs& *5A5<*!RA0 clr& A=R58 clr& A=R5A bc& *5A5<*!RA0 =??/C= A>D= D.*A8LE Return )8anco $ )R8 ]0S9X salidas digitales )RA ]0S9X salidas digitales )8anco 0 )R*#0 )E#0

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina para lectura del ?lag 8usy y la direccin. LCD/8<*Y LEER bs& *5A5<*!RA0 movlC KG??G movC& A=R58 bc& *5A5<*!RA0 E>A8LE nop bt&sc A=R58!9 goto FS$ D.*A8LE bs& *5A5<*!RA0 clr& A=R58 bc& *5A5<*!RA0 E*CR.8.R return )Aone el LCD en odo RD

)Auerta 8 como entrada )*elecciona el banco 0 )Activa el LCD )C"equea bit de 8usy )Desactiva LCD )Auerta 8 salida )Aone LCD en modo BR

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Esta rutina e&ectIa un pulso de Enable LCD/E E>A8LE nop D.*A8LE return )Activa E )Desactiva E

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 44

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina para escritura de datos en DDRA o C;RA .El dato es tomado de B LCD/DA5= =??/C= A>D= movC& A=R58 call LCD/8<*Y =>/C= A>D= goto LCD/E )Desactiva R* Jmodo comandoL )6alor A*C.. a sacar por portb )Espera a que se libere el LCD )Activa R* Jmodo datoL. );enera pulso de E

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Esta rutina e&ectIa la escritura de un comando en el LCD. El cdigo del comando es toma de B. LCD/RE; =??/C= A>D= movC& A=R58 call LCD/8<*Y goto LCD/E )Desactiva R* Jmodo comandoL )Cdigo de comando. )LCD libreR. )*.. ;enera pulso de E.

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina para la inicializacin del LCD LCD/.>. movlC call call movlC call call movlC call call bG00$$$000G LCD/RE; LCD/DELAY bG00$$$000G LCD/RE; LCD/DELAY bG00$$$000G LCD/RE; LCD/DELAY )Cdigo de instruccin )5emporiza )Cdigo de instruccin )5emporiza )Cdigo de instruccin )5emporiza

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Rutina de temporizacin de unos 7m* LCD/DELAY, clrCdt movlC .$0 movC& Lcd/5emp/$ clr& Lcd/5emp/3 dec&sz Lcd/5emp/3!? goto LCD/DELAY/$ dec&sz Lcd/5emp/$!? goto LCD/DELAY/$ return

LCD/DELAY/$,

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 40

P16F84.INC
Este arc"ivo de&ine las con&iguraciones! registros! y otros bits utilizados como in&ormacin para la programacin en el microS procesador pic $%&'( Jequivalente al $%c'(L. Los nombres empleados "an sido obtenidos del manual del $%&'( J6er gua del pic $%1'(L. El microprocesador "a de ser especi&icado antes de incluir este arc"ivo en el programa base. Aara la seleccin del mismo! bastarH poner en el arc"ivo de programa la instruccin, L.*5 A#$%&'(. En caso de seleccionar otro pic! nos saldrH un mensaje de error.

L.*5 >=L.*5 Este arc"ivo de&ine las con&iguraciones! registros! y otros bits utilizados como in&ormacin en los microcontroladores pic $%&'(. Los nombres empleados "an sido obtenidos del manual del $%&'(. El microprocesador "a de ser especi&icado antes de incluir este arc"ivo en el programa. Aara la seleccin! basta poner en el arc"ivo de programa, L.*5 A#$%&'(

.?>DE? //$%?'( E**; +Arocesador seleccionado errneo. 6eri&icar la seleccin.+ E>D.? )De&iniciones generales B ? ) Registros .>D? 5 R0 ACL *5A5<* ?*R A=R5A A=R58 EEDA5A EEADR ACLA5K .>5C=> =A5.=>/RE; 5R.*A 5R.*8 EEC=>$ EEC=>3 EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< KG0000G KG000$G KG0003G KG0004G KG000(G KG0007G KG000%G KG000'G KG000:G KG000AG KG0008G KG00'$G KG00'7G KG00'%G KG00''G KG00':G EU< EU< KG0000G KG000$G

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 46

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

)8its del registro *5A5<* .RA RA$ RA0 >=5/5= >=5/AD P DC C )8its del registro .>5C=> ;.E EE.E 50.E .>5E R8.E 50.? .>5? R8.? )8its del registro =A5.=> >=5/R8A< .>5ED; 50C* 50*E A*A A*3 A*$ A*0 )8its del registro EEC=>$ EE.? BRERR BRE> BR RD EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< KG0009G KG000%G KG0007G KG000(G KG0004G KG0003G KG000$G KG0000G KG000(G KG0004G KG0003G KG000$G KG0000G EU< EU< EU< EU< EU< EU< EU< EU< KG0009G KG000%G KG0007G KG000(G KG0004G KG0003G KG000$G KG0000G EU< EU< EU< EU< EU< EU< EU< EU< KG0009G KG000%G KG0007G KG000(G KG0004G KG0003G KG000$G KG0000G

) De&inicin del microprocesador $%c'( // A^RA //8ADRA /CA/=> /CA/=?? /ABR5E/=> /ABR5E/=?? /BD5/=> /BD5/=?? /LA/=*C /^5/=*C /K*/=*C /RC/=*C L.*5 KGC?G KG09G! KG70GSKG9?G! KG'9G EU< EU< EU< EU< EU< EU< EU< EU< EU< EU< KG000?G KG4???G KG4??9G KG4???G KG4???G KG4??8G KG4??CG KG4??DG KG4??EG KG4???G

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 4)

Cap%tulo (

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 48

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 44

Practica 2+ ,scritura . lectura de ,procon cdi(o de errores 3a--in(

6ntes de comenzar con la e<plicacin de la prctica> se $a a describir en 7ue consiste un cdi&o de errores 3ammin& 6l escribir en una memoria *"PR/9 en nuestro caso+> pueden ocurrir errores denominados KdurosL debido a de2ectos en la misma *2allos de 2abricacin o des&aste+ o errores KblandosL aleatorios .os errores KblandosL pueden deberse sobre todo a 2allos en la 2uente de alimentacin "l cdi&o de errores 3ammin& nos $a a detectar 1 corre&ir errores KblandosL simples *en un solo bit+ "n la 2i&ura 4 se ilustra cmo se lle$a a cabo el proceso para detectar 1 corre&ir un error simple

Fi(ura 42 #ia&rama de blo7ues del cdi&o corrector de errores Cuando se $an a escribir datos en memoria> se realiza un clculo con ellos para obtener un cdi&o "n la memoria se almacenan tanto los datos como el cdi&o> as% se $a a almacenar una palabra de datos de 9 bits de datos M J bits de cdi&o Cuando se $a a leer una palabra almacenada> se utiliza el cdi&o almacenado para detectar 1 corre&ir errores 5e &enera un nue$o cdi&o a partir de los datos almacenados 1 se compara con el le%do .a comparacin se realiza bit a bit mediante puertas /RNe<clusi$as 5i los dos cdi&os son i&uales> los datos no tendrn erroresD si los cdi&os son distintos> ;abr error en al&uno de los datos 1 ;abr 7ue corre&irlo como $eremos a continuacin "n la tabla -> se presenta la lon&itud 7ue ;a de tener el cdi&o 3ammin& en 2uncin de la lon&itud de los datos

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 08

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

&its de datos 8 16 -( 64 1(8 (06

&its de &its del cdi(o P$rdida co-pro'acin 3a--in( 4 4 1( 08 0 (1 -1>(0 6 -8 18>)0 ) )1 18>44 8 1-6 6>(0 4 ()8 ->0( "a'la 32 !ama=o del cdi&o 3ammin&

"n nuestra prctica> se $an a utilizar datos de 8 bits *insertados mediante dos teclas del teclado ;e<adecimal+> por tanto> el cdi&o 3ammin& constar de 1( bits *8 de datos M 4 de comprobacin+ .a columna de p?rdida nos $a a indicar> en tanto por ciento> la cantidad de errores 7ue puede corre&ir el cdi&o 3ammin& e<presado "n la !abla 4> se presenta la distribucin de los bits dentro del cdi&o 3ammin& *sern 1( bits en nuestro caso+ Posicin &it de &it de (&inario) co-pro'acin datos 1( 1188 98 11 1811 9) 18 1818 96 4 1881 90 8 1888 C8 ) 8111 94 6 8118 90 8181 9( 4 8188 C4 8811 91 ( 8818 C( 1 8881 C1 "a'la 42 Identi2icacin de los bits del cdi&o 3ammin& .a posicin 1> corresponde al bit 8 del cdi&o 3ammin&> la ( corresponde al bit 1 del mismo 1 as% ;asta lle&ar a la doce 7ue corresponder al bit 11 #e i&ual 2orma> 91 se corresponde con el bit 8 del dato> 9( con el bit 1 1 as% ;asta 98 *ser el bit )+ 6 los bits de comprobacin *C1> C(> C4 1 C8+ se le asi&nan a7uellas posiciones cu1os nCmeros son potencias de dos *posicin 1> (> 4 1 8+ "stos bits de comprobacin se calculan como si&ueE C1 O 91 9( 94 90 9) C( O 91 9- 94 96 9) C4 O 9( 9- 94 98 C8 O 90 96 9) 98 Posicin

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 01

.os s%mbolos desi&nan la operacin /RNe<clusi$a Cada bit de comprobacin se calcula realizando /rNe<clusi$as de todos los datos cu1o nCmero de posicin contiene un uno en la correspondiente posicin columna Por ejemplo> la columna uno de las direcciones contiene unos en las direcciones -> 6> )>18 1 11> por tanto C( se calcular realizando /rNe<clusi$as a los datos correspondientes a esas direcciones *1> -> 4> 6 1 ) en este caso+ Recordar 7ue una puerta /RNe<clusi$a nos da un cero a la salida cuando las entradas son i&uales *caso de dos entradas+ "n el caso de ms de dos entradas> nos dan un uno si el nCmero de unos de entrada es impar 1 un cero si este es par Iamos a $er un ejemplo para $eri2icar lo dic;o ;asta a;ora 5upon&amos 7ue el dato de entrada de 8 bits es 88188181 *(0 por el teclado+> con el bit 91 en la posicin de menos peso *bit 8+ .os bits de comprobacin $an a serE C1 O 1 8 8 8 8 O 1 C( O 1 1 8 1 8 O 1 C4 O 8 1 8 8 O 1 C8 O 8 1 8 8 O 1 5upon&amos a;ora 7ue el bit ( del dato *9-+ se $e a2ectado por un error> cambiando de 1 a 8 Cuando se recalculen los bits de comprobacin *al leer+> se tieneE C1 O 1 8 8 8 8 O 1 C( O 1 1 8 1 8 O 1 C4 O 8 1 8 8 O 1 C8 O 8 1 8 8 O 1 Cuando se comparan> mediante /RNe<clusi$as> los bits de comprobacin calculados en la lectura con los almacenados> se obtieneE C8 C4 C( C1 1 1 1 1 1 8 8 1 NNNNNNNNNNNNNNNNNNNNNNNNNNNNN 8 1 1 8 "l resultado 8118> indica 7ue en el bit 6 del cdi&o 3ammin& *9-+ ;a1 error> debi?ndose cambiar el 8 por el 1 1 corri&i?ndose as% el error 5i el resultado de esta operacin ;ubiese sido cero> el dato no tendr%a nin&Cn error #e i&ual 2orma si el resultado solo contiene un 1> el error estar%a en un bit de comprobacin> siendo por tanto correcto el dato

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 0(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

.a prctica trata de tomar datos desde el teclado 1 &uardarlos en la memoria "PR/9 del PIC 16F84 utilizando los cdi&os de 3ammin& $istos ;asta a;ora "l pro&rama realizado> nos indica el dato a escribir,leer> la posicin 7ue ocupa en memoria 1 su cdi&o 3ammin& como se $e en la 2i&ura 0 "n primer lu&ar> el pro&rama espera recibir una tecla 1 en 2uncin de esta realiza una u otra 2uncin 5i la tecla pulsada no es 6 ni G ni C> el PIC nos muestra el mensaje inicial con las teclas operati$as N 5i la tecla pulsada es la C> el PIC espera recibir dos nue$as teclas 7ue insertar en una $ariable a la 7ue realizar el cdi&o 3ammin& .a primera de estas dos nue$as teclas es insertada en las cuatro posiciones de ms peso *bits )N4+ de la $ariable 1 la se&unda en las cuatro posiciones de menos peso *bits -N8+ "l cdi&o 3ammin& obtenido es $isualizado en el .C# como puede apreciarse en la 2i&ura 0 Bna $ez $isualizado el mismo> el PIC $ol$er a esperar recibir una de las tres teclas anteriores .a posicin superior derec;a del .C# se borra completamente tras pulsar la tecla C> 1a 7ue no es necesario insertar nin&una posicin de memoria en este caso

Fi(ura 52 9icroApic trainer "n el .C# se obser$a un ejemplo de 2uncionamiento de la prctica N 5i la tecla pulsada es la &> el PIC espera recibir dos nue$as teclas 7ue insertar en un re&istro al 7ue realizar el cdi&o 3ammin& .a primera de estas dos nue$as teclas es insertada en las cuatro posiciones de ms peso *bits )N4+ del re&istro utilizado 1 la se&unda en las cuatro posiciones de menos peso *bits -N8+ "l cdi&o 3ammin& obtenido es $isualizado en el .C# 1 almacenado en dos re&istros *por7ue los re&istros son de 8 bits 1 el 3ammin& calculado es de 1(+ Bna $ez $isualizado el mismo> el PIC espera recibir dos nue$as teclas 7ue le indi7uen la posicin de memoria "PR/9 donde deber &uardar el cdi&o obtenido "n la posicin superior derec;a del .C# aparecen las si&las PR *:rite+ 1 a su lado las dos teclas pulsadas para indicar la direccin "stas dos teclas son insertadas en un re&istro de direcciones *la primera en los 4 bits de ms peso 1 la se&unda en los de menos+ #ado 7ue en el PIC 16F84> la memoria "PR/9 $a de la direccin 88; a la -F> los dos bits de ms peso de este re&istro de direcciones> son puestos a cero por el pro&rama #e i&ual 2orma> el bit de menos peso de este re&istro es colocado a 8 para 7ue la direccin de memoria en la 7ue se &raba sea siempre par *dado 7ue el cdi&o 3ammin& ocupa dos direcciones+ Bna $ez &rabado el cdi&o en la direccin indicada> el pro&rama $uel$e a esperar una 6> G o C para continuar
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 0-

N 5i la tecla pulsada es la #> el PIC espera recibir dos nue$as teclas "n la posicin superior derec;a del .C# aparecen las si&las R# *read+ 1 a su lado las dos teclas pulsadas para indicar la direccin "stas dos teclas son insertadas en un re&istro de direcciones * la primera en los 4 bits de ms peso 1 la se&unda en los de menos + #ado 7ue en el PIC 16F84> la memoria "PR/9 $a de la direccin 88; a la -F> los dos bits de ms peso de este re&istro de direcciones> son puestos a cero por el pro&rama #e i&ual 2orma> el bit de menos peso de este re&istro es colocado a 8 para 7ue la direccin de memoria en la 7ue se &raba sea siempre par *dado 7ue el cdi&o 3ammin& ocupa dos direcciones+ 6 continuacin el PIC realiza la lectura de la "PR/9 de la posicin indicada por el re&istro 1 de la si&uiente> almacenando el resultado en dos re&istros 7ue contendrn el cdi&o 3ammin& a desci2rar "ste cdi&o es $isualizado en la parte in2erior del .C# 1 desci2rado para obtener el dato *corri&i?ndose en caso de error+ 7ue ser $isualizado en la parte superior iz7uierda del .C# *$er 2i&ura 0+ Bna $ez $isualizado el dato> el pro&rama $uel$e a esperar una 6> G o C para continuar "n las pr<imas pa&inas> se presenta un listado del pro&rama utilizado en la prctica> as% como comentarios e<plicati$os del mismo 3ammin& asmE "s el pro&rama 7ue ;abr 7ue insertar en el PIC 16F84 para el 2uncionamiento de la prctica !eclado asmE se encar&a de controlar el teclado ;e<adecimal .cd asmE se encar&a de controlar el .C# P16284 incE "l 2ic;ero inclu1e Cnicamente las de2iniciones de re&istros 1 $ariables necesarias para pro&ramar el micro 16F84 .a directi$a include del ensamblador permite incluirlo en cual7uier pro&rama 2uente "stos Cltimos pro&ramas *.C#> teclado 1 p16284+ son los mismos 7ue los utilizados en la prctica 1> por tanto no se $ol$ern a e<plicar

Por Cltimo se presentan los tres or&ani&ramas *2i&uras 6> ) 1 8+ correspondientes al 2uncionamiento del pro&rama> al codi2icador 3ammin& *obtiene el cdi&o 3ammin& del dato introducido+ 1 al decodi2icador 3ammin& *obtiene el dato a partir del cdi&o 3ammin&+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 04

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 00

HAMMING.ASM
El programa espera recibir una A! 8 o C del teclado y actIa segIn esta. *i recibe una C! toma dos teclas y les realiza un cdigo Kamming. *i es una 8 "ace lo mismo y ademHs toma otras dos teclas para indicar la posicin de la memoria EAR= donde serH guardado el cdigo. *i es una A! toma dos teclas para indicar la posicin de memoria a leer y decodi&ica la lectura mostrando en el LCD el dato que "aba codi&icado. Al terminar cualquiera de estas tres opciones! el programa vuelve a esperar una A! 8 o C. list p#$%&'( )*e de&ine el tipo de dispositivo ).ncluye arc"ivo con de&inicin de registros

include +a,-p$%&'(.inc+ Lcd/var 2ey/var 5emp/$ 5emp/3 DA6.D DA6 DA6$ KA $ KA 3 equ equ equ equ equ equ equ equ equ 010c 010e 01$4 01$( 01$7 01$% 01$9 01$' 01$: 0 7

).nicio de las variables para el LCD ).nicio de las variables para el teclado )De&inicin de las distintas variables utilizadas )en el programa

org goto org

.>.C.=

)Aara que al resetear se vaya a .>.C.= ).ndica donde comienza el programa

include +a,-LCD.A* + )Carga rutinas del LCD include +a,-5ECLAD=.A* + )Carga rutinas del teclado 5A8LA mov& movC& 5emp/$!B ACL )>os va a llevar los desplazamientos dentro )de los distintos mensajes

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )A continuacin se de&inen los distintos mensajes que van a aparecer en el )LCD del upic trainer. ensaje equ F retlC retlC retlC retlC retlC retlC retlC ensaje$ equ F retlC retlC retlC retlC retlC GDG GaG GtG GoG G,G G G 0100 GCG GKG G,G G G 0100

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 06

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

ensaje3 equ F

retlC G G retlC GCG retlC GoG retlC GdG retlC GiG retlC GgG retlC GoG retlC G G retlC GKG retlC GaG retlC GmG retlC GmG retlC GiG retlC GnG retlC GgG retlC G G retlC 0100 retlC G!G retlC GAG retlC G#G retlC GRG retlC GDG retlC G!G retlC G8G retlC G#G retlC GBG retlC GRG retlC G!G retlC GCG retlC G#G retlC GCG retlC GKG retlC G G retlC 0100

ensaje4 equ F

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Comienzo del programa. .>.C.=, clr& bs& movlC movC& bc& bc& clrCdt call call movlC call movlC call )*alida del mensaje movlC movC& movlC movC& DA6.D *5A5<*!RA0 bG0000$$$$G =A5.=>/RE; .>5C=>!;.E *5A5<*!RA0 )8orra la variable DA6.D )*elecciona pagina $ de datos )Areescaler de $3' para perro guardiHn )Desconecta interrupciones )*elecciona pagina 0 de datos )Re&resca perro guardiHn )Con&igura R8 y RA para control del LCD )Rutina de inicializacin del LCD )Conecta el LCD )8orra el LCD y lo sitIa en la posicin )de inicio J K= E L.

<A/LCD LCD/.>. bG0000$$00G LCD/RE; bG0000000$G LCD/RE;

+Codigo Kamming+. ensaje3 5emp/$ )Carga la variable con el inicio del mensaje .$% 5emp/3 )>M de caracteres del mensaje

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 0)

.>.C.=/3,

call call call inc& dec&sz goto clrCdt bt&sc goto movlC call

5A8LA LCD/DA5= delay 5emp/$!? 5emp/3!? .>.C.=/3 DA6.D!0 FN: 01c0 LCD/RE;

)Lee el carHcter de la tabla )Lo visualiza en el LCD )Retardo en la visualizacin del carHcter )6a al siguiente carHcter de la tabla )*i es el Iltimo sale del bucle. )*i es la primera vez que pasa salta )para visualizar otro mensaje. )*egunda lnea del LCD

)6isualizacin del mensaje +A#RD!8#BR!C#CK+. movlC ensaje4 movC& 5emp/$ movlC .$% movC& 5emp/3 bs& DA6.D!0 )Lo pone a uno para que la pr1ima no sea goto .>.C.=/3 )otra vez la primera pasada. bc& DA6.D!0 call delay call delay call LCD/.>. )Repetimos el proceso para visualizar dos movlC bG0000$$00G )nuevos mensajes. call LCD/RE; movlC bG0000000$G call LCD/RE; movlC ensaje )6isualizacin del mensaje +Dato,+ movC& 5emp/$ movlC .% movC& 5emp/3 .>.C.=/$, call 5A8LA call LCD/DA5= inc& 5emp/$!? dec&sz 5emp/3!? goto .>.C.=/$ clrCdt bt&sc DA6.D!0 goto L==A movlC 01c0 call LCD/RE; movlC ensaje$ movC& 5emp/$ movlC .( movC& 5emp/3 bs& DA6.D!0 goto .>.C.=/$ clr& DA6.D

)*i es la 3O pasada se va a L==A )6isualizacin del mensaje +CK,+

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )8ucle principal del programa. L==A, clrCdt call movlC subC& bt&sc goto 2ey/*can 01'0 5ecla!B *5A5<*!P L==A )E1plora el teclado )*i "ay tecla pulsada sale del bucle

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 08

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

call movlC subC& bt&sc goto movlC subC& bt&sc goto movlC subC& bt&ss goto bc& goto borra bs& movlC call movlC call movlC call movlC call movlC call movlC call movlC call movlC call movlC call movlC call goto

delay bG0$$$$$$0G 5ecla!B *5A5<*!P borra3 bG0$$$$0$$G 5ecla!B *5A5<*!P borra bG0$$$0$$$G 5ecla!B *5A5<*!P .>.C.= DA6.D!0 borra$ DA6.D!0 01'% LCD/RE; G G LCD/DA5= G G LCD/DA5= G G LCD/DA5= G G LCD/DA5= GBG LCD/DA5= GRG LCD/DA5= G,G LCD/DA5= G G LCD/DA5= G G LCD/DA5= Loop$

)Retardo para evitar rebotes. )*i la tecla pulsada es una A va )a borra3 )*i es una 8 va a borra

)*i es una C va a borra$ )*i no es ninguna vuelve a inicio )y nos muestra mensaje.m ).mprime BR, en la parte superior )derec"a del LCD

borra$

movlC 01'% call LCD/RE; movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= goto Loop$

)8orra la parte superior derec"a )del LCD

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 04

borra3

movlC 01'% call LCD/RE; movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= movlC GRG call LCD/DA5= movlC GDG call LCD/DA5= movlC G,G call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= goto leer

).mprime RD en la parte superior )derec"a del LCD.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )8ucle principal si la tecla pulsada es la 8 o la C. Loop$ clrCdt call movlC subC& bt&sc goto call call bt&ss goto goto bs& mov& movC& rl& rl& rl& rl& movlC goto bc& 2ey/*can 01'0 5ecla!B *5A5<*!P Loop$ )E1plora el teclado )*i "ay tecla pulsada sale del bucle

primera

2ey/8CD <A/LCD DA6.D!9 primera segunda DA6.D!9 5ecla!B DA6 DA6!$ DA6!$ DA6!$ DA6!$ 01'% sigue

)Consigue cdigo 8CD de la tecla )Recon&igura LCD )*i es la $O pasada va a primera )*i no es $O pasada! va a segunda )Lo activa para que la pr1ima sea 3O pasada )Copia la tecla pulsada en los ( bits de mHs )peso de DA6

segunda

DA6.D!9 )Lo mov& 5ecla!B iorC& DA6!$ bs& 2ey/$!9 bs& 2ey/$!% bs& 2ey/$!7 bs& 2ey/$!( mov& 2ey/$!B andC& DA6!$ movlC 01'9

activa para que la pr1ima sea $O pasada )*i es la segunda pasada copia la tecla en )los cuatro bits de menos peso de DA6 )La variable 2ey/$ es utilizada como )au1iliar en el arc"ivo teclado.asm

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 68 sigue

I ! I "specialidad "lectrnica Industrial call mov& sublC bt&ss goto mov& addlC call bt&sc goto goto LCD/RE; 5ecla!B .: *5A5<*!C ayor/que/: 5ecla!B 0140 LCD/DA5= DA6.D!9 Loop$ codigo 5ecla!B 0149 LCD/DA5= DA6.D!9 Loop$ codigo

#a$id Rodr%&uez 'onzlez ___________ )Aosiciona el cursor del LCD segIn pasada. ) ueve la tecla pulsada al acumulador )Q Es mayor que nueve R )* )>o )Ajuste A*C.. de datos del 0 al : )6isualiza el dato )*i es la 3Opasada va a cdigo )si no vuelve a Loop$

ayor/que/: mov& addlC call bt&sc goto goto

)Ajuste A*C.. de datos de la A la ? )*i es 3O pasada va a cdigo si no )vuelve a Loop$

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina de temporizacin de unos 0!3 segundos. delay delay$ delay3 movlC movC& movlC movC& nop dec&sz goto dec&sz goto return .300 DA6$ .370 DA6 DA6!? delay3 DA6$!? delay$

)La temporizacin se realiza mediante )las restas sucesivas de dos variables

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Aara visualizar el cdigo Kamming en LCD codigo movlC call call 01c( LCD/RE; KA .>; )Coloca posicin en LCD )=btiene cdigo Kamming de DA6

ver/cod

movlC .( )>os saca en el LCD los doce bits movC& DA6$ )del cdigo Kamming mov& KA 3!B movC& 5emp/3 mov& KA $!B movC& 5emp/$ rl& 5emp/3!? )Rota cuatro posiciones para colocar rl& 5emp/3!? )los ( bits a visualizar de KA 3 en rl& 5emp/3!? )las posiciones de mHs peso. rl& 5emp/3!? "am3 rl& 5emp/3!? bt&sc *5A5<*!C )*i al rotar C vale uno! el bit a movlC G$G )visualizar sera un $ si no serH un 0 bt&ss *5A5<*!C movlC G0G call LCD/DA5= dec&sz DA6$!? )Cuando imprima ( bits salta goto "am3 )para ver los otros oc"o. movlC .' movC& DA6$ )Aara visualizar ' datos ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 61

"am$

rl& 5emp/$!? bt&sc *5A5<*!C movlC G$G bt&ss *5A5<*!C movlC G0G call LCD/DA5= dec&sz DA6$!? goto "am$ bt&ss DA6.D!0 goto L==A

)Cuando visualiza los ' vuelve a L==A )*i la tecla pulsada era C o A! vuelve a )L==A! si no sigue con escribe.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para escribir el cdigo Kamming contenido en KA 3 y KA $ en la EAR= escribe Loop3 bc& DA6.D!% clrCdt call 2ey/*can movlC 01'0 subC& 5ecla!B bt&sc *5A5<*!P goto Loop3 call 2ey/8CD call <A/LCD bt&ss DA6.D!% goto uno goto dos movlC 01'd call LCD/RE; mov& 5ecla!B movC& 5emp/$ rl& 5emp/$!$ rl& 5emp/$!$ rl& 5emp/$!$ rl& 5emp/$!$ bc& 5emp/$!9 bc& 5emp/$!% bs& DA6.D!% goto sigue$ mov& 5ecla!B iorC& 5emp/$!$ bs& 2ey/$!9 bs& 2ey/$!% bs& 2ey/$!7 bs& 2ey/$!( mov& 2ey/$!B andC& 5emp/$!$ bc& 5emp/$!0 bc& DA6.D!% )Lo mov& 5ecla!B sublC .: bt&ss *5A5<*!C goto ayor/: mov& 5ecla!B addlC 0140 call LCD/DA5= bt&sc DA6.D!% goto Loop3 goto BR5/EAR= )Activa $O pasada )E1plora el teclado )*i "ay tecla pulsada sale del bucle

)*i es $O pasada va a uno! si no )va a dos. )Aosiciona el LCD )Copia la tecla en las ( posiciones )de mHs peso de 5emp/$

uno

)Coloca a cero los dos bits de mHs peso )porque la EAR= solo llega "asta 4?. )Activa 3O pasada )*i es la segunda pasada copia la tecla en )los cuatro bits de menos peso de 5emp/$ )La variable 2ey/$ es utilizada como )au1iliar en el arc"ivo teclado.asm

dos

pone a 0 para que siempre sea direccin par ) ueve la tecla pulsada al acumulador )Es mayor que nueve R )* )>o )Ajuste A*C.. de datos del 0 al : )6isualiza el dato )*i es 3O pasada va a BR5/EAR=

sigue$

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 6(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

ayor/:

mov& 5ecla!B addlC 0149 call LCD/DA5= bt&sc DA6.D!% goto Loop3 goto BR5/EAR=

)Ajuste A*C.. de datos de la A la ? )*i es 3O pasada va a BR5/EAR=

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para escribir en la EAR= BR5/EAR= bc& mov& movC& mov& movC& bs& bs& bc& movlC movC& movlC movC& bs& bt&ss goto bc& mov& movC& inc& mov& movC& bs& bc& movlC movC& movlC movC& bs& bt&ss goto goto *5A5<*!RA0 5emp/$!B EEADR KA $!B EEDA5A *5A5<*!RA0 EEC=>$!BRE> EEC=>$!EE.? 0177 EEC=>3 01aa EEC=>3 EEC=>$!BR EEC=>$!EE.? FS$ *5A5<*!RA0 5emp/$!B EEADR EEADR!$ KA 3!B EEDA5A *5A5<*!RA0 EEC=>$!EE.? 0177 EEC=>3 01aa EEC=>3 EEC=>$!BR EEC=>$!EE.? FS$ L==A )Activa banco de datos 0. )Copia 5emp/$ en el registro que va a )indicar la posicin de memoria a escribir )Copia KA $ en el registro usado para )escribir en la EAR= . )*elecciona banco de datos $. )Kabilita escritura. )8orra el bit de aviso de &inalizacin )Carga primer valor en EEC=>3 Jnecesario )para realizar la escrituraL. )Carga segundo valor en EEC=>3. )Da el pulso para escritura. )Comprueba que a &inalizado la escritura. )Repite el proceso para escribir en la )EAR= el registro KA 3. )Aara copiarlo en la siguiente direccin )de memoria.

)6uelve al bucle principal

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )>os da el dato codi&icado en una direccin de memoria EAR= . leer Loop4 bc& DA6.D!% clrCdt call 2ey/*can movlC 01'0 subC& 5ecla!B bt&sc *5A5<*!P goto Loop4 call call bt&ss goto goto 2ey/8CD <A/LCD DA6.D!% prim segun )Activa $O pasada )E1plora el teclado )*i "ay tecla pulsada sale del bucle

)*e repite el proceso seguido en escribir )para la obtencin de la direccin a leer.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 6prim movlC 01'd call LCD/RE; mov& 5ecla!B movC& 5emp/$ rl& 5emp/$!$ rl& 5emp/$!$ rl& 5emp/$!$ rl& 5emp/$!$ bc& 5emp/$!9 bc& 5emp/$!% bs& DA6.D!% goto sigue3 mov& 5ecla!B iorC& 5emp/$!$ bs& 2ey/$!9 bs& 2ey/$!% bs& 2ey/$!7 bs& 2ey/$!( mov& 2ey/$!B andC& 5emp/$!$ bc& 5emp/$!0 bc& DA6.D!% mov& 5ecla!B sublC .: bt&ss *5A5<*!C goto Es/ ayor mov& 5ecla!B addlC 0140 call LCD/DA5= bt&sc DA6.D!% goto Loop4 goto READ/EAR= mov& 5ecla!B addlC 0149 call LCD/DA5= bt&sc DA6.D!% goto Loop4 goto READ/EAR=

segun

)*i es la segunda pasada copia la tecla en )los cuatro bits de menos peso de 5emp/$ )La variable 2ey/$ es utilizada como )au1iliar en el arc"ivo teclado.asm

sigue3

) ueve la tecla pulsada al acumulador )Q Es mayor que nueve R )* )>o )Ajuste A*C.. de datos del 0 al : )6isualiza el dato )*i es 3O pasada va a READ/EAR= .

Es/ ayor

)Ajuste A*C.. de datos de la A la ? )*i es 3O pasada va a READ/EAR= .

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )La subrutina realiza la lectura de la direccin indicada en 5emp/$. READ/EAR= bc& mov& movC& bs& bs& bc& mov& movC& mov& movC& inc& bs& bs& bc& mov& movC& call *5A5<*!RA0 5emp/$!B EEADR *5A5<*!RA0 EEC=>$!RD *5A5<*!RA0 EEDA5A!B KA $ 5emp/$!B EEADR EEADR!$ *5A5<*!RA0 EEC=>$!RD *5A5<*!RA0 EEDA5A!B KA 3 DEC/KA .>; )*eleccin del banco 0 de datos. )Copia la direccin a leer. )*eleccin del banco $. )Aulso de lectura. )*elecciona banco 0. )Copia el dato ledo en KA $.

)Lee la direccin siguiente.

)Copia la lectura en KA 3 )Decodi&ica KA $ y KA 3

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 64

I ! I "specialidad "lectrnica Industrial movlC 01'% call LCD/RE; mov& DA6$!B sublC .: bt&ss *5A5<*!C goto /: mov& DA6$!B addlC 0140 call LCD/DA5= goto FN( mov& DA6$!B addlC 0149 call LCD/DA5= mov& sublC bt&ss goto mov& addlC call goto mov& addlC call movlC call bc& goto DA6!B .: *5A5<*!C AY/: DA6!B 0140 LCD/DA5= FN( DA6!B 0149 LCD/DA5= 01c( LCD/RE; DA6.D!0 ver/cod

#a$id Rodr%&uez 'onzlez ___________

)Aosiciona LCD. )Q Es mayor que nueve R )* )>o )Ajuste A*C.. de datos del 0 al : )6isualiza $er dato decodi&icado )Ajuste A*C.. de datos de la A la ?. )6isualiza $er dato decodi&icado

/:

)Es mayor que nueve R )* )>o )Ajuste A*C.. de datos del 0 al : )6isualiza 3M dato decodi&icado )Ajuste A*C.. de datos de la A la ?. )6isualiza 3M dato decodi&icado. )Aosiciona LCD en 3O lnea )Aara indicar que la $O tecla era la A. )6isualiza cdigo Kamming en LCD.

AY/:

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )La subrutina se encarga de decodi&icar el cdigo Kamming contenido en KA 3 )y KA $ y darnos los dos datos en DA6$ y DA6. DEC/KA .>; clr& clr& mov& movC& mov& movC& rr& 1orC& rr& 1orC& rr& 1orC& bt&sc bs& mov& movC& rr& rr& rr& rr& rr& 1orC& rr& 1orC& rr& 1orC& bt&sc DA6 DA6$ KA 3!B 5emp/3 KA $!B 5emp/$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!$ 5emp/$!0 DA6!( KA $!B 5emp/$ 5emp/$!$ 5emp/$!$ 5emp/$!$ 5emp/$!$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!$ 5emp/$!0 )8orra las variables de salida. )Copia el cdigo en dos registros )au1iliares.

)^=R entre bit $ y 0 de KA $. )^=R entre resultado y bit 3. )^=R entre resultado y bit 4. )El resultado JC'L es copiado )en bit ( de DA6. )*e realiza el mismo proceso )para obtener C(! C3 y C$.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 60 bs& mov& movC& rr& mov& rr& 1orC& rr& rr& rr& 1orC& rr& 1orC& rr& 1orC& bt&sc bs& mov& movC& mov& movC& rr& mov& rr& rr& 1orC& rr& rr& 1orC& rr& rr& 1orC& rr& 1orC& bt&sc bs& mov& 1orC& mov& 1orC& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bc& bc& bc& DA6$!0 KA $!B 5emp/$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!B 5emp/3!$ 5emp/3!$ 5emp/3!0 DA6$!3 KA 3!B 5emp/3 KA $!B 5emp/$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!$ 5emp/$!B 5emp/$!$ 5emp/$!$ 5emp/$!B 5emp/3!$ 5emp/3!$ 5emp/3!0 DA6$!4 KA 3!B DA6$!$ KA $!B DA6!$ DA6$!3 DA6$!$ DA6$!3 DA6$!$ DA6$!0 DA6$!3 DA6$!0 DA6$!3 DA6$!4 DA6$!0 DA6$!4 DA6$!0 DA6!( DA6$!4 DA6!( DA6$!4 DA6$!( DA6$!7 DA6$!% )^=R de comprobacin entre KA 3 y DA6$. )^=R de comprobacin entre KA $ y DA6. )Los resultados de las dos ^=R anteriores )son grabados en los ( bits de menos peso )de DA6$.

)Los cuatro bits de mHs peso se colocan a cero.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 66

I ! I "specialidad "lectrnica Industrial bc& movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto DA6$!9 bG000000$$G DA6$!B *5A5<*!P FN9 KA 3!$ FN4 KA 3!$ FN3 KA 3!$ vuelve bG0000000$G DA6$!B *5A5<*!P FN9 KA 3!4 FN4 KA 3!4 FN3 KA 3!4 vuelve bG000000$0G DA6$!B *5A5<*!P FN9 KA 3!3 FN4 KA 3!3 FN3 KA 3!3 vuelve bG00000$00G DA6$!B *5A5<*!P FN9 KA 3!0 FN4 KA 3!0 FN3 KA 3!0 vuelve bG0000$000G DA6$!B *5A5<*!P FN9 KA $!( FN4 KA $!( FN3 KA $!( vuelve bG00000$0$G DA6$!B *5A5<*!P FN9 KA $!9 FN4 KA $!9 FN3 KA $!9 vuelve

#a$id Rodr%&uez 'onzlez ___________

)*i el resultado de la comparacin es tres! )cambia el estado del bit $ de KA 3 y )salta a la subrutina vuelve.

)*i el resultado es $ cambia el bit 4 )de KA 3 y salta a vuelve.

)Cada direccin vara su bit correspondiente )y salta a vuelve.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 6)

movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto movlC subC& bt&ss goto bt&ss goto bc& goto bs& goto

bG00000$$0G DA6$!B *5A5<*!P FN9 KA $!% FN4 KA $!% FN3 KA $!% vuelve bG00000$$$G DA6$!B *5A5<*!P FN9 KA $!7 FN4 KA $!7 FN3 KA $!7 vuelve bG0000$00$G DA6$!B *5A5<*!P FN9 KA $!4 FN4 KA $!4 FN3 KA $!4 vuelve bG0000$0$0G DA6$!B *5A5<*!P FN9 KA $!3 FN4 KA $!3 FN3 KA $!3 vuelve bG0000$0$$G DA6$!B *5A5<*!P FN9 KA $!$ FN4 KA $!$ FN3 KA $!$ vuelve bG0000$$00G DA6$!B *5A5<*!P vuelve KA $!0 FN4 KA $!0 FN3 KA $!0 vuelve

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 68 vuelve

I ! I "specialidad "lectrnica Industrial bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bc& bc& bc& bc& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bc& bc& bc& bc& KA 3!$ DA6!0 KA 3!$ DA6!0 KA $!9 DA6!$ KA $!9 DA6!$ KA $!% DA6!3 KA $!% DA6!3 KA $!7 DA6!4 KA $!7 DA6!4 DA6!( DA6!7 DA6!% DA6!9 KA $!4 DA6$!0 KA $!4 DA6$!0 KA $!3 DA6$!$ KA $!3 DA6$!$ KA $!$ DA6$!3 KA $!$ DA6$!3 KA $!0 DA6$!4 KA $!0 DA6$!4 DA6$!( DA6$!7 DA6$!% DA6$!9

#a$id Rodr%&uez 'onzlez ___________

)Copia los valores de los datos contenidos )en KA 3 y KA $ en los registros de salida )DA6$ y DA6. Estos dos registros van a )contener los dos datos grabados en la EAR= .

return )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )La subrutina se encarga de codi&icar las dos teclas contenidas en DA6. El )resultado nos lo da en KA 3 y KA $. KA .>; clr& clr& mov& movC& movC& rr& mov& 1orC& rr& rr& mov& 1orC& rr& mov& KA $ KA 3 DA6!B 5emp/$ 5emp/3 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!B )8orra las variables de salida. )Copia las teclas en dos registros )au1iliares.

)^=R entre bit $ y 0 de DA6.

)^=R entre resultado y bit ( de DA6.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 64 1orC& rr& rr& mov& 1orC& bt&sc bs& bt&ss bc& mov& movC& movC& rr& rr& mov& 1orC& rr& mov& 1orC& rr& rr& mov& 1orC& rr& mov& 1orC& bt&sc bs& bt&ss bc& mov& movC& movC& rr& rr& rr& mov& 1orC& rr& mov& 1orC& rr& rr& rr& rr& mov& 1orC& bt&sc bs& bt&ss bc& mov& movC& movC& rr& rr& rr& rr& rr& rr& rr& 5emp/$!$ 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/$!0 KA 3!4 5emp/$!0 KA 3!4 DA6!B 5emp/$ 5emp/3 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/$!0 KA 3!3 5emp/$!0 KA 3!3 DA6!B 5emp/$ 5emp/3 5emp/$!$ 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!$ 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/$!0 KA 3!0 5emp/$!0 KA 3!0 DA6!B 5emp/$ 5emp/3 5emp/$!$ 5emp/$!$ 5emp/$!$ 5emp/$!$ 5emp/3!$ 5emp/3!$ 5emp/3!$ )^=R entre resultado y bit 7.

)^=R entre resultado y bit 9. )El resultado JC$L es copiado en el )bit 4 de KA 3. )*e realiza el mismo proceso para )obtener C3.

)Copia C3 en bit 3 de KA 3.

)Copia C( en bit 0 de KA 3.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ )8

I ! I "specialidad "lectrnica Industrial rr& rr& mov& 1orC& rr& mov& 1orC& rr& mov& 1orC& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& bt&sc bs& bt&ss bc& return 5emp/3!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/3!$ 5emp/3!B 5emp/$!$ 5emp/$!0 KA $!( 5emp/$!0 KA $!( DA6!0 KA 3!$ DA6!0 KA 3!$ DA6!$ KA $!9 DA6!$ KA $!9 DA6!3 KA $!% DA6!3 KA $!% DA6!4 KA $!7 DA6!4 KA $!7 DA6!( KA $!4 DA6!( KA $!4 DA6!7 KA $!3 DA6!7 KA $!3 DA6!% KA $!$ DA6!% KA $!$ DA6!9 KA $!0 DA6!9 KA $!0

#a$id Rodr%&uez 'onzlez ___________

)Copia C' en bit ( de KA $.

)Copia bit 0 de DA6 en el $ de KA 3.

)Copia bit $ de DA6 en el 9 de KA $

)Continua copiando los datos de DA6 )en sus correspondientes bits de KA $.

end

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ )1

Fi(ura 82 /r&ani&rama &eneral del pro&rama 3ammin& asm

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ )(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 62 /r&ani&rama de la subrutina codi2icadora 3699IH'

Fi(ura 52 /r&ani&rama de la subrutina decodi2icadora #"C_3699IH'

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ )-

Cap%tulo -

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ )4

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ )0

Practica 3+ 6i-ulador de un ascensor de cuatro pisos utili7ando el upic trainer

.a prctica trata de simular el 2uncionamiento de un ascensor de cuatro pisos *planta baja> primer piso> se&undo piso 1 tercer piso+ con el .C# del upic trainer 1 el teclado del upic trainer plus "l teclado ;e<adecimal del upic trainer plus> $a a simular los botones correspondientes a cada piso 1 los correspondientes al ascensor * $er 2i&ura 4 + 6s%> en el interior del ascensor ;abr cuatro botones * Q8A> Q1A> Q(A 1 Q-A +> simulados mediante el teclado> 7ue nos $an a lle$ar a un piso u otro 6 su $ez> ;a1 un botn en cada piso para Kllamar al ascensorL 7ue tambi?n $an ;a ser simulados mediante el teclado * Q6A> QGA> QCA> 1 Q#A +

Fi(ura 82 Correspondencia de las teclas 6s%> por ejemplo> si el ascensor est en el primer piso 1 pulsamos la tecla QCA *desde el se&undo piso+ este ir al se&undo piso 1a 7ue lo estamos llamando desde el mismo #e i&ual 2orma> si en lu&ar de la QCA se pulsa el Q(A> tambi?n acabar en el se&undo piso* se supone 7ue estamos dentro del ascensor 1 pulsamos el botn + 5i estamos dentro del ascensor> solo podemos pulsar las teclas 8> 1> ( 1 -D si estamos 2uera> solo podremos pulsar la tecla correspondiente al piso donde nos encontramos "l pro&rama trata de simular el comportamiento e<plicado ;asta a;ora en el mdulo .C# del upic trainerD de esta 2orma el .C# representa * $er 2i&ura 18 + la posicin del ascensor * piso en el 7ue se encuentra +> la situacin de las puertas * abiertas o cerradas+> la tecla pulsada 1 el desplazamiento del ascensor * si se mue$e ;acia arriba o ;acia abajo+
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ )6

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 112 "jemplo de 2uncionamiento "n la 2i&ura 18> nos encontramos un ejemplo de 2uncionamiento del pro&rama Como se puede apreciar> el ascensor est subiendo * BP + ;acia el se&undo piso *indicado arriba+ desde el primer piso "n la l%nea de abajo se presenta la posicin actual del ascensorD en la de arriba se indica ;acia donde se diri&e el mismoD en esta l%nea puede aparecer el mensaje K.lamadaL * para indicar 7ue el ascensor ;a sido llamado desde el piso + o K#estinoL * para indicar 7ue desde dentro del ascensor se ;a pulsado el botn del piso +D en este caso el botn pulsado ;a sido el QCA correspondiente al se&undo piso .as si&las KBPL indican 7ue el ascensor est subiendo de piso> en este caso el ascensor estar en una posicin intermedia entre el primero 1 el se&undo pisoD esta posicin intermedia $iene representada por la barra de leds del upic trainer> por lo 7ue est deber estar acti$ada mediante su correspondiente jumper * $er &u%a del upic trainer + .as si&las K#PL indicarn 7ue el ascensor est bajando #os 2lec;as ;acia los lados * KL K L + indican 7ue las puertas del ascensor estn abri?ndose o cerrndose * en caso de mo$imiento en la barra de leds + o 7ue estn 1a abiertas o cerradas *en caso de no ;aber mo$imiento+ .a barra de leds se enciende de 2orma ascendente acti$andose el primer led> lue&o el se&undo> lue&o el tercero> dejando los anteriores conectadosD una $ez encendidos todos los leds> comienzan a apa&arse de i&ual 2orma> se apa&a el primero> lue&o el se&undo> ;asta estar todos apa&ados "ste encendidoNapa&ado completo de los leds indican el cambio de piso del ascensor> por ejemplo> si el ascensor est en el primer piso> para lle&ar al tercero tendr 7ue encenderNapa&ar los leds dos $eces * por ser dos pisos + "ste encendidoNapa&ado de los leds tambi?n indican la apertura o el cierre de las puertas> as% la puerta tardar en abrirse lo 7ue tarden los leds en encenderse 1 apa&arse "l tercer piso es considerado como un piso Kpri$adoL 7ue necesita cla$e de acceso para 2uncionar con el ascensor #e esta 2orma> cada $ez 7ue se teclea el Q-A como destino del ascensor> se nos pide una cla$e de tres d%&itos * Q#68A + 7ue ;abr 7ue acertar para 7ue el ascensor nos lle$e al tercer pisoD en caso de error el ascensor no se mo$er #e i&ual 2orma para llamar al ascensor desde el tercer piso * tecla Q#A + ;a1 7ue introducir esta misma cla$e> si no el ascensor no acudir a la llamada .as puertas del ascensor se 7uedan abiertas cuando este est 7uieto en un piso * e esta 2orma se puede entrar en el desde el piso+ en todos menos en el tercero * por ser Kpri$adoL + "n el tercero> el ascensor est siempre cerrado> abri?ndose por un periodo de tiempo para 7ue la persona sal&a de ?l * en caso de $enir de otro piso + o al pulsar Q6A * para 7ue la persona entre +> $ol$i?ndose a cerrar inmediatamente

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ ))

5i el ascensor se encuentra en el tercer piso 1 pulsamos la tecla Q-A> el pro&rama no responder 1a 7ue se supone 7ue nin&una persona estar dentro del mismo una $ez ;a1a cerrado las puertas 6l comenzar el pro&rama> el ascensor se sitCa siempre en la planta baja con las puertas abiertas Para entender un poco mejor el pro&rama> $amos a $er un pe7ue=o ejemplo de 2uncionamiento 6l encender el pro&rama> pulsamos la tecla Q6A> tecleamos una cla$e mala> otra correcta> entramos al ascensor 1 pulsamos Q(AE N "l ascensor se encuentra en la planta baja con las puertas abiertas 6l pulsar Q6A nos pide la cla$e !ras 2allar el ascensor no ;ace nada *solo nos da un mensaje de error+ Iol$emos a pulsar la tecla de llamada Q6A 1 tecleamos Q#68A "l ascensor reconoce la cla$e 1 comienza ;a cerrar las puertas Bna $ez encendidos 1 apa&ados todos los leds> el .C# muestra el mensaje QBPA 1 repite el proceso de los leds> ;aciendo 7ue el ascensor lle&ue al primer piso e indicndolo en el .C# 5e repite el proceso ;asta lle&ar al tercer piso 6l lle&ar se abren las puertas * mediante el encendidoNapa&ado se indica lo 7ue tardan + !ras un tiempo de espera * en el 7ue la persona entra + las puertas se cierran !ras pulsar el Q(A el ascensor comienza a bajar * 1a 7ue est en el tercer piso> no tiene 7ue cerrar las puertas + Cuando se encienden 1 apa&an los leds el .C# actualiza la nue$a posicin del ascensor 1 las puertas comienzan ;a abrirse !ras ello el ascensor permanece 7uieto esperando recibir otra pulsacin

N N

N N N

Por Cltimo se presenta * 2i&ura 11 + como se realiza el encendido 1 apa&ado de la barra de leds situada en el upic trainer Para modi2icar el $alor de un led> unicamente se en$%a un Q1A o un Q8A por el puerto G para acti$ar o desacti$ar respecti$amente el led deseado

Fi(ura 112 .eds encendi?ndose * iz7uierda + 1 apa&ndose * derec;a +

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ )8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

"n las pa&inas 7ue si&uen> se presenta un listado del pro&rama utilizado en la prctica> as% como comentarios e<plicati$os del mismo 6scensor asmE "s el pro&rama 7ue ;abr 7ue insertar en el PIC 16F84 para el 2uncionamiento de la prctica !eclado asmE se encar&a de controlar el teclado ;e<adecimal .cd asmE se encar&a de controlar el .C# P16284 incE "l 2ic;ero inclu1e Cnicamente las de2iniciones de re&istros 1 $ariables necesarias para pro&ramar el micro 16F84 .a directi$a include del ensamblador permite incluirlo en cual7uier pro&rama 2uente "stos Cltimos pro&ramas *.C#> teclado 1 p16284+ son los mismos 7ue los utilizados en la prctica 1> por tanto no se $ol$ern ;a e<plicar

Para 2inalizar se presenta el or&ani&rama &eneral *2i&ura 11+ correspondientes al 2uncionamiento del pro&rama

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ )4

ASCENSOR.ASM
El programa simula el &uncionamiento de un ascensor de cuatro pisos con el teclado y el LCD. En el Lcd se ve la posicin del ascensor y el estado estado de sus puertas. ediante el teclado introducimos el piso al cual va a ir el ascensor. Aara acceder al tercer piso! tendremos que introducir la clave GDA0G. Conectando la barra de leds! se ven los estados transitorios entre cada piso as como la aperturaScierre de las puertas. list p#$%&'( include +a,-lib-p$%&'(.inc+ Lcd/var equ 010c 2ey/var equ 010e 5emp/$ equ 01$4 5emp/3 equ 01$( A.*= equ 01$7 DA6 equ 01$% DA6$ equ 01$9 org goto org 0 .>.C.= 7 )*e de&ine el tipo de dispositivo ).ncluye arc"ivo con de&inicin de registros

).nicio de las variables para el LCD ).nicio de las variables para el teclado )De&inicin de las distintas variables utilizadas )en el programa

)Aara que al resetear se vaya a .>.C.= ).ndica donde comienza el programa

include +a,-lib-LCD.A* + )Carga rutinas del LCD include +a,-lib-5ECLAD=.A* + )Carga rutinas del teclado )DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Comienzo del programa. .>.C.=, movlC dG0G )8orra la variable A.*= para situar movC& A.*= )el ascensor en la planta baja. bs& *5A5<*!RA0 )*elecciona pagina $ de datos movlC bG0000$$$$G movC& =A5.=>/RE; )Areescaler de $3' para perro guardiHn bc& .>5C=>!;.E )Desconecta interrupciones bc& *5A5<*!RA0 )*elecciona pagina 0 de datos clrCdt )Re&resca perro guardiHn call <A/LCD )Con&igura R8 y RA para control del LCD call LCD/.>. )Rutina de inicializacin del LCD movlC bG0000$$00G call LCD/RE; )Conecta el LCD movlC bG0000000$G )8orra el LCD y lo sitIa en la posicin call LCD/RE; )de inicio J K= E L. )6isualizacin del mensaje GAscensor Aiso,8MG movlC 01c0 call LCD/RE; movlC GAG call LCD/DA5= )Lo visualiza en el LCD call delay )Retardo en la visualizacin del carHcter movlC GsG call LCD/DA5= call delay movlC GcG call LCD/DA5= call delay movlC GeG call LCD/DA5= call delay movlC GnG ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 88

I ! I "specialidad "lectrnica Industrial call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call call movlC call movlC call movlC call clrCdt LCD/DA5= delay GsG LCD/DA5= delay GoG LCD/DA5= delay GrG LCD/DA5= delay G G LCD/DA5= delay GAG LCD/DA5= delay GiG LCD/DA5= delay GsG LCD/DA5= delay GoG LCD/DA5= delay G,G LCD/DA5= delay G8G LCD/DA5= delay 01d& LCD/DA5= delay 01'e LCD/RE; 019& LCD/DA5= 019e LCD/DA5=

#a$id Rodr%&uez 'onzlez ___________

)Cdigo "e1adecimal del GMG

)Cdigo "e1adecimal de &lec"as "acia )derec"a e izquierda respectivamente.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )8ucle principal del programa. L==A movlC 01'0 ) iniSbucle para eliminar toda la call LCD/RE; )$_ &ila salvo sus dos Iltimas posiciones movlC dG$(G )J>os muestran el estado de las puertasL. movC& DA6 movlC G G call LCD/DA5= dec&sz DA6!$ goto FS4 Loop/$ clrCdt call 2ey/*can )E1plora el teclado movlC 01'0 subC& 5ecla!B )*i "ay tecla pulsada sale del bucle bt&sc *5A5<*!P goto Loop/$ call delay )Retardo para evitar rebotes. movlC bG0$$$$$$0G )*i la tecla pulsada es GAG! va a ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 81 subC& bt&sc bc& bt&sc goto movlC subC& bt&sc bc& bt&sc goto movlC subC& bt&sc bc& bt&sc goto movlC subC& bt&sc bc& bt&sc goto movlC subC& bt&sc bs& bt&sc goto movlC subC& bt&sc bs& bt&sc goto movlC subC& bt&sc bs& bt&sc goto movlC subC& bt&sc bs& bt&sc goto goto 5ecla!B *5A5<*!P DA6!0 *5A5<*!P piso/8 bG0$$$$0$$G 5ecla!B *5A5<*!P DA6!0 *5A5<*!P piso/$ bG0$$$0$$$G 5ecla!B *5A5<*!P DA6!0 *5A5<*!P piso/3 bG$0$$0$$$G 5ecla!B *5A5<*!P 5emp/$!0 *5A5<*!P piso/4 bG0$$$$$0$G 5ecla!B *5A5<*!P DA6!0 *5A5<*!P piso/8 bG$$$0$$$0G 5ecla!B *5A5<*!P DA6!0 *5A5<*!P piso/$ bG$$$0$$0$G 5ecla!B *5A5<*!P DA6!0 *5A5<*!P piso/3 bG$$$0$0$$G 5ecla!B *5A5<*!P 5emp/$!0 *5A5<*!P piso/4 Loop/$ )piso/8 y desactiva bit0 de DA6.

)*i es una G8G va a piso/$ y DA6!0#0

)*i es GCG va a piso/3 y DA6!0#0

)*i es GDG va a piso/4 y 5emp/$!0#0

)*i es G0G va a piso/8 y DA6!0#$

)*i es G$G va a piso/$ y DA6!0#$

)*i es G3G va a piso/3 y DA6!0#$

)*i es G4G va a piso/4 y 5emp/$!0#$

)*i no es ninguna vuelve a L==A.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ) Rutina para llevar el ascensor a la planta baja. piso/8 inc& A.*=!$ dec&sz A.*=!$ goto FN3 goto Loop/$ bt&sc DA6!0 call destino bt&ss DA6!0 )*i el ascensor ya esta en la planta )baja! vuelve a L==A. )*i la tecla era GAG visualiza el )mensaje GLlamadoG! si era G0G )GDestinoG.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 8(

I ! I "specialidad "lectrnica Industrial call llamado movlC G8G call LCD/DA5= movlC 01d& call LCD/DA5= movlC G G call LCD/DA5= movlC G G call LCD/DA5= clr& A=R58 call delay call delay call delay call delay movlC dG4G subC& A.*=!B bt&sc *5A5<*!P goto FN: movlC 019e call LCD/DA5= movlC 019& call LCD/DA5= call leds clr& A=R58 call delay call delay movlC 01'e call LCD/RE; movlC GDG call LCD/DA5= movlC GBG call LCD/DA5= movlC 01ce call LCD/RE; mov& A.*=!B addlC 0140 call LCD/DA5= call leds dec&sz A.*=!$ goto FS9 movlC 01ce call LCD/RE; movlC G8G call LCD/DA5= clr& A=R58 call delay call delay movlC 01'e call LCD/RE; movlC 019& call LCD/DA5= movlC 019e call LCD/DA5= call leds call delay call delay goto L==A

#a$id Rodr%&uez 'onzlez ___________

)6isualiza G8MG JdestinoL

)Aara apagar la barra de leds.

)*i el ascensor estH en el tercer )piso! no cierra las puertas Jya )estHn cerradasL.

)6isualiza &lec"as cierra puertas. )6isualizacin en leds del estado )de las puertas y borrado de los mismas.

)6isualizacin GDBG para comenzar a )bajar de piso.

)Ajusta A*C.. para visualizacin. )6isualiza piso actuar. )Cuando A.*=#0 estamos en la planta baja ) y salimos.

)6isualiza posici`n ascensor J8L

)6isualizacin abre puertas con estado )de las mismas en la barra de leds. )5ras colocar ascensor en piso bajo y )cerrar las puertas! vuelve a L==A.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para llevar el ascensor al primer piso. ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 8-

piso/$

movlC dG$G )*i ya estH en el primer piso vuelve subC& A.*=!B )a L==A. bt&sc *5A5<*!P goto L==A bt&sc DA6!0 call destino )*i la tecla era G8G visualiza el bt&ss DA6!0 )mensaje GLlamadoG! si era G$G call llamado )GDestinoG. movlC G$G call LCD/DA5= movlC 01d& call LCD/DA5= )6isualiza G$MG JdestinoL movlC G G call LCD/DA5= movlC G G call LCD/DA5= clr& A=R58 call delay call delay call delay call delay movlC dG4G )*i el ascensor estH en el tercer subC& A.*=!B )piso! no cierra las puertas Jya bt&sc *5A5<*!P )estHn cerradasL. goto FN: movlC 019e call LCD/DA5= movlC 019& call LCD/DA5= clr& A=R58 call delay call leds call delay call delay inc& A.*=!$ )*i el ascensor estH en la planta baja dec&sz A.*=!$ )sigue! si no JestarH en 4O o 3OL va goto esta/arriba )a esta/arriba. movlC 01'e call LCD/RE; movlC G<G call LCD/DA5= movlC GAG call LCD/DA5= )6isualizacin G<AG y sube el ascensor clr& A=R58 )un piso. call delay call leds call delay call delay inc& A.*=!$ goto esta )Como ya estH en el primer piso va a esta. esta/arriba movlC 01'e call LCD/RE; movlC GDG call LCD/DA5= movlC GBG )6isualiza GDBG y baja el ascensor un piso. call LCD/DA5= clr& A=R58 call delay vuelve call leds call delay ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 84

I ! I "specialidad "lectrnica Industrial call dec& dec&sz goto goto movlC call mov& addlC call goto movlC call mov& addlC call clr& call movlC call movlC call movlC call clr& call call call call goto L==A delay A.*=!$ A.*=!B FN3 esta 01ce LCD/RE; A.*=!B 0140 LCD/DA5= vuelve 01ce LCD/RE; A.*=!B 0140 LCD/DA5= A=R58 delay 01'e LCD/RE; 019& LCD/DA5= 019e LCD/DA5= A=R58 delay leds delay delay

#a$id Rodr%&uez 'onzlez ___________

)*i todava no es el primero va a vuelve! si )ya estamos en el primero! va a esta.

)6isualiza piso actuar.

esta

)6isualiza piso actuar J$ML.

)Aara abrir las puertas.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para llevar el ascensor al segundo piso. piso/3 movlC subC& bt&sc goto bt&sc call bt&ss call movlC call movlC call movlC call movlC call clr& call call call call movlC subC& bt&sc goto movlC dG3G A.*=!B *5A5<*!P L==A DA6!0 destino DA6!0 llamado G3G LCD/DA5= 01d& LCD/DA5= G G LCD/DA5= G G LCD/DA5= A=R58 delay delay delay delay dG4G A.*=!B *5A5<*!P FN$0 019e )*i ya estH en el primer piso vuelve )vuelve a L==A. )*i la tecla era GCG visualiza el )mensaje GLlamadoG! si era G3G )GDestinoG.

)6isualiza G3MG JdestinoL.

)*i el ascensor estH en el tercer )piso! no cierra las puertas Jya )estHn cerradasL.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 80 call LCD/DA5= movlC 019& call LCD/DA5= clr& A=R58 call delay call leds call delay call delay movlC dG4G subC& A.*=!B bt&ss *5A5<*!P goto esta/abajo movlC 01'e call LCD/RE; movlC GDG call LCD/DA5= movlC GBG call LCD/DA5= clr& A=R58 call delay call leds call delay call delay dec& A.*=!$ goto yaesta movlC 01'e call LCD/RE; movlC G<G call LCD/DA5= movlC GAG call LCD/DA5= clr& A=R58 call delay call leds call delay call delay inc& A.*=!$ movlC dG3G subC& A.*=!B bt&sc *5A5<*!P goto yaesta movlC 01ce call LCD/RE; mov& A.*=!B addlC 0140 call LCD/DA5= clr& A=R58 call delay call leds call delay call delay inc& A.*=!$ movlC 01ce call LCD/RE; mov& A.*=!B addlC 0140 call LCD/DA5= clr& A=R58 call delay movlC 01'e call LCD/RE;

)*i estH en el tercero! baja un piso )si no JestarH en 8M o $ML va a esta/abajo.

)6isualiza GDBG y baja un piso.

esta/abajo

)Como ya esta en el 3M va a yaesta.

)6isualiza G<AG y sube un piso.

)*i ya estH en el 3M va a yaesta! si no )sube otro piso.

yaesta

)6isualiza piso actual J3ML.

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 86

I ! I "specialidad "lectrnica Industrial movlC call movlC call clr& call call call call goto L==A 019& LCD/DA5= 019e LCD/DA5= A=R58 delay leds delay delay

#a$id Rodr%&uez 'onzlez ___________

)Abre puertas.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para llevar el ascensor al segundo piso. piso/4 bt&ss 5emp/$!0 )*i la tecla pulsada es G4G y el goto FN7 )ascensor estH en el tercer piso movlC dG4G )vuelve "a L==A ya que en este piso subC& A.*=!B )las puertas estHn cerradas y no se bt&sc *5A5<*!P )puede pulsar el G4G. goto L==A movlC 01'0 )En caso de pulsar GAG o G4G desde call LCD/RE; )otro piso nos muestra el mensaje movlC GCG )GCLA6E,G. call LCD/DA5= movlC GLG call LCD/DA5= movlC GAG call LCD/DA5= movlC G6G call LCD/DA5= movlC GEG call LCD/DA5= movlC G,G call LCD/DA5= bc& 5emp/$!$ )8orra el bit para llevar correctamente clrCdt )la veri&icacin de la clave. call 2ey/*can )E1plora el teclado movlC 01'0 subC& 5ecla!B )*i "ay tecla pulsada sale del bucle bt&sc *5A5<*!P goto FS7 call delay movlC bG0$$$$$0$G subC& 5ecla!B bt&sc *5A5<*!P bs& 5emp/$!$ )*i la $O tecla >= es GDG activa el bit call <A/LCD )Jcon lo que ya serH &alsaL y continua. movlC 01'9 call LCD/RE; movlC GDG call LCD/DA5= )6isualiza GDG. clrCdt call 2ey/*can )E1plora el teclado movlC 01'0 subC& 5ecla!B )*i "ay tecla pulsada sale del bucle bt&sc *5A5<*!P goto FS7 call delay movlC bG0$$$$$$0G subC& 5ecla!B bt&ss *5A5<*!P

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 8) bs& 5emp/$!$ )*i la 3O tecla >= es GAG activa el bit call <A/LCD )Jcon lo que sera &alsaL y continua. movlC 01'' call LCD/RE; movlC GDG call LCD/DA5= clrCdt call 2ey/*can )E1plora el teclado movlC 01'0 subC& 5ecla!B )*i "ay tecla pulsada sale del bucle bt&sc *5A5<*!P goto FS7 call delay movlC bG0$$$$$0$G subC& 5ecla!B bt&ss *5A5<*!P bs& 5emp/$!$ )*i la 4O tecla >= es G0G activa el bit. call no )6a a comprobar la clave. call <A/LCD movlC 01': call LCD/RE; movlC GDG call LCD/DA5= movlC 01'b call LCD/RE; movlC G=G call LCD/DA5= movlC G2G )6isualiza G=2G ya que la clave es buena call LCD/DA5= )y continua. clr& A=R58 call delay call delay call delay call delay movlC dG4G )*i estH en el tercer piso J*e "abrH pulsado subC& A.*=!B )la GAGL abre las puertas y las cierra tras bt&sc *5A5<*!P )un tiempo. goto abrecierra bt&sc 5emp/$!0 call destino bt&ss 5emp/$!0 )6isualiza mensaje llamada o destino segIn call llamado )si pulsamos GAG o G4G. movlC G4G call LCD/DA5= movlC 01d& call LCD/DA5= )6isualiza destino J4ML movlC G G call LCD/DA5= mov lC G G call LCD/DA5= clr& A=R58 call delay call delay call delay call delay movlC 019e call LCD/DA5= movlC 019& call LCD/DA5= )Cierra las puertas. clr& A=R58

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 88

I ! I "specialidad "lectrnica Industrial call delay call leds call delay call delay movlC 01'e call LCD/RE; movlC G<G call LCD/DA5= movlC GAG call LCD/DA5= clr& A=R58 call delay call leds call delay call delay inc& A.*=!$ movlC dG4G subC& A.*=!B bt&sc *5A5<*!P goto aqui movlC 01ce call LCD/RE; mov& A.*=!B addlC 0140 call LCD/DA5= goto aqu movlC 01ce call LCD/RE; mov& A.*=!B addlC 0140 call LCD/DA5= clr& A=R58 call delay call delay movlC 01'e call LCD/RE; movlC 019& call LCD/DA5= movlC 019e call LCD/DA5= call leds call delay call delay call delay call delay call call movlC call movlC call movlC call call call call goto delay delay 01'e LCD/RE; 019e LCD/DA5= 019& LCD/DA5= leds delay delay L==A

#a$id Rodr%&uez 'onzlez ___________

)6isualiza G<AG. )Aara subir un piso.

aqu

)*i ya estamos en el tercero va a aqui.

)6isualiza piso actual y vuelve a aqu.

aqui

)6isualiza piso actual J4ML.

)Aara abrir las puertas.

)Retardo de espera.

)Cierra las puertas.

)6uelve a L==A.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para abrir las puertas y cerrarlas tras un tiempo J*olo al pulsarL ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 84 )la tecla GAGL. abrecierra movlC 01'0 call LCD/RE; movlC dG$(G movC& DA6 movlC G G call LCD/DA5= dec&sz DA6!$ goto FS4 movlC 01'e call LCD/RE; movlC 019& call LCD/DA5= movlC 019e call LCD/DA5= call leds call delay call delay call delay call delay call delay call delay movlC 01'e call LCD/RE; movlC 019e call LCD/DA5= movlC 019& call LCD/DA5= call leds call delay call delay goto L==A

)8orra la primer lnea salvo dos Iltimas )posiciones.

)Abre las puertas.

)Aeriodo de espera.

)Cierra las puertas.

)6uelve a L==A.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )6isualiza el mensaje G>=G para indicar que la clave introducida no es buena. no movlC call bt&ss return movlC call movlC call movlC call clr& call call call call bc& goto GDG LCD/DA5= 5emp/$!$ 01'b LCD/RE; G>G LCD/DA5= G=G LCD/DA5= A=R58 delay delay delay delay 5emp/$!$ L==A

)*i algIn digito es incorrecto se )visualiza el mensaje G>=G! si todos son )buenos J5emp/$!$#0L vuelve.

)6uelve a L==A Jpor ser &alsa la claveL.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para visualizar el mensaje GLlamado,G. llamado call <A/LCD movlC 01'0 call LCD/RE; movlC G G call LCD/DA5= ____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 48

I ! I "specialidad "lectrnica Industrial movlC GLG call LCD/DA5= movlC GlG call LCD/DA5= movlC GaG call LCD/DA5= movlC GmG call LCD/DA5= movlC GaG call LCD/DA5= movlC GdG call LCD/DA5= movlC GaG call LCD/DA5= movlC G,G call LCD/DA5= movlC G G call LCD/DA5= return call <A/LCD movlC 01'0 call LCD/RE; movlC G G call LCD/DA5= movlC GDG call LCD/DA5= movlC GeG call LCD/DA5= movlC GsG call LCD/DA5= movlC GtG call LCD/DA5= movlC GiG call LCD/DA5= movlC GnG call LCD/DA5= movlC GoG call LCD/DA5= movlC G,G call LCD/DA5= movlC G G call LCD/DA5= return

#a$id Rodr%&uez 'onzlez ___________

destino

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina para visualizar en la barra de leds! el estado del ascensor o las puertas. )Lo que "ace es activar los leds de &orma consecutiva Juno tras otroL y Juna vez )encendidos todosL apagarlos de igual manera pero en sentido inverso. leds movlC movC& call movlC movC& call movlC movC& call movlC movC& bG00000000G A=R58 delay bG$0000000G A=R58 delay bG$$000000G A=R58 delay bG$$$00000G A=R58 )8orra leds )Activa el primero )Activa el siguiente Jdejando el anteriorL

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 41 call delay movlC bG$$$$0000G movC& A=R58 call delay movlC bG$$$$$000G movC& A=R58 call delay movlC bG$$$$$$00G movC& A=R58 call delay movlC bG$$$$$$$0G movC& A=R58 call delay movlC bG$$$$$$$$G movC& A=R58 call delay movlC bG0$$$$$$$G movC& A=R58 call delay movlC bG00$$$$$$G movC& A=R58 call delay movlC bG000$$$$$G movC& A=R58 call delay movlC bG0000$$$$G movC& A=R58 call delay movlC bG00000$$$G movC& A=R58 call delay movlC bG000000$$G movC& A=R58 call delay movlC bG0000000$G movC& A=R58 call delay movlC bG00000000G movC& A=R58 call delay call delay return

)<na vez conectados todos! comienza a )apagarlos desde el primero.

)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD )Rutina de temporizacin de unos 0!37 segundos. delay movlC .370 movC& DA6$ delay$ movlC .370 movC& DA6 )La temporizacin se realiza mediante delay3 nop )las restas sucesivas de dos variables dec&sz DA6!? goto delay3 dec&sz DA6$!? goto delay$ return end

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 4(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 82 /r&ani&rama &eneral del pro&rama ascensor asm

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 4-

Cap%tulo 4

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 44

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 40

Gua del pic 16)84

"l pic 7ue se $a a utilizar para las prcticas realizadas $a ;a ser el 16284 "ste pic es similar al 16c84> por tanto *aun7ue a $eces se ;able de ?ste+ nos re2erimos al 16284 a lo lar&o de toda la &u%a 1. Encapsulado: "l 16284 pertenece a la 2amilia de la &ama media 1 dentro de ella es de los ms pe7ue=osE tan solo tiene 18 patillas !iene una capacidad de memoria de pro&rama de 1J *palabras de 14 bits cada una+ tipo F.653 1 64 b1tes de ""PR/9 como memoria au<iliar "stas memorias son el?ctricamente borrables> lo 7ue permite &rabar 1 borrar el pro&rama para realizar todas las pruebas pertinentes *soporta unos 1888 ciclos de escritura,borrado+ "ste pic est 2abricado con tecnolo&%a C9/5 1 el encapsulado *de 18 patillas+ es el representado en la 2i&ura 1 1

Fi(ura 1212 Patillaje del pic 16284 6 continuacin se $a a comentar bre$emente la misin de cada patillaE 9 :ddE Patilla por la 7ue se $a a aplicar la tensin positi$a de alimentacin *4I R 6I #C+ 9 :ss+ Conectada a tierra o ne&ati$o de la alimentacin 9 C;/+ "sta patilla $a a ser acti$ada a ni$el bajo para resetear el pic !ambi?n se $a a utilizar durante la &rabacin de la memoria de pro&rama para introducir por ella la tensin Ipp *1(I R 14I #C+ "l micropic trainer tiene un botn de reset conectado al pic como se $e en la 2i&ura 1 ( *R1 O 188 1 R O 4J)+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 46

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 1222 Circuito 7ue permite producir un reset al presionar un pulsador 9 <6C1.C;=*0+ Por ella se $a a introducir la entrada del circuito oscilador e<terno 7ue $a a proporcional la 2recuencia de trabajo 9 <6C2.C;=<>"+ Patilla au<iliar del circuito oscilador 5e&Cn la 2recuencia de trabajo del oscilador> se $a a tener una u otra $elocidad en la ejecucin de cada instruccin "n las prcticas realizadas> la 2recuencia de trabajo es de 4 93z> por tanto el ciclo de instruccin $a a ser de 1 s& *4 periodos de reloj < 8>(0 s& O 1s&+ !odas las instrucciones se $an a ejecutar en 1s& sal$o las de salto 7ue $an ;a tardar (s& .os pic admiten cuatro tipos de circuito oscilador *RC> 35> F! 1 .P+ "n las prcticas realizadas se a utilizado el F! *Fi&ura 1 -+

Fi(ura 1232 "s7uema del oscilador tipo F! "ste circuito utiliza un cristal de cuarzo 7ue actCa como un oscilador 7ue proporciona la 2recuencia de 493z antes citada .os condensadores C1 1 C( estn comprendidos entre 10 R -- pF "l microApic trainer los utiliza de () pF 9 /#1 ? /#4+ 5on las 0 l%neas de ",5 di&itales correspondientes a la puerta 6 .a l%nea R64 multiple<a el "<C=* "n este caso sir$e para recibir una 2recuencia e<terna 7ue alimente el temporizador interno !9R8 9 /&1 ? /&5+ Corresponden a las 8 l%neas de ",5 di&itales de la puerta G .a RG8 multiple<a el *0"> 7ue ser$ir de entrada a una peticin e<terna de interrupcin "l consumo t%pico del pic es de (m6 apro<imadamente 2uncionando en modo normal Cuando entramos en el modo llamado KreposoL> mediante la instruccin 5.""P *$er apartado 0+> pasa a consumir menos de 18 6
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 4)

2. Arquitectura interna: .a ar7uitectura del procesador si&ue el modelo 3ar$ard "n este> la CPB se conecta de 2orma independiente 1 con buses distintos con la memoria de instrucciones 1 con la de datos> permitiendo a esta acceder simultneamente a las dos memorias 5e aplica la t?cnica de se&mentacin en la ejecucin de las instrucciones "sta se&mentacin permite al procesador realizar al mismo tiempo la ejecucin de una instruccin 1 la bCs7ueda del cdi&o de la si&uiente #e esta 2orma se puede ejecutar cada instruccin en un ciclo *un ciclo de instruccin e7ui$ale a cuatro ciclos de reloj+ .as instrucciones de salto ocupan dos ciclos al no conocer la direccin de la si&uiente instruccin ;asta 7ue no se ;a1a completado la de bi2urcacin "l 2ormato de todas las instrucciones es de la misma lon&itud *14 bits en los de &ama media+ Procesador RI5C *Computador de Sue&o de Instrucciones Reducido+ .os modelos de la &ama media disponen de un repertorio de -0 instrucciones Cual7uier instruccin puede manejar cual7uier elemento de la ar7uitectura como 2uente o como destino>es decir> todos los objetos del sistema *puertas de ",5> posiciones de memoria> etc + estn implementados como re&istros "n la 2i&ura ( 1 aparece el dia&rama de blo7ues del pic 16284 Para analizar un poco el 2uncionamiento del procesador> nos $amos a centrar en la ejecucin de una instruccin

Fi(ura 221 6r7uitectura interna del PIC16F84 "l contador de pro&rama comienza la 2ase de bCs7ueda 2acilitando la direccin de la memoria de instrucciones donde se ubica la instruccin 5u cdi&o binario de 14 bits se lee 1 se car&a en el Re&istro de instrucciones *1+> desde donde se trans2iere al decodi2icador 1 a la unidad de control *(+ .a 6.B *-+ es la encar&ada de realizar la operacin aritm?ticoNl&ica 7ue implica la instruccin decodi2icada Bno de los operandos lo recibe del re&istro P *4+ 1 el otro de un re&istro o de la propia instruccin
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 48

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

"n cuanto a la memoria de pro&rama> el pic es capaz de contener 8 14( instrucciones de 14 bits cada una "ste mapa se di$ide en p&inas de ( 848 posiciones Para direccionar 8J posiciones se necesitan 1- bits *lon&itud del contador de pro&rama+ 5in embar&o el pic solo tiene implementadas 1J posiciones> por lo 7ue i&nora los - bits de ms peso del PC *contador pro&rama+ .a or&anizacin de la memoria de pro&rama es como indica la 2i&ura ( ( "l $ector de reset se almacena en la direccin 8888> mientras 7ue el $ector de interrupcin est en la 8884 .a memoria de pro&rama de usuario comienza en la direccin 8880 1 se e<tiende ;asta la 8-FF .a pila es una zona aislada de las memorias de instrucciones 1 datos *Ier 2i& ( -+ !iene una estructura .IF/ *.ast In First /ut+ en la 7ue el Cltimo $alor &uardado es el primero 7ue sale !iene oc;o ni$eles de pro2undidad cada uno con 1- bits .a instruccin C6.. *Ier apartado 0+ 1 las interrupciones ori&inan la car&a del contenido del PC en el ni$el superior de la pila "l contenido del ni$el superior se saca de la pila al ejecutar las instrucciones R"!BRH> R"!.P 1 R"!FI"

Fi(ura 2232 /r&anizacin de la memoria de pro&rama

3. Registros internos: .a memoria de datos del 16F84 dispone de dos zonas di2erentesE 9 @rea ,,P/< + de 64 b1tes "n ella se pueden almacenar datos 7ue no se pierden al desconectar la alimentacin 9 @rea /# estAtica o 6/# + en ella reside el banco de re&istros espec%2icos *5FR+ 1 el banco de re&istros de propsito &eneral *'PR+ "l primero tiene (4 posiciones de tama=o b1te 1 el se&undo 68

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 44

.a memoria R69 se ;alla di$idida en dos bancos *banco 8 1 banco 1+ de 1(8 b1tes cada uno .as 1( primeras posiciones estn reser$adas al 5FR> son los re&istros encar&ados del control del procesador 1 sus recursos .as direcciones comprendidas entre )3 R 8)3 no son operati$as .os 68 re&istros del 'PR se destinan a propsito &eneral 1 en realidad solo son operati$os los 68 del banco 8 por7ue los del banco 1 se mapean sobre el banco 8> es decir> cuando se apunta a uno del banco 1 se accede al mismo pero en el banco 8 6 continuacin> se describen los di2erentes re&istros 7ue se representan en la 2i&ura - 1

Fi(ura 3212 /r&anizacin de los re&istros internos 9 /e(istro de indireccin (11)+ "ste re&istro no tiene e<istencia 2%sica> por tanto no se podr leer 5i se intenta acceder a ?l> siempre se encontrar 88> 1 si se intenta escribir se producir un H/P> es decir> una instruccin 7ue no ;ace nada "ste re&istro se utiliza Cnicamente para realizar un direccionamiento indirectoD cuando se le ;ace re2erencia se accede a la direccin de un banco especi2icada con los ) bits de menos peso del re&istro F5R "l bit de ms peso del F5R junto con el IRP del re&istro "5!6#/ se encar&a de seleccionar el banco a acceder 9 /e(istro PC; (12)+ 5on los 8 bits de menos peso del contador del pro&rama o PC Como el PC debe tiene un tama=o de 1- bits> sus bits de ma1or peso se lle$an al re&istro PC.6!3 *posiciones 86N86+ Como muestra la 2i&ura - (> si el PC es destino de una instruccin> el contenido de PC.6!3 se tiene en cuenta automticamenteD para las instrucciones C6.. 1 '/!/ tiene lu&ar la misma operacin *teniendo en cuenta 7ue el PC est a;ora codi2icado con 11 bits en la propia instruccin+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 188

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 3222 #eterminacin de los bits de ma1or peso del PC a tra$?s del PC.6!3 6 la derec;a> para instrucciones C6.. 1 '/!/ 9 /e(istro 6"#">6 (13)+ contiene un cierto nCmero de bits de estado de la unidad central 5e puede leer 1 escribir como cual7uier otro re&istro "n la 2i&ura - - se puede $er la estructura de este re&istroD ;a1 bits 7ue no se pueden $aria al indicar stados del procesador> as% al ejecutar la instruccin de borrar el re&istro> este se car&a con el $alor 888uu1uu *u O se 7ueda como estaba+

Fi(ura 3232 "structura interna del re&istro estado "l 'it 1 o C *Carr1+ es el bit de acarreo para las operaciones de suma 1 sustraccin 5e pone a 1 si se produce acarreo en el bit de ma1or peso !ambi?n lo utilizan las instrucciones de rotacin "l 'it 1 o BC *#i&it Carr1+ es el bit de acarreo de d%&ito Funciona i&ual 7ue el anterior> pero ;aciendo re2erencia al 4T bit "l 'it 2 o C *Uero+ se pone a 1 si el resultado de una operacin aritm?tica o l&ica es nulo "l 'it 3 o PB *Po:er do:n+ se pone a 1 durante la cone<in a la alimentacin del circuito o durante la ejecucin de la instruccin C.RP#! 5e pone a 8 al ejecutar 5.""P "s de solo lectura "l 'it 4 o "< *!ime out+ se pone a 1 durante la cone<in a alimentacin o durante la ejecucin de una instruccin C.RP#! o 5.""P 5e pone a 8 cuando el temporizador :atc;do& se desborda !ambi?n es de solo lectura .os 'it 5 D 6 o /P1 D /P1 sir$en para seleccionar las p&inas de memoria de pro&rama "l 16F84 solo utiliza el RP8 al tener tan solo dos p&inasD si RP8 O 1 selecciona pa&ina 1> si RP8 O 8 selecciona la pa&ina 8 "l 'it 5 o */P no se utiliza en nuestro caso> debe pro&ramarse como 8 .os bits !8 1 P# tambi?n nos sir$en para determinar la causa de la produccin de un reset *$er tabla - 1+ "< 1 8 8 1 1 PB Condicin de reset 1 Reset por alimentacin 1 #esbordamiento del P#! en 2uncionamiento normal 8 #esbordamiento del P#! en estado de reposo 1 6cti$acin del 9C.R en 2uncionamiento normal 8 6cti$acin 9C.R en reposo "a'la 3212 #eterminacin del ori&en de un reset

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 181

9 /e(istro *0"C<0 (1&98&)+ sir$e para el control &lobal de las interrupciones 1 para indicar la procedencia de al&una de ellas .as cuatro 2uentes de interrupcin posibles en el 16F84 sonE acti$acin de la patilla RG8,IH!> desbordamiento del temporizador !9R8> cambio de estado en los pines RG4 a RG) 1 el 2in de una escritura en la ""PR/9 de datos

Fi(ura 3242 Re&istro IH!C/H Cada bit del re&istro IH!C/H *Fi&ura - 4+ tiene un si&ni2icado concreto 7ue es el 7ue si&ueE "l 'it 1 o /&*F *RG Interrupt Fla&+ se pone a 1 si ;a1 un cambio de estado en una de las l%neas de RG4 a RG) del puerto G "l 'it 1 o *0"F *Interrupt Fla&+ se pone a 1 si ;a1 una interrupcin pro$ocada por la l%nea RGO,IH! del puerto G "l 'it 2 o "1*F *!imer 8 Interrupt Fla&+ se pone a 1 si ;a1 desbordamiento del !imer 8 "l 'it 3 o /&*, *RG Interrupt "nable+ se pone a 1 para autorizar las interrupciones pro$ocadas por un cambio de estado en las l%neas RG4 a RG) del puerto G "l 'it 4 o *0", *Interrupt "nable+ se pone a 1 para autorizar las interrupciones pro$ocadas por la l%nea RG8,IH! del puerto G .os 'it 5 o 'it "1*, *!imer 8 Interrupt "nable+ se pone a 1 para autorizar las interrupciones debidas al desbordamiento del temporizador 8 "l 'it 6 o ,,*, *""PR/9 Interrupt "nable+ se pone a 1 para autorizar las interrupciones 7ue proceden de la memoria ""PR/9 de datos "l 'it 5 o G*, *'lobal Interrupt "nable+ se pone a 1 para autorizar todas las interrupciones 7ue no ten&an sus bits a 8 5i este bit es 8> todas las interrupciones estn desacti$adas aun7ue sus bits particulares sean 1 *Ier 2i&ura - 0+

Fi(ura 3252 .&ica de control para interrupciones

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 18(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

9 Puertas de ,.6+ el 16F84 solo dispone de dos puertas de entrada,salida .a puerta 6 posee 0 l%neas> R68NR64> 1 una de ellas soporta dos 2unciones multiple<adas 5e trata de la R64,!8CJI> 7ue puede actuar como l%nea de ",5 o como patilla de entrada para los impulsos con 7ue debe contar !9R8 .a puerta G tiene 8 l%neas> RG8N RG)> 1 tambi?n tiene una con 2unciones multiple<adas> la RG8,IH!> 7ue sir$e como ",5 1 como patilla por la 7ue se reciben los impulsos e<ternos 7ue pro$ocan una interrupcin Cada l%nea de ",5 puede con2i&urarse independientemente como entrada o salida> se&Cn se pon&a a 1 o 8> respecti$amente> el bit asociado del re&istro de !RI56 o !RI5G *direcciones 0 1 6 del banco 1 de la memoria de datos+ .os re&istros PB"R!66 1 PB"R!6G &uardan la in2ormacin 7ue entra o sale por la puerta *direcciones 0 1 6 del banco 8+ 6l reinicializarse el pic todos los bits de los re&istros !RI5 7uedan a 1> con lo 7ue las l%neas de las puertas 7uedan con2i&uradas como entradasD las resistencias pullNup 7ue $eremos ms adelante> se desconectan al resetear Cada l%nea de salida puede suministrar una corriente m<ima de (8 m6 1 si es entrada puede absorber ;asta (0 m6 "n la 2i&ura - 6 se muestra la adaptacin de las patillas R64NR68 a las se=ales internas del procesador Por ejemplo> cuando se saca un ni$el l&ico por una puerta 6> primero se deposita en la l%nea correspondiente del bus de datos 1 se acti$a la se=al PRI!"> lo 7ue ori&ina el almacenamiento del ni$el en la bscula de datosD para 7ue actCe como salida> la bscula de con2i&uracin deber%a contener un 8> por lo 7ue la puerta /R tendr%a un 8 en su salida 1 la 6H# tambi?nD estos $alores producen la conduccin del P9/5 superior 1 el blo7ueo del H9/5D as%> la patilla 7ueda conectada a Idd 1 tiene ni$el alto Como la l%nea de salida est lac;eada conser$a su $alor ;asta 7ue no se reescriba en la bscula #

Fi(ura 3262 Cone<in electrnica de las patillas R6VNR68 6 la derec;a la patilla R64 "n la 2i&ura - ) se $e el es7uema electrnico de cone<ionado para las patillas RG)NRG8 6 todas las l%neas de esta puerta se le permite conectar una resistencia pullN up de ele$ado $alor con el positi$o de la alimentacin *se pro&rama en el re&istro /P!I/H+ .as l%neas RG)NRG4 pueden pro&ramarse para 7ue &eneren una interrupcin si al&una de ellas cambia de $alor *en ese caso se indicar%a en el RGIF+ .as l%neas RG) 1 RG6 tambi?n se utilizan para la &rabacin en serie de la memoria de pro&rama *Ier apartado 4+
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 18-

Fi(ura 3252 6 la iz7uierda el cone<ionado de las puertas RG)NRG4 6 la derec;a para las puertas RG-NRG8 9 "e-pori7adores+ el !9R8 es un temporizador,contador de 8 bits Puede utilizarse como contador> representado por los impulsos 7ue se aplican a la patilla R64,!8CJI *de FF pasa a 88> acti$ndose un se=alizador o una interrupcin+> 1 como temporizador> car&ando un re&istro con un $alor inicial *al desbordarse ;ar lo mismo 7ue el anterior+ Para pro&ramarlo de una u otra 2orma se usa el re&istro /P!I/H 7ue $eremos ms adelante "l !9R8 puede ser le%do 1 escrito *direccin 1> banco 8+ en cual7uier momento al estar conectado al bus de datos Cuando actCa como temporizador se car&a con el $alor de los impulsos 7ue se 7uiere temporizar> pero e<presados en complemento a (D as%> al lle&ar al nCmero de impulsos deseado se desborda 1 acti$a el se=alizador !/IF 1,o se produce la interrupcin /tro temporizador importante es el perro (uardiAn *P#!+ 5e trata de un contador interno de 8 bits 7ue ori&ina un reset cuando se desborda 5u control de tiempos es independiente del !9R8 1 est basado en una red RNC interna> por lo 7ue no necesita nin&Cn componente e<terno 1 continCa 2uncionando incluso cuando el reloj del pic se para durante> por ejemplo> una instruccin 5.""P 5e pro&rama desde el re&istro /P!I/H 5e puede desacti$ar en la palabra de con2i&uracin *ms adelante+ .a temporizacin nominal del P#! es de 18 ms&> pero puede lle&ar a (>se&undos utilizando el llamado di$isor de 2recuencia "ste di$isor puede utilizarse con el P#! o con el !9R8 Con el !9R8 actCa como PreNdi$isor> es decir> los impulsos pasan primero por el di$isor 1 lue&o se aplican al !9R8 Con el P#! actCa como PostN di$isor Bna 2rmula prctica para calcular los tiempos a controlar con el !9R8 puede ser estaE Ialor a car&ar en !9R8 O !emporizacin , 4 W !oscilacin W Ran&o del di$isor 9 /e(istro <P"*<0 (direccin 81)+ la misin principal de este re&istro es controlar el !9R8 1 el di$isor de 2recuencia /cupa la direccin 813 de la memoria de datos *e7ui$ale a la direccin 1 del banco 1+ "n la 2i&ura - 8 se puede $er la estructura de este re&istro

Fi(ura 3282 #istribucin de los bits del re&istro /P!I/H


____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 184

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

.os 'its 1E 1 D 2 o P61E P61 D P62 son los encar&ados de de2inir el $alor con el 7ue actCa el di$isor de 2recuencia "n la tabla - ( se pueden $er los distintos $alores 7ue puede tomar el di$isor P62 8 8 8 8 1 1 1 1 P61 P61 BiFisin del " /1 BiFisin del GB" 8 8 1E( 1E1 8 1 1E4 1E( 1 8 1E8 1E4 1 1 1E16 1E8 8 8 1E-( 1E16 8 1 1E64 1E-( 1 8 1E1(8 1E64 1 1 1E(06 1E1(8 "a'la 3222 Pro&ramacin de los bits P5(> P51 1 P58

"l 'it 3 o P6# *Prescaler assi&nment+ asi&na el di$isor de 2recuencia al P#! *1+ o al !9R8 *8+ "l 'it 4 o /", *!imer 8 si&nal ed&e+ ;ace 7ue el !9R8 se incremente cada 2lanco ascendente *8+ o descendente *1+ "l 'it 5 o /"6 *!imer 8 si&nal source+ a 8 indica 7ue el temporizador utilizar el reloj interno 5i est a 1 utilizar la se=al aplicada en la patilla R68,!8CJI "l 'it 6 o *0",BG *Interrupt ed&e+ de2ine el sentido del 2lanco 7ue pro$ocar una interrupcin a tra$?s de la patilla RG8,IH! Bn 1 acti$a un 2lanco de subida 1 un 8 de bajada "l 'it 5 o /&P> *RG pull up enable+ acti$a las resistencias pullNup *8+ o las desacti$a *1+ 9 ;a pala'ra de con)i(uracin+ se trata de una posicin reser$ada de la memoria de pro&rama *(88)3+ 1 accesible Cnicamente durante la &rabacin del pic

Fi(ura 3282 #istribucin de los bits de la palabra de con2i&uracin .os 'its CP son bits de proteccin de la memoria de cdi&o 6 1 indican 7ue no est prote&ida> a 8 el pro&rama no se puede leer ni sobreescribir 6 8 tambi?n e$ita 7ue pueda accederse a la ""PR/9 de datos> borrndose esta si el bit es modi2icado *si pasa de 8 a 1+ "l 'it PG/", acti$a *con un 8+ el temporizador llamado Kpo:erNupL> 7ue retrasa en )( ms& la puesta en marc;a al conectar la alimentacin> &arantizndose as% la estabilidad de la tensin aplicada "l 'it GB", acti$a *1+ o desacti$a *8+ el perro &uardin .os 'its F<6C19F<6C1 seleccionan el oscilador utilizadoE RC *11+> 35 *18+> F! *81+ 1 .P *88+ .as posiciones de memoria (8883N(88-3 tambi?n estn reser$adas para las llamadas palabras de con2i&uracin *I#+ "n estas solo se usan los 4 bits de menos peso para &rabar nCmeros de serie> cdi&os de identi2icacin> numeraciones secuenciales> etc
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 180

N e-oria ,,P/< de datos+ el pic tiene 64 b1tes de memoria donde se pueden almacenar datos 1 $ariables 7ue interesa 7ue no se pierdan cuando se desconecta la alimentacin al sistema "n el re&istro ""6#R *direccin 4 del banco 8+ se car&a la direccin a acceder de la ""PR/9 de datos "n el re&istro ""#6!6 *direccin 8 del banco 8+ se depositan los datos 7ue se leen o se escriben "l ""C/H1 *direccin 8 del banco 1+ tiene la misin de controlar las operaciones en la ""PR/9 *Fi&ura - 18+

Fi(ura 32112 #istribucin de los bits del re&istro ""C/H1 "l 'it /B se pone a 1 cuando se $a a realizar un ciclo de lectura de la ""PR/9 .ue&o pasa a cero automticamente "l 'it G/ se pone a 1 cuando se $a a realizar un ciclo de escritura de la ""PR/9 .ue&o pasa a cero automticamente "l 'it G/,0 da permiso para escribir cuando est a 1 1 pro;ibe la escritura a 8 "l 'it G/,// se pone a 1 cuando una operacin de escritura ;a terminado prematuramente 1 a 8 cuando ;a 2inalizado correctamente "l 'it ,,*F se pone a 1 si la operacin de escritura se completa con ?<ito 1 a 8 si no se ;a completado Bn ciclo de escritura tiene una duracin de 18 ms& "l re&istro ""C/H( no est implementado 2%sicamente 1 se usa Cnicamente como dispositi$o de se&uridad durante la escritura en la ""PR/9 Para leer la ""PR/9 basta con colocar la direccin a leer en ""6#R 1 poner a 1 el bit R# "l dato le%do estar disponible en el re&istro ""#6!6 Para escribir en la ""PR/H se si&ue una secuencia de instrucciones en las 7ue inter$iene el ""C/H( "ste re&istro solo asume 2unciones de se&uridad> car&ndose con dos $alores concretosE 003 1 663 "l ciclo de escritura comienza car&ando en ""6#R la direccin de la posicin a escribir> en el re&istro ""#6!6 el $alor a &rabar 1 acti$ado el bit PR 6l acabar la escritura> el bit PR se pone a 8 automticamente 1 el se=alizador ""IF a 1 *;abr 7ue ponerlo a 8 para $ol$er a escribir+ Para $eri2icar la correcta escritura> se resta el $alor contenido en ""#6!6 con el dato escrito 1 se comprueba 7ue el bit U pase a $aler 1 4. Programacin: .a pro&ramacin en serie del pic re7uiere 0 l%neas> dos de las cuales se destinan a soportar el reloj de la transmisin *RG6+ 1 los bits de datos serie *RG)+> mientras 7ue las otras tres soportan Idd> tierra 1 la tensin de pro&ramacin "l pic pasa al modo de pro&ramacin,$eri2icacin poniendo a ni$el bajo las l%neas RG6 1 RG) 1 aplicando la tensin de pro&ramacin Ipp *1(I R 14I+ 6 partir de ese momento por RG6 se transmiten los impulsos de reloj 1 por RG) los bits de datos

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 186

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 4212 "s7uema de cone<ionado de un 16F84 para su &rabacin del pro&rama en serie

5. Instrucciones del pic: Como 1a se ;a $isto> los pic responden a la ar7uitectura RI5C "sta ar7uitectura contiene pocas instrucciones *-0 en nuestro caso+ simples 1 rpidas *la ma1or%a se ejecutan en un ciclo de instruccin+D las instrucciones son orto&onales *las instrucciones pueden usar cual7uier operando+ 1 tienen una lon&itud constante *14 bits+ "n la tabla 0 1> podemos $er las -0 instrucciones di2erentes 7ue se pueden usar en la pro&ramacin del pic 16F84 "n la columna de sinta<is aparecen las si&uientes letrasE )+ es el re&istro de la direccin *) bits+ d+ si $ale 1> el resultado de la instruccin se almacena en 2 5i $ale 8> $a al acumulador *P+ '+ indica el numero de un bit dentro de un re&istro H+ es un $alor inmediato *8 bits+ I+ indica 7ue es un $alor indeterminado

"n las Cltimas dos columnas> se indica el 2ormato de la instruccin *14 bits+ 1 los se=alizadores 7ue acti$a esta *Gits+ Para localizar mejor las instrucciones> se ;a separado la tabla para distribuir las instrucciones se&Cn su 2uncin *si manejan bits> re&istros> etc+ .a columna C indican la duracin en ciclos de instruccin *en nuestro caso un ciclo dura 1 microse&undo+ 7ue tarda en ejecutarse una instruccin

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 18)

*06"/>CC*<0,6 J>,
SI !A"IS #PERA$I%

#0,K#0 /,G*6"/<6
$ &#R'A!# (14 )its* +its

#BBGF )E d #0BGF )E d C;/F ) C;/G C< F )E d B,CF )E d *0CF )E d *</GF )E d <:F )E d <:GF ) 0<P /;F )E d //F )E d 6>&GF )E d 6G#PF )E d L</GF )E d
SI !A"IS

PM2 P 6H# 2 Gorra 2 Gorra P In$ierte 2 #ecrementa 2 Incrementa 2 P /R 2 9ue$e 2 9ue$e P 1 2 Ho operacin Rota 2 a la iz7uierda Rota 2 a la derec;a FRP Intercambia bits P F/R 2 *06"/>CC*<0,6 J>,
#PERA$I%

1 88 8111 d222 2222 C>#C>U 1 88 8181 d222 2222 U 1 88 8881 1222 2222 U 1 88 8881 8<<< <<<< U 1 88 1881 d222 2222 U 1 88 8811 d222 2222 U 1 88 1818 d222 2222 U 1 88 8188 d222 2222 U 1 88 1888 d222 2222 U 1 88 8888 1222 2222 1 88 8888 8<<8 8888 1 88 1181 d222 2222 C 1 88 1188 d222 2222 C 1 88 8818 d222 2222 C>#C>U 1 88 1118 d222 2222 1 88 8118 d222 2222 U #0,K#0 &*"6
$ &#R'A!# (14 )its* +its

&CF )E ' &6F )E '


SI !A"IS

Gorra bit b de 2 1 81 88bb b222 2222 Pone a 1 bit b de 2 1 81 81bb b222 2222 *06"/>CC*<0,6 B, &/*0C<
#PERA$I% $ &#R'A!# (14 )its* +its

&"F6C )E d "<plora bit d de 2 1 salta si es 8 1>( 81 18bb b222 2222 &"F66 )E d "<plora bit d de 2 1 salta si es 1 1>( 81 11bb b222 2222 B,CF6C )E d #ecrementa 2 1 si es 8 salta 1>( 88 1811 d222 2222 *0CF6C )E d Incrementa 2 1 si es 1 salta 1>( 88 1111 d222 2222 *06"/>CC*<0,6 J>, #0,K#0 <P,/#0B<6 *0 ,B*#"<6
SI !A"IS #PERA$I% $ &#R'A!# (14 )its* +its

#BB;G H #0B;G H *</;G H <:;G H 6>&;G H L</;G H


SI !A"IS

PM@ 1 11 111< @@@@ @@@@ C>#C>U P 6H# @ 1 11 1881 @@@@ @@@@ U P /R @ 1 11 1888 @@@@ @@@@ U 9ue$e a P el $alor @ 1 11 88<< @@@@ @@@@ @RP 1 11 118< @@@@ @@@@ C>#C>U P F/R @ 1 11 1818 @@@@ @@@@ *06"/>CC*<0,6 B, C<0"/<; M ,6P,C*#;,6
#PERA$I% $ &#R'A!# (14 )its* +its

C#;; H C;/GB" G<"< H /,"F*, /,";G H /,">/0 6;,,P

.lamada a subrutina Gorra o re2resca el perro &uardin 5alto incondicional a @ Retorno de interrupcin Retorno de subrutina 1 PO@ Retorno de subrutina Pasa al modo de reposo

( 1 ( ( ( ( 1

18 8@@@ @@@@ @@@@ 88 8888 8118 8188 18 1@@@ @@@@ @@@@ 88 8888 8888 1881 11 81<< @@@@ @@@@ 88 8888 8888 1888 88 8888 8118 8811

!/>P#

!/>P#

"a'la 5212 Sue&o de instrucciones del PIC16F84


____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 188

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Por Cltimo $amos ;a $er ms detenidamente el 2uncionamiento de las instrucciones representadas en la tabla anterior 9 #BB;G H+ a=ade el contenido de P al literal @ 1 almacena el resultado en P "sta instruccin acti$a los bits C> #C 1 U del re&istro de estado 5e ejecuta en un ciclo de instruccin *todas se ejecutan en el mismo tiempo a menos 7ue se especi2i7ue otro $alor+ 9 #BBGF )E d+ a=ade el contenido de P al de 2> 1 almacena el resultado en P si dO8> 1 en 2 si dO1 6cti$a los mismos se=alizadores 7ue la anterior 9 #0B;G H+ e2ectCa un 6H# l&ico entre el contenido de P 1 el literal @> 1 almacena el resultado en P 5i el resultado es nulo> acti$a el bit U 9 #0BGF )E d+ e2ectCa un 6H# l&ico entre el contenido de P 1 el de 2 1 coloca el resultado en P *dO8+ o en 2 *dO1+ 9 &CF )E'+ pone a cero el bit nCmero b de 2 9 &6F )E'+ pone a uno el bit nCmero b de 2 9 &"F6C )E d+ si el bit nCmero b de 2 es nulo> la instruccin 7ue si&ue a ?sta se i&nora 1 se trata como un nop "n este caso *solo en este caso+> la instruccin precisa de dos ciclos para ejecutarse 9 &"F6C )E d+ si el bit nCmero b de 2 es 1> la instruccin 7ue si&ue a ?sta se i&nora 1 se trata como un nop "n este caso *solo en este caso+> la instruccin precisa de dos ciclos para ejecutarse 9 C#;; H+ sal$a&uarda la direccin de $uelta en la pila 1 despu?s llama a la subrutina situada en la direccin car&ada en el PC .os pasos 7ue si&ue para su ejecucin sonE PC M 1 pila> @ PC *8 R 18+> PC.6!3 *->4+ PC *11>1(+ 9 C;/F )+ pone el contenido de 2 a cero 1 acti$a el bit U 9 C;/G+ pone el re&istro P a cero 1 acti$a el bit U N C;/GB"+ pone a cero el re&istro contador del temporizador :atc;do& *P#!+> as% como el predi$isor Pone a 1 los bits !/ 1 P# 9 C< F )E d+ ;ace el complementario de 2 bit a bit "l resultado se almacena de nue$o en 2 si dO1 1 en P si dO8 *en este caso> 2 no $ar%a+ 5i el resultado es nulo> acti$a U 9 B,CF )E d+ decrementa el contenido de 2 en una unidad "l resultado lo almacena de nue$o en 2 *dO1+ o en P *dO8+> no $ariando 2 en este Cltimo caso !ambi?n acti$a U si el resultado es nulo
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 184

9 B,CF6C )E d+ decrementa el contenido de 2 en una unidad "l resultado se almacena se&Cn el $alor de d 5i el resultado es nulo> se i&nora la si&uiente instruccin 1> en ese caso> esta instruccin dura dos ciclos 9 G<"< H+ llama a la subrutina situada en la direccin car&ada en el PC .a ejecucin de la instruccin ser%aE @ PC *8N18+> PC.6!3 *->4+ PC *11>1(+ 9 *0CF )E d+ incrementa el contenido de 2 en una unidad "l resultado se almacena de nue$o en 2 o P *en este caso 2 no $ar%a+ 6cti$a U si el resultado es nulo 9 *0CF6C )E d+ incrementa el contenido de 2 en una unidad "l resultado se almacena en 2 *dO1+ o P *dO8 1 2 no $ar%a+ 5i el resultado es nulo> se i&nora la si&uiente instruccin 1> en este caso> esta instruccin dura dos ciclos 9 *</;G H+ e2ectCa un /R l&ico inclusi$o entre el contenido de P 1 el literal @> 1 almacena el resultado en P 5i la operacin da cero> se acti$a el bit U 9 *</GF )E d+ e2ectCa un /R l&ico inclusi$o entre el contenido de P 1 el contenido de 2> 1 almacena el resultado en P *dO8+ o en 2 5i la operacin da cero> se acti$a el bit U 9 <:F )E d+ desplaza el contenido de 2 a 2 si dO1 a P si dO8 "l desplazamiento de 2 a 2 permite comprobar el contenido de 2 con respecto a cero> 1a 7ue esta instruccin actCa sobre el bit U 9 9 <:;G H+ car&a P con el literal @ <:GF )+ car&a 2 con el contenido de P

9 0<P+ slo consume tiempo de m7uina> un ciclo en este caso 9 /,"F*,+ car&a el PC con el $alor 7ue se encuentra en la parte superior de la pila> ase&urando as% la $uelta de la interrupcin Pone a 1 el bit 'I" con el 2in de autorizar de nue$o 7ue se ten&an en cuenta las interrupciones 9 /,";G H+ car&a P con el literal @> 1 despu?s car&a el PC con el $alor 7ue se encuentra en la parte superior de la pila> e2ectuando as% un retorno de subrutina 9 /,">/0+ car&a el PC con el $alor 7ue se encuentra en la parte superior de la pila> e2ectuando as% una $uelta de subrutina "s como la anterior pero simpli2icada 9 /;F )E d+ rotacin de un bit a la iz7uierda del contenido de 2> pasando por el bit de acarreo C *$er 2i&ura 0 1+ 5i dO1 el resultado se almacena en 2> si es 8 se almacena en P

Fi(ura 521 #esplazamiento a la iz7uierda


____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 118

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

N //F )E d+ rotacin de un bit a la derec;a del contenido de 2> pasando por el bit de acarreo C *es como en la 2i&ura 0 1 pero con las 2lec;as ;acia la derec;a+ 5i dO1 el resultado se almacena en 2> si es 8 se almacena en P 9 6>&;G H+ sustrae el contenido de P del literal @ *@ R P+ 1 almacena el resultado en P .a sustraccin se realiza en complemento a dos 9 6>&GF )E d+ sustrae el contenido de P del contenido de 2 *2 R P+ 1 almacena el resultado en P o 2 *se&Cn $alor de d+ .a sustraccin se realiza en complemento a ( !anto esta como la anterior acti$an los bits C> #C> 1 U se&Cn el caso 9 6G#PF )E d+ intercambia los cuatro bits de ma1or peso con los cuatro de menor peso de 2 1 almacena el resultado en 2 o P *se&Cn d+ 9 L</;G H+ e2ectCa un /R l&ico e<clusi$o entre el contenido de P 1 el literal @> 1 almacena el resultado en P 9 L</;G )E d+ e2ectCa un /R l&ico e<clusi$o entre el contenido de P 1 el contenido de 2> 1 almacena el resultado en 2 o P *se&Cn d+ !anto esta como la anterior acti$a el bit U si se da el caso 9 6;,,P+ pone el circuito en modo 5.""P 1 para el oscilador "l procesador 7ueda con&elado> no ejecutando instrucciones 1 manteniendo el mismo $alor en la puertas de ",5 Pone a cero el P#! *aun7ue si&ue 2uncionando+> el predi$isor 1 P#D tambi?n pone a 1 el bit !/ Para 7ue el micro sal&a del modo 5.""P> se tiene 7ue dar una de estas situacionesE 7ue la patilla 9C.R se acti$e e<ternamente *reset+> 7ue se desborde el P#!*en caso de 7ue estu$iera acti$ado al entrar en el modo reposo+ 1 7ue se de una interrupcin *como !9R8 est desacti$ado> solo podr producirse una de los otros tipos+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 111

Cap%tulo 0

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 11(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 11-

Gua del -icropic "rainer

"l sistema pic trainer consiste en un e7uipo completo para la e$aluacin para aplicaciones basadas en los microcontroladores PIC de &ama media #ispone de una serie de peri2?ricos bsicos de ",5 con los 7ue poder $eri2icar el 2uncionamiento de una aplicacin> as% como la circuiter%a necesaria para la &rabacin de todos los modelos del PIC de &ama media de 18 1 (8 patillas

1. Arquitectura del PI$ !rainer: "n la 2i&ura 6 podemos $er el aspecto e<terno de la placa "n ella aparecen representados los elementos ms importantes mediante las si&uientes notasE *1+E dos zcalos para insertar cual7uier microcontrolador de &ama media tanto de 18 *abajo+ como de (8 patillas*arriba+ *(+E Cristal de cuarzo junto con dos condensadores Hos proporciona la 2recuencia de trabajo de 4 93z *-+E Pulsador 7ue &enera un reset en el PIC *4+E 0 conmutadores correspondientes a 0 entradas di&itales *0+E 4 potencimetros correspondientes a las 4 entradas anal&icas *6+E Sumpers *S8+ para seleccin de entradas anal&icas *jumpers arriba+> di&itales *abajo+ o para desacti$ar las entradas al puerto 6 *)+E Conector de e<pansin PICNGB5 *8+E Garra de leds conectada a la puerta G 6rriba est su pac@ de resistencias *4+E #ispla1 ) se&mentos conectado a puerta G *18+E Sumpers *S0> S6> S)+ para la acti$acin del displa1> los leds 1 el .C# *11+E 9dulo de $isualizacin .C# *1(+E Potencimetro de ajuste*P1+ para el .C# *1-+E Conector #G(0 para cone<in con el canal paralelo de cual7uier PC *14+E .ed *#0+ 7ue indica la presencia de la tensin de pro&ramacin *Ipp+ *10+E Condensadores *C1 1 C(+ 1 puente recti2icador *#1+ para trans2ormar la tensin alterna *1(I6C+ en continua *el trans2ormador se conecta por arriba+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 114

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura #2 6specto e<terior del pic trainer "n el apartado (> aparece la 2i&ura C correspondiente al PCG de la placaD en ella se $en los distintos diodos *#1> #(> +> condensadores> etc a los 7ue se ;ace re2erencia en las e<plicaciones de abajo "n la 2i&ura G aparecen estas re2erencias pero se&Cn su distribucin en el es7uemtico de la placa .as caracter%sticas del pic trainer son las 7ue se e<plican a continuacinE N #li-entacin desde un trans2ormador de 1(I6C conectado a S1 "l circuito de estabilizacin est incluido en la placa 1 nos da la tensin &eneral de M0I *Icc+ 1 la de &rabacin de 1->8I .a tensin alterna proporcionada por el trans2ormador> se recti2ica mediante el puente de diodos #1 1 se 2iltra mediante los condensadores C1 1 C( *obteni?ndose as% una tensin continua sin estabilizar+ .a tensin obtenida se estabiliza a M0I mediante el re&ulador B6 *u6)880+ 1 a M1->8I con el re&ulador u6)81( junto con los tres diodos #(N#4 N 5oporta cual7uier -icrocontrolador de &ama media tanto de 18 como de (8 patillasD esta es la razn de la e<istencia de dos zcalos en la placa *$er 2i&ura 6+ .a 2recuencia de trabajo es de 4 93z> 7ue se puede modi2icar cambiando el cristal de cuarzo 1 los $alores de C6 1 C) N 'eneracin automtica de reset 1 manual> mediante un pulsador de la placa *$er 2i&ura 6+ N Conector de e<pansin P*C9&>6 5e trata de un conector de (6 contactos en el 7ue estn disponibles las se=ales de las puertas ",5 adems de la alimentacin 1 9C.R

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 110

N Posee 5 entradas di(itales implementadas mediante 0 conmutadores *5P(N 5P6+ 1 4 anal(icas $ariables mediante los potencimetros P(NP0 *nos dan una tensin $ariable de 8N0I+ "stn conectados a las l%neas R68NR64 de la puerta 6 .os conmutadores son capaces de introducir ni$eles l&icos 1 1 8 por esas l%neas "stas pueden pro&ramarse para actuar de di2erentes 2ormas *R68NR6- pueden actuar como entradas anal&icas o di&itales 1 R64 como entrada e<terior de pulsos para el timer 8 o como entrada di&ital+ .os jumpers S8*8+NS8*-+ seleccionan indi$idualmente si por R68N R6- se $an ;a introducir entradas di&itales *interruptores 5P(N5P0+> anal&icas *potencimetros P(NP0+ o si se $an a 7uedar desconectadas para usarlas con otros peri2?ricos Con el jumper S4 se selecciona si R64 actCa como entrada di&ital *5P6+> como se=al de reloj *aplicada desde el e<terior mediante conector S(*1++ o si est desconectada N Posee 8 salidas di(itales conectadas a 8 indicadores luminosos tipo ."# 1,o a displa1 ) se&mentos "stn conectadas a la puerta G 1 consisten en una barra de diodos leds luminosos *#8+ 7ue representan el estado l&ico de las se=ales RG8NRG) 1 en un displa1 num?rico de ) se&mentos "stn conectados entre s% en paralelo a la puerta GD tanto los leds como el displa1 disponen de los jumpers S) 1 S0 respecti$amente con los 7ue se les puede desconectar si la aplicacin no los necesita .a barra de leds es de 18> oc;o de los cuales $an a las puertas> uno no se utiliza 1 el d?cimo nos indica la presencia de tensin M0I *Icc /H+ .os leds estn conectados al pac@ de resistencias RP6CJ 1 *8 resistencias de --8 7ue actCan como limitadoras+ .a l%nea RG8 tambi?n puede actuar como entrada de interrupcin IH! *aplicada mediante conector S(*-++ Con el jumper 18 la se=al RG8 se conecta a los leds 1 al displa1 N !iene conectado un mdulo de $isualizacin tipo ;CB *.i7uid Cristal #ispla1+ de 2I16 *dos l%neas de 16 caracteres cada una+ 1 control de contraste mediante potencimetro *P1+ .as 8 l%neas de datos del .C# *#8N#)+ estn conectadas a la puerta GD por ella se aplican los di2erentes cdi&os de control para realizar los distintos e2ectos de $isualizacin en el .C# *en este caso las puertas actCan como salida+D en al&unos casos las puertas G deben actuar como entradas para comprobar el estado interno del .C# 9ediante el jumper S6 acti$amos o desacti$amos el .C# *Ier apartado - para ms in2ormacin+ N Contiene un circuito (ra'ador 7ue nos permite *con el so2t:are de control necesario+ &rabar el PIC insertado en uno de los zcalos *el PIC podr ser &rabado> borrado> desde el mismo zcalo de trabajo+ 9ediante el conector S- se conecta al canal paralelo de cual7uier ordenador personal "l circuito inte&rado B- se encar&a de $eri2icar el ;ard:are del pic trainer 1 la comunicacin entre este 1 el PC .os bits de datos se leen o escriben en serie a tra$?s de RG) 1 son aplicados al puerto paralelo mediante los ampli2icadores B4# 1 B4F .a se=al RG6 *entrada de reloj para sincronizar la lectura,&rabacin+ es &enerada por el so2t:are de control 1 se aplica por el canal paralelo a tra$?s del ampli2icador B4C "l so2t:are tambi?n &enera una se=al 7ue> mediante B4G> se aplica al transistor de conmutacin X1 para 7ue en$%e los 1->8I a la patilla 9C.R,Ipp del picD al mismo tiempo el diodo led #0 se ilumina indicando la presencia de esta tensin Finalmente> a tra$?s de B46> el so2t:are &enera la se=al 9C.R 7ue resetea al micro #urante la lectura,escritura> ;a1 7ue tener desconectados los jumpers S0> S6 1 S) para 7ue no se altere la in2ormacin le%da o &rabada
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 116

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 11)

Fi(ura &2 "s7uema el?ctrico del PIC !rainer 2. $omponentes del PI$ !rainer: "l PIC !rainer est montado sobre una placa de circuito impreso tama=o "urocard de 188<168 de doble cara "n la 2i&ura C se presenta la disposicin 1 orientacin de los componentes sobre la placa de circuito impreso

Fi(ura C2 #isposicin de componentes en la placa "n la tabla 6 se presentan los $alores de los distintos componentes utilizados en la placa *$er 2i&ura C+ C*/C>*"<6 *0",G/#B<6 B1 B( BB4 B0 B6 B*<B<6

PIC de 18 patillas #1 Puente recti2icador de 1Y PIC de (8 patillas #(N#4 #iodos 1H488) Circuito de control #0 #iodo luminoso tipo led rojo 6mpli2icador 5H)48) #6N#) #iodos 1H4148 "stabilizador de tensin *1(I+ )81( #8 Garra de 18 diodos led "stabilizador de tensin *0I+ )880 #4 #ispla1 ) se&mentos ctodo comCn /,6*6",0C*#6 C<0B,06#B</,6 C1NC( C-NC0 C6NC) "lectrol%tico de 188RF , 6-I 188nF ()pF <"/<6

R1 R( R-NR) R4 R18NR14 R10

1J R Z P 188 R Z P 18J R Z P 4J) R Z P 18J R Z P --8 Z P

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 118

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

R16 18J R Z P F1 R1) 188 R Z P 5P1 RP6CJ1 Pac@ de 8 resistencias #I. --8 5P(N6 P1 Resistencia ajustable 18J X1 P(NP0 Resistencias ajustables 1J K> P,/6 S1 S(

Cristal de cuarzo 493z Pulsador de reset Conmutadores de palanca !ransistor PHP -486

Gase de alimentacin para entrada SConector #G(0 mac;o con codo de de corriente alterna bajo per2il para c impreso Gorna de - contactos para circuito S4 Conector (6 contactos *(<1-+> mac;o impreso de paso 0 88 recto "a'la #2 .ista de materiales empleados en el pic trainer

"n la placa tambi?n se ;an utilizado otros materiales como zcalos> cables> tornillos> re2ri&eradores *( para los circuitos de estabilizacin+> ejes de potencimetros> mdulo .C#> "n la tabla G> $emos el resultado obtenido se&Cn la posicin ocupada por los distintos jumpers K> P,/ S0 S6 S) S8*8+ S8*1+ S8*(+ S8*-+ S4 S18 P<6*C*N0 6bierto Cerrado 6bierto Cerrado 6bierto Cerrado 6bierto 6nal&ico #i&ital 6bierto 6nal&ico #i&ital 6bierto 6nal&ico #i&ital 6bierto 6nal&ico #i&ital 6bierto !/CJI 64 6bierto IH! G8 B,6C/*PC*N0 #ispla1 #4 desconectado #ispla1 #4 conectado a la puerta G 9dulo .C# desconectado 9dulo .C# conectado a la puerta G Garra de leds #8 desconectada Garra de leds #8 conectada a la puerta G .%nea R68 sin cone<in .%nea R68 entrada anal&ica 6H8 .%nea R68 entrada di&ital .%nea R61 sin cone<in .%nea R61 entrada anal&ica 6H1 .%nea R61 entrada di&ital .%nea R6( sin cone<in .%nea R6( entrada anal&ica 6H( .%nea R6( entrada di&ital .%nea R6- sin cone<in .%nea R6- entrada anal&ica 6H.%nea R6- entrada di&ital .%nea R64 sin cone<in .%nea R64 entrada de reloj para el !imer 8 .%nea R64 entrada di&ital .%nea RG8 sin cone<in .%nea RG8 entrada de interrupcin e<terna .%nea RG8 salida di&ital

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 114

"a'la &2 Posicin de los jumpers 3. El mdulo de ,isuali-acin .$/: 5e trata de un mdulo microcontrolado capaz de representar ( l%neas de 16 caracteres cada una 6 tra$?s de 8 l%neas de datos se le en$%a el carcter 65CII 7ue se desea $isualizar as% como ciertos cdi&os de control 7ue permiten realizar di2erentes e2ectos de $isualizacin 9ediante estas l%neas> el mdulo de$uel$e in2ormacin sobre su estado interno Contiene otras tres l%neas para controlar el 2lujo de in2ormacin .as se=ales empleadas en el mdulo .C# son las representadas en la tabla C> as% como su numero de pin correspondiente "l inter2ase entre el mdulo 1 el pic trainer se realiza uniendo las l%neas #8N#) del .C# con la puerta G del picD de i&ual 2orma> la se=al R5 *$er tabla C+ se conecta a R68> la se=al R,P se conecta a la R61 1 la se=al " a R6( !anto R68 como R6( deben pro&ramarse como salidas> mientras 7ue R61 ser entrada o salida> se&Cn si leemos o escribimos P*0 0O 1 ( 4 0 6 ) R 14 6 &<;< Iss Idd Io R5 R,P " #8 R #) B,6C/*PC*N0 Patilla de tierra de alimentacin Patilla de alimentacin de M0I Patilla de contraste del cristal l%7uido R5O8 5eleccin del re&istro de control o R5O1 de datos R,PO8 el .C# es escrito 1 R,PO1 es le%do "O8 mdulo desconectado o "O1 conectado Gus de datos GiNdireccional "a'la C2 Pines del 9dulo .C#

"l jue&o de instrucciones permite con2i&urar el .C# se&Cn los e2ectos 7ue 7ueremos "n la tabla # $emos los $alores 7ue toman las l%neas para darnos una estas instruccionesE /6 /.G 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 8 1 1 5 I,# B&4 B&3 B&2 B&1 B&1 *06"/>CC*N0 8 8 8 8 1 Clear displa1 8 8 8 1 F 3ome 8 8 1 I,# 5 "ntr1 mode set 8 1 # C G #ispla1 /H,/FF 1 5,C R,. F F Cur or #is s;i2t #. H F F F 5et #ireccin de la C' R69 5et address C' R #ireccin de la ## R69 5et address ## R #ireccin de la C' R69 o ## R69 Read bus1 2la& Cdi&o 65CII o b1te del carcter &r2ico Prite data to Ram Cdi&o 65CII o b1te del carcter &r2ico Read data de Ram #&/,:*#">/#6 , P;,#B#6 5i es 1 desplaza la $isualizacin al escribir un dato 5i es 8 modo normal 5i es 1 el cursor se $a incrementando> si es 8 decrementa B&5 8 8 8 8 8 8 8 1 GF B&6 8 8 8 8 8 8 1 B&5 8 8 8 8 8 1

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1(8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

5,C R,. GF #. H F G C # F

5i es 1 desplaza el displa1> si es 8 mue$e el cursor 5i es 1 desplazamiento a la derec;a> si es 8 a la iz7uierda 5i es 1 el mdulo est ocupado> si es 8 est disponible 5i es 1 el bus de datos es de 8 bits> si es 8 ser de 4 bits 5i es 1 el .C# usa las dos l%neas> si es 8 usa una 5i es 1 el carcter es de 0<18 puntos> si es 8 es de 0<) 5i es 1 el cursor parpadea 5i es 1 el cursor est acti$ado 5i es 1 el displa1 est conectado Ialor indeterminado "a'la B2 Sue&o de instrucciones del .C# 1 descripcin de palabras utilizadas

6 continuacin $amos a e<plicar bre$emente el uso de cada una de las instrucciones representadas en la tabla anterior 9 Clear displaD+ borra el mdulo .C# 1 coloca el cursor en la primera posicin *direccin 8+ Pone el bit I,# *$er tabla #+ a 1 por de2ecto 9 3o-e+ coloca el cursor en la posicin inicio 1 ;ace 7ue el displa1 comience a desplazarse desde la posicin ori&inal !anto esta instruccin como la anterior> tardan 1 64 ms& en ejecutarse> al contrario 7ue todas las dems 7ue tardan 48 s& 9 ,ntrD -ode set+ establece la direccin de mo$imiento del cursor 1 espec%2ica si la $isualizacin se $a desplazando a la si&uiente posicin de la pantalla o no 9 BisplaD <0.<FF control+ acti$a o desacti$a poniendo en /H,/FF tanto el displa1 como el cursor 1 si este debe o no parpadear 9 Cursor or displaD sPi)t+ mue$e el cursor 1 desplaza el displa1 sin cambiar el contenido de la memoria de datos de $isualizacin ## R69 9 6et+ establece el tama=o de inter2ase con el bus de datos> nCmero de l%neas del displa1 1 tipo de carcter N 6et tPe CG /# address+ el .C#> adems de tener de2inidos todo el conjunto de caracteres 65CII> permite de2inir 4 u 8 caracteres &r2icos .a composicin de estos caracteres se $a &uardando en una memoria llamada C' R69 con capacidad para 64 b1tes Cada carcter de2inido se compone de 16 u 6 b1tes 7ue se almacenan en sucesi$as posiciones de la C' R69 9ediante esta instruccin se establece la direccin de memoria C' R69 a partir de la cual se irn almacenando los b1tes 7ue de2inen un carcter &r2ico 9 6et tPe BB /# address+ los caracteres o &r2icos 7ue se $an $isualizando> se $an almacenando pre$iamente en una memoria llamada ## R69 para de a7u% pasar a pantalla 9ediante esta instruccin se establece la direccin de memoria ## R69 a partir de la cual irn almacenando los datos a $isualizar .as direcciones de la 88; a la 8F; corresponden a los 16 caracteres de la primera l%nea del .C# 1 de la C8; a la CF; al se&undo
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1(1

N /ead 'usD )la(Qaddress+ esta instruccin in2orma del estado del 2la& GB5[ adems de proporcionar el $alor del contador de direcciones de la C' o ## R69 *se&Cn la Cltima 7ue se ;a1a empleado+ "l 2la& GB5[ indica si se est ejecutando una instruccin *mdulo ocupado+ o no 9 Grite data to CG or BB /# + escribe en la memoria ## R69 los datos 7ue se 7uieren presentar en pantalla I&ualmente se escribe en la memoria C' R69 los di2erentes b1tes 7ue permiten con2eccionar caracteres &r2icos "l escribir en una u otra depende de si se ;a usado antes la instruccin de direccionamiento ## o C' R69 9 /ead data )ro- CG or BB /# + i&ual 7ue la anterior pero le1endo "n la 2i&ura # se muestran todos los caracteres &r2icos disponibles para el .C# Por ejemplo> para 7ue sal&a la K6L> tendremos 7ue introducir por las l%neas de datos el cdi&o 41; *$er 2i&ura #+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1((

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura B2 Sue&o de caracteres 65CII del mdulo .C# .as posiciones marcadas como C' R69 *1N8+ corresponden a los caracteres &r2icos de2inidos por el usuario "n la tabla " se muestra un ejemplo de con2i&uracin del carcter K6L "n este caso se ;a usado un carcter 0<) 7ue necesita 8 octetos en la C' R69 para ser de2inido *si 2uera 0<18 necesitar%a 16+ .os octetos son introducidos en las 8 primeras posiciones de la C' R69 *si 2uera 0<18 ser%an 16+ Cada bit de cada octeto 7ue $al&a 1 implica 7ue su correspondiente pi<el se acti$e en el .C# 5i es el primer carcter creado de la C' R69> se seleccionar aplicando el cdi&o 88; en la ## R69 como si 2uera cual7uier otro cdi&o 65CII 5i si&ui?ramos creando caracteres> estos se car&ar%an con las direcciones 81;> 8(;> 8-;> > 8F; de la ## R69 *$er 2i&ura #+ Cdi(o del carActer BB /# ) 6 0 4 - ( 1 8 Bireccin de Patrones del carActer la CG /# CG /# 0 4 - ( 1 8 ) 6 0 4 - ( 1 8 8 8 1 1 1 1 8 8 1 1 8 8 8 8 1 8 1 8 8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 8 8 1 8 8 8 1 8 1 1 8 8 8 1 1 8 1 8 8 8 1 1 1 8 8 8 8 "a'la ,2 'eneracin del carcter &r2ico K6L

8 1 1 1 1 1 1 1 8

"l mdulo .C# ejecuta automticamente la si&uiente secuencia de inicio interna en el instante de aplicarle la tensin de alimentacin *esta tiene estabilizarse de 8 (I ;asta los 4 0I en un tiempo comprendido entre 8 1 ms& 1 18 ms&D i&ualmente el tiempo de descone<in debe ser como m%nimo de 1 ms& antes de $ol$er a conectar+E 9 Clear displaD+ el 2la& GB5[ se mantiene a 1 durante 10 ms& ;asta 7ue 2inaliza la inicializacin 9 9 9 9 6et+ bus de datosO8 1 re&lones del displa1O1 BisplaD <0.<FF controlE displa1 /FF> cursor /FF 1 parpadeo /FF ,ntrD -ode setE incremento del cursor 1 modo normal del displa1 5e selecciona la pri-era posicin de la ## R69

5i no se satis2acen las condiciones de alimentacin>la secuencia de inicializacin ;abr%a 7ue realizarla por so2t:are

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1(-

Para terminar> en la tabla F se presentan los tiempos de las se=ales recomendados para el mdulo .C# utilizado en la placa "n la 2i&ura " se presenta el dia&rama de tiempos *con los tiempos representados en la tabla F+ para escritura o lectura

Fi(ura ,2 #ia&rama de tiempos para la lectura,escritura

P#/@ ,"/< "nable c1cle time "nable pulse Pidt;

6 &<;< "*, P< (ns() tC *min+ 1888 tP *min+ 408 t. *min+ 408 " Raise time tr *ma<+ (0 " Fall !ime t2 *ma<+ (0 5etNup time tG *min+ 148 #ata setNup time tl *min+ 140 #ata dela1 time t# *ma<+ -(8 6ddress ;old time t6 *ma<+ 18 3old time t3 *min+ 18 t/ *min+ (8 "a'la F2 !iempos recomendados

4. So0t1are recomendado: "l so2t:are recomendado para la pro&ramacin de los pic> es el P#6 1 el P* ,9"/2 .os pasos a se&uir a la ;ora de realizar 1 &rabar un pro&rama en el pic son los 7ue si&uenE N "n primer lu&ar> se escribe el pro&rama utilizando cual7uier editor de te<to con la particularidad de ser &rabado con e<tensin 659 "l editor de msdos nos puede ser$ir para la escritura del pro&rama

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1(4

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

N !ras ello> se compila el pro&rama utilizando el arc;i$o 9P659 "F" "l pro&rama Cnicamente nos pide la ubicacin e<acta del 2ic;ero a compilarD tras seleccionar los 2ic;eros deseados a la salida *arc;i$o "RR> arc;i$o .I5!> + 1 el tipo de pic se pulsa F18 1 se obtiene el arc;i$o compilado con e<tensin 3"F 5i el pro&rama tiene errores en la compilacin> estos aparecen en el arc;i$o "RR *si se ;a seleccionado su salida+ /tro 2ic;ero de inter?s es el .5!> el cual contiene el listado completo de la compilacin *tanto este como el "RR estn seleccionados por de2ecto+ N Por Cltimo 7ueda car&ar el arc;i$o PIC9"N!R "F" "l pro&rama 2unciona con $entanas 1 es mu1 simpleD a la derec;a se seleccionan las distintas opciones de pro&ramacin *tipo de pic> tipo de oscilador> + 1 a la iz7uierda nos aparece el menC para abrir el arc;i$o *con e<tensin 3"F+ 1 pro&ramarloD desde este menC de la iz7uierda> tambi?n podemos leer el pic> borrarlo 1 $eri2icarlo 9ediante mensajes el pro&rama nos in2ormar de cmo ;a ido la pro&ramacin

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1(0

Cap%tulo 6

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1(6

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1()

Gua del -icropic "rainer Plus

"l pic trainer plus es un e7uipo 7ue conectado al pic trainer permite ampliar 1 e<perimentar prcticamente con los recursos ms a$anzados 1 ms interesantes 7ue soportan los pic "n esta &u%a se e<plican Cnicamente las partes del pic trainer plus 7ue se utilizan en las prcticas realizadas .as partes no utilizadas en dic;as prcticas solo nombran 1 describen mu1 bre$emente Para ms in2ormacin sobre estas partes consultar el manual del pic trainer plus 7ue proporciona la empresa 9icros1stems "n&ineerin& 1. Arquitectura del PI$ !rainer plus: "n la 2i&ura F podemos $er el aspecto e<terno de la placa "n ella aparecen representados los elementos ms importantes mediante las si&uientes notasE *1+E Conector de e<pansin PICNGB5 *(+E !eclado ;e<adecimal 4<4 *-+E Conector #G4 mac;o para cone<in serie R5(-( Susto debajo de ?l est el con$ertidor 96F(-( *4+E #ispla1 de 4 d%&itos de ) se&mentos *5661864+ *0+E 8 l%neas de ",5 di&itales proporcionadas por el dispositi$o PCF80)4 *6+E Con$ertidor anal&icoNdi&ital 1 $ice$ersa *PCF8041+ *)+E Reloj,calendario en tiempo real *PCF808-+ *8+E Gornes de cone<iones al e<terior *8 l%neas de ",5 di&ital> +

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1(8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura F2 6specto e<terior del pic trainer plus "n el apartado ( de esta &u%a> aparece la 2i&ura correspondiente al PCG de la placaD en ella se $en los distintos conectores *CH1> CH(> +> circuitos inte&rados> etc a los 7ue se ;ace re2erencia en las e<plicaciones 7ue se $ern a continuacin "n la 2i&ura J aparecen estas re2erencias pero se&Cn su distribucin en el es7uemtico de la placa .as caracter%sticas del pic trainer plus sonE 9 5e Conecta directamente al conector de e<pansin P*C9&>6 del pic trainer mediante cable plano de (6 ;ilos N .a ali-entacin es Cnica de M0I *Icc+ 1 se toma directamente del PICNGB5 o bien se aplica a tra$?s de los bornes de cone<in e<terior N Posee teclado nu-$rico PeIadeci-al de 4<4 conectado a las l%neas RG8NRG) de la puerta G *$er apartado -+ N Posee canal de co-unicaciones serie /69232 con conector estndar #G4 mac;o *$er apartado 4+ - !iene implementado un inter)ace *RC &estionado por las l%neas RC-NRC4 para los dispositi$os 7ue lo implementan por ;ard:are> o bien mediante las l%neas RG6N RG) *es nuestro caso+ para la &estin por so2t:are 5e selecciona mediante los jumpers S1 1 S( "l bus I\C est 2ormado por dos l%neas> 5#6 *datos+ 1 5C. *reloj+D estn transportan la in2ormacin entre los di2erentes dispositi$os conectados al bus *teclado> reloj> displa1s> con$ertidor 6#C,#6C> 1 las ",5 paralelas+ Cada dispositi$o se identi2ica por una direccin Cnica 1 puede transmitir o recibir dependiendo de la operacin 7ue se $a1a a realizar .os t?rminos ms sencillos 7ue se utilizan en este tipo de bus sonE transmisor *coloca in2ormacin en la l%nea 5#6+> receptor * recibe esa in2ormacin+> master *dispositi$o 7ue inicia la trans2erencia> &enera la se=al de reloj 1 2inaliza la trans2erencia+> sla$e *dispositi$o seleccionado por el master+> multiNmaster *ms de un master puede ;acerse con el control del bus sin corromper la in2ormacin+>1 arbitraje *procedimiento 7ue &arantiza 7ue solo un master se ;a&a car&o del bus+ #ado 7ue este tipo de bus no se ;a utilizado en las prcticas realizadas> no se e<plicar su 2uncionamiento en pro2undidad *para ms in2ormacin $er cap%tulo - del manual de la placa+ - Contiene un displaD de 4 d(itos de ) se&mentos *5661864+ controlado por el dispositi$o I\C 5u cone<in en la placa puede $erse en la 2i&ura ' .as l%neas 5C. 1 5#6 son las l%neas del bus I\C mediante las cuales el master en$%a la in2ormacin a $isualizar sobre los cuatro d%&itos .a direccin I\C del dispositi$o es de ) bits .os 0 bits de ms peso estn establecidos por el 2abricante *81118+ .os dos si&uientes los establece el usuario mediante la tensin 7ue se aplica en la patilla 1 *6#R+E 'H# *88+> -,8 de Icc *81+> 0,8 de Icc *18+ 1 Icc *11+ .a direccin asi&nada por la placa es por tanto 8111811<D el bit < es un 8 o un 1> se&Cn se escriba o se lea Cuando el circuito recibe la in2ormacin a $isualizar sobre los 4 displa1s> realiza un multiple<ado de los mismosD as%> en un primer momento> por las l%neas P1NP8 aparece la in2ormacin a representar en el d%&ito 1 1> por las l%neas P4NP16 las del -D simultneamente> aparece la se=al 9F1 con la 7ue se acti$a el transistor X1 !ras un lapsus de tiempo se repite lo
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1(4

mismo para los d%&itos ( 1 4> acti$ndose a;ora la se=al 9F( 7ue acti$a el transistor X( Para ms in2ormacin sobre el 5661864 $er cap%tulo 0 del manual de la placa

Fi(ura G2 9dulo de $isualizacin de 4 d%&itos N Contiene 4 canales de conFersin anal&icoNdi&ital *6#C+ 1 un di&italN anal&ico *#6C+ proporcionados por el bus I\C PCF8041 *B-+ 5u es7uema electrnico es el mostrado en la 2i&ura 3 .a direccin I\C esta 2ormada por 4 bits de 2abrica *188+ 1 otros - 7ue dependen del estado l&ico de las l%neas 68> 61 1 6( "n el caso de nuestra placa> la direccin es 1881888< "l circuito consiste> por una parte> en un con$ertidor 6#C de 8 bits 1 cuatro canales anal&icos de entrada *las se=ales a con$ertir se aplican por las l%neas 6H8> 6H1>6H( 1 6H- 1 proceden de los bornes e<teriores+D por otra parte dispone de un con$ertido #6C de 8 bits 7ue nos da una tensin de salida en el borne 6/B! .a se=al anal&ica de tierra 1 la de re2erencia se aplican por los bornes 6'H# 1 IR"FD estas tensiones tambi?n se pueden conectar directamente a las de la placa obteni?ndose una resolucin de (8mI,bit en las con$ersiones Para ms in2ormacin sobre el dispositi$o PCF8041 $er el cap%tulo 6 del manual N Posee 8 lneas de ,.6 di(ital proporcionadas por el dispositi$o I\C PCF80)4 *B4+ 5u direccin est 2ormada por los bits 8111 1 el estado l&ico de las puertas 68> 61 1 6( *en nuestro caso es 8111888<+ "l es7uema de cone<iones puede obser$arse en la 2i&ura I "l circuito est compuesto por 8 l%neas 7ue pueden actuar como ",5 se&Cn lean o escriban *P8NP)+D la cone<in a las l%neas se realiza en los bornes de cone<in> pudi?ndose comprobar el estado l&ico de las mismas mediante una 2ila de 8 diodos led *se acti$an por l&ica ne&ati$a+ .a l%nea IH!*acti$ada con un 8+ se puede utilizar como interrupcin al master cuando una l%nea cambia su estado Para ms in2ormacin> $er cap%tulo ) del manual de la placa
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1-8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura 32 "s7uema electrnico del mdulo 6#C,#6C

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1-1

Fi(ura *2 "s7uema electrnico del mdulo ",5 N Por Cltimo> tambi?n posee un reloS.calendario en tiempo real controlado por el dispositi$o I\C PCF808- *B(+ Sunto con las clsicas 2unciones ;orarias> tambi?n realiza 2unciones de alarma 1 temporizacin Contiene (06 posiciones de memoria R69 esttica> de las cuales 16 estn reser$adas a esas 2unciones 7uedando> por tanto (48 posiciones libres para el usuario "n la 2i&ura S se puede $er el cone<ionado del dispositi$o dentro de la placa .a direccin asi&nada es 1818888< .a patilla 1 */5C1+ es la entrada de reloj *la 2recuencia puede ser de 08 3z o la obtenida por el cristal incorporado de -( )68 3z+ .a patilla ) *IH!+ se acti$a con ni$el bajo en caso de alarma o cuando se alcanza una temporizacin predeterminada *puede usarse para pro$ocar interrupciones en el master+ "n nuestra placa> el circuito puede alimentarse mediante Icc o mediante una bater%a de Hi,CdD cuando ten&amos Icc> el circuito se alimenta a tra$?s del diodo #0 1 la bater%a se car&a a tra$?s de #0 1 R16D si ;ubiera un 2allo de alimentacin> el reloj continuar%a 2uncionando con la bater%a *se mantendr%a en ;ora 1 no se perder%an los datos en la R69+ Para ms in2ormacin $er capitulo 4 del manual de la placa

Fi(ura K2 "s7uema electrnico del reloj,calendario M R69

"n la 2i&ura J se presenta el es7uemtico completo del pic trainer plus a 2alta de $er el 2uncionamiento del teclado ;e<adecimal *apartado -+ 1 de la comunicacin serie R5(-( *apartado 4+ Como puede apreciarse> el bus I\C $a conectado mediante las l%neas 5C. 1 5#6 a todos los dispositi$os contenidos en la placa "l teclado 1 la comunicacin serie> son las dos Cnicas aplicaciones 7ue se pueden utilizar sin necesidad de utilizar el bus I\C> dado 7ue ambas tienen jumpers de seleccin para conectarlas directamente al pic trainer

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1-(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

Fi(ura =2 "s7uemtico &eneral del pic trainer plus


____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1--

2. $omponentes del PI$ !rainer plus: "l PIC !rainer est montado sobre una placa de circuito impreso tama=o "urocard de 188<168 de doble cara "n la 2i&ura . se presenta la disposicin 1 orientacin de los componentes sobre la placa de circuito impreso

Fi(ura ;2 #isposicin de componentes en la placa "n la tabla ' se presentan los $alores de los distintos componentes utilizados en la placa *$er 2i&ura .+ C*/C>*"<6 *0",G/#B<6 /,6*6",0C*#6 Controlador de displa1 5661864 R1NR) (J( ZP Reloj,calendario PCF808-P R8NR10 ()8 ZP Con$ertidor 6#,#6 PCF8041 R16 108 ZP ",5 paralelo PCF80)46 R1) 18J ZP Con$ertidor 96F(-( R18 188J ZP B*<B<6 M "/#06*6"</,6 C<0B,06#B</,6 #I'1N4 #ispla1 nodo comCn 56-6N11 C1NC0 188 nF #0 #iodo1H488) C6 ( ) nF #6N#1#iodos .eds C)NC18 (( F X1NX( !ransistores HPH 5C 18) C11 18 pF <"/<6 G6!1 Gater%a recar&able Hi,Cd - 6I F1 Cristal de cuarzo -( )68 CH1 Conector 16 contactos para CH( Conector #G4 mac;o> codo bajo cable plano> mac;o> recto per2il "a'la G2 .ista de materiales empleados en el pic trainer plus B1 B( BB4 B0
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1-4

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

"n la placa tambi?n se ;an utilizado otros materiales como cable plano de (6 ;ilos acabado en ( conectores ;embra> tuercas *m?trica 18+> pines> zcalos> bornes *6 de tres contactos para circuito impreso+> 1 un teclado 4<4 5"C9" modelo "C/ 16(08 86 .a placa dispone tan solo de 4 jumpers *S1NS4+ de ( posiciones cada uno Con ellos se selecciona 7ue se=ales se ;arn car&o del canal serie 1 del bus I\C !odo ello 7ueda re2lejado en la tabla 3 .as casillas (N1 1 (N-> indican 7ue los jumpers estn abiertos o cerrados por esos pines K> P,/6 S1 R S( S- R S4 291 293 B,6C/*PC*N0

6bierto 6bierto Gus I\C desconectado 6bierto Cerrado I\C controlado mediante RC-NRC4 Cerrado 6bierto I\C controlado por RG6NRG) 6bierto 6bierto Canal serie desconectado 6bierto Cerrado !ransmite por RC6 1 recibe por RC) Cerrado 6bierto !ransmite por RG4 1 recibe por RG0 (nuestro caso) "a'la 32 Posiciones de los jumpers

3. El teclado 2e3adecimal: "l es7uema de cone<ionado del teclado se muestra en la 2i&ura 9 9ediante el conector CH1 de (6 contactos se conecta *mediante cable plano+ a la placa pic trainer #e a7u% se obtienen todas las se=ales del pic 7ue ;a1a conectado a la misma

Fi(ura

2 "s7uema electrnico del teclado ;e<adecimal

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1-0

.as 8 l%neas de la puerta G *RG8NRG)+ se conectan directamente al teclado matricial de 4<4 *2ilas < columnas+ .as l%neas RG)NRG4 sern con2i&uradas como salidas para ir acti$ando secuencialmente cada una de las 2ilasD al mismo tiempo las l%neas RG-NRG8 se con2i&uran como entradas 1 son le%das para comprobar si ;a1 al&una tecla pulsada "l teclado ;e<adecimal est conectado a la puerta G 1 su disposicin es la si&uienteE
RG8 RG1 RG( RG] ] ] ] ^ ^ ^ ^ ^NNNNNN^NNNNNN^NNNNNN^NNNNNN^ ^ 1 ^ ( ^ - ^ F ^ ^NNNNNN^NNNNNN^NNNNNN^NNNNNN^ ^ 4 ^ 0 ^ 6 ^ " ^ ^NNNNNN^NNNNNN^NNNNNN^NNNNNN^ ^ ) ^ 8 ^ 4 ^ # ^ ^NNNNNN^NNNNNN^NNNNNN^NNNNNN^ ^ 6 ^ 8 ^ G ^ C ^ ^NNNNNN^NNNNNN^NNNNNN^NNNNNN^

RG4 NN_ RG0 NN_ RG6 NN_ RG) NN_

6s%> la l%nea RG8 est conectada a la columna 1 del teclado> la RG1 a la (> 1 lo mismos con RG4 *a la 2ila 1+> RG0 *a la 2ila (+> Para comprobar si ;a1 al&una tecla pulsada> tendremos 7ue acti$ar las 2ilas una a una 1 comprobar si ;a1 al&una columna acti$ada *esta acti$acin se $er si ;a1 un 8 en al&una l%nea+D por ejemplo> suponiendo acti$ada la C> la 2orma de detectarla esE N 6cti$o RG4 *2ila 1+E si una de las l%neas RG8NRG- esta a 8> esa l%nea tendr una tecla pulsada "n el caso de la KCL> no ;abr%a nin&una pulsada en la 2ila 1 1 el puerto G estar%a 1118 1111 1a 7ue RG8NRG- es todo 1 *no pulsadas+ 1 RG4 est acti$ada por nosotros N 6cti$o RG0*2ila (+ 1 ocurre lo mismo> en el puerto G tendr%amos 1181 1111 Con RG6 tendr%amos 1811 1111 N 6l acti$ar RG)*2ila 4+> nos aparecer%a acti$ado RG- *columna correspondiente a la C+ 1 en el puerto tendr%amos 8111 8111> 7ue ser%a el cdi&o binario correspondiente a la KCL *en ;e<adecimal ser%a ));+ "l so2t:are 7ue pro&ramemos> deber realizar las acti$aciones de RG4NRG) 1 las comprobaciones de RG8NRGComo podemos $er en la 2i&ura 9> las l%neas RG6 1 RG) tambi?n pueden actuar como se=ales 5#6 1 5C. para el inter2ace I\C> aun7ue en las prcticas realizadas no se ;a utilizado este sistema

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1-6

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

4. $anal de comunicacin serie RS232: .a comunicacin serie consiste bsicamente en en$iar datos de un transmisor *#!"+ a un receptor *#C"+ de manera sincronizada "l pic trainer plus posee un conector #G4 mac;o para la comunicacin serie "n la 2i&ura H> se puede $er la distribucin de los pines en este tipo de conector

Fi(ura 02 Conector #G4 ;embra Cada pin del conector> tiene un nCmero asociado 7ue corresponde aE - Pin 1 *#C#+E #etector de Portadora de #atos "s utilizada por el #C" para indicar al #!" 7ue est listo para transmitir datos - Pin ( *R<#+E Recepcin de #atos !ransmite datos del #C" al #!" - Pin - *!<#+E !ransmisin de #atos !ransmite datos del #!" al #C" - Pin 4 *#!R+E !erminal de #atos .isto Para comunicar al #C" 7ue el #!" est encendido 1 listo para 2uncionar - Pin 0 *'H#+E Circuito comCn Punto de re2erencia para todos los $oltajes de la cone<in - Pin 6 *#5R+E #ispositi$o de #atos .isto Comunica al #!" 7ue el #C" est encendido 1 listo para 2uncionar - Pin ) *R!5+E Peticin de "n$%o 5us usos $ar%an ampliamente Ia del #!" al #C" - Pin 8 *C!5+E #ispuesto para "n$iar 5us usos $ar%an ampliamente Ia del #C" al #!" - Pin 4 *RIH'+E Ho se suele utilizar Para realizar un cable serie para dos terminales 7ue puedan mandar 1 recibir datos *ambos+> se usa la con2i&uracin representada en la 2i&ura / "n nuestra prctica> se $an a en$iar datos de una placa receptora *#!"+ a una emisora *#C"+ Para conectar ambas placas> se $a a utilizar el conector #G4 mac;o de ambasD se $a a utilizar un cable serie con conectores #G4 ;embras a ambos lados 1 con solo tres cone<iones internasE el R<# de uno con el !<# del otro 1 al re$?s *el !<# del primero con el R<d del se&undo+ 1 el pin comCn *$er 2i&ura P+

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1-)

Fi(ura <2 Cone<iones para cable serie Para realizar la comunicacin> ;a1 7ue pro&ramar las dos placas de la misma 2orma> es decir> las caracter%sticas de la comunicacin deben ser i&uales para 7ue los datos en$iados sean recibidos sin error "stas caracter%sticas de la comunicacin serie son las 7ue si&uenE N Para cada 'DteE .os dos terminales deben tener pro&ramados el mismo numero de bits a recibir,transmitir .os bits a transmitir pueden ser de ) u 8> debi?ndose pro&ramar tambi?n cual se en$%a primero *el ms o el menos si&ni2icati$o+ 6ntes de comenzar a en$iar los ) u 8 bits> se debe en$iar un bit K1L de inicio> a partir del cual se comienza transmisin en serie de los bits 6l terminar la emisin de los ) u 8 bits> se manda 1 o ( bits de stop *debern ser pro&ramado el mismo numero en ambos terminales+ #e 2orma opcional se puede en$iar un dato de paridad *si el numero de unos del b1te es impar> se en$%a un 1 1 si es par un 8+ para comprobar si ;a1 errores N :elocidad de transmisinE los bits deben ser en$iados 1 recibidos a la misma $elocidad 5i la $elocidad 2uera distinta> el receptor no ;abr%a tomado el bit en curso cuando se mandara el si&uiente *en caso de 7ue su $elocidad sea menor 7ue el transmisor+ .a $elocidad se e<presa en baudios por se&undo *bps+ 1 puede $ariar entre 118 1 14(88 "n nuestro caso esta $elocidad $a ;a ser de 4688 bps N ,l$ctrica-ente> el transmisor pone un K1L cuando la tensin $a de R0I *N-I en el caso del receptor+ a R10I 1 pone un K8L cuando $a de M0I *M-I en el receptor+ a M10I .os ni$eles !!. proporcionados por el pic> son distintos a los usados en la comunicacin serie R5(-(> por ello necesitamos un circuito inte&rado *96F(-(+ 7ue adapte estos ni$eles Como se $e en la 2i&ura X> el 96F(-( *para el caso del terminal transmisor+ con$ierte los ni$eles l&icos !!. presentes en la patilla 11 *dados por el pic+ de transmisin a ni$eles l&icos R5(-( *se obtienen en la patilla 14+ 1 se aplican al conector #G4 para ser transmitidos Para el caso del receptor> la se=al lle&a a la patilla 1- del 96F(-( desde el canal serie con ni$eles R5(-( 1 son con$ertidos a !!.> obteni?ndose estos en la patilla 1( 7ue lle&a al pic de la placa receptora

Fi(ura J2 "s7uema electrnico del canal serie R5 N (-( .as l%neas R< 1 !< son seleccionadas mediante los jumpers S- 1 S4 para 7ue sean conectadas a RC6 1 RC) o a RG4 1 RG0 *nuestro caso+
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 1-8

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

5. So0t1are de control para el 'icro4PI$ !rainer: Para terminar> se comentan al&unas de las rutinas utilizadas para controlar el .C#> el teclado> 1 el canal serie del pic trainer .os arc;i$os descritos a continuacin son los utilizados en las practicas realizadas 1 deben ser pro&ramados en el pro&rama 2uente mediante la directi$a Kinclude` N ;CB2#6 + contiene una serie de sencillas rutinas 7ue permiten controlar el mdulo .C# del pic trainer .as rutinas 7ue contiene son llamadas desde el pro&rama 2uente *no ol$idar usar la directi$a KincludeL en este arc;i$o+ mediante la instruccin KcallL - BP_.C#E con2i&ura los puertos 6 1 G para el control del .C# - .C#_IHIE ejecuta la secuencia de inicializacin del mdulo .C# se&Cn las especi2icaciones $istas en la &u%a de este N .C#_#6!/E en$%a el carcter 65CII contenido en el re&istro P al mdulo .C# .a rutina se encar&a de $eri2icar 7ue el mdulo no est? ocupado *para ello utiliza la rutina .C#_GB5[+ as% como de &enerar las se=ales R,P> R5 1 " del mismo N .C#_R"'E en$%a el cdi&o presente en P al mdulo .C# "ste cdi&o ser uno de los di2erentes cdi&os de control con los 7ue se pueden conse&uir di2erentes e2ectos de $isualizacin sobre el .C# .a rutina $eri2ica el estado del mdulo 1 &enera las se=ales R,#> R5 1 " N "l arc;i$o tambi?n contiene una rutina de retardo de unos 0ms& *.C#_#".6[+ 1 otra 7ue &enera el pulso de enable *.C#_"+ para la inicializacin del .C# ",C;#B<2#6 + contiene una serie de rutinas 7ue permiten controlar el teclado del pic trainer plus 6l i&ual 7ue el anterior debe incluirse en el pro&rama 2uente N Je1_5canE la rutina realiza una e<ploracin del teclado #e$uel$e en la $ariable K!eclaL el cdi&o de la tecla pulsada o bien el cdi&o 8<88 en caso de 7ue no ;ubiera nin&una pulsada N Je1_GC#E con$ierte el cdi&o de la tecla presente en la $ariable K!eclaL en su correspondiente cdi&o GC# *de 8 a F+ 9 /62322#6 + contiene una serie de rutinas 7ue permiten implementar> $%a serie una comunicacin R5(-( .a con2i&uracin pro&ramada en este arc;i$o para la comunicacin esE transmisin de palabras de 8 bits usando ( bits de stop 1 en$iando en primer lu&ar el bit de menos peso .a $elocidad empleada es de 4688 bps 1 la 2recuencia de trabajo de 4 93z N R<#E rutina de recepcin de un carcter "spera recibir un carcter 1 lo deposita en la $ariable KR<dre&L N !<#E rutina de transmisin de un carcter !ransmite el carcter presente en la $ariable K!<dre&L Para estudiar con ma1or pro2undidad las rutinas> leer los comentarios incluidos
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 1-4

en los arc;i$os

Presupuesto

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 148

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 141

Presupuesto

ateriales 9icroPic .ab Plus * Inclu1e micropic trainer> micropic trainer plus> manuales> trans2ormador> cables de cone<in 1 so2t:are + Pic 16F84 Cable serie "otal aterial

Precio 4( 688 ptas

Cantidad (

"otal 80 (88 ptas

4-8 ptas )(8 ptas

( 1

1 868 ptas 6(8 ptas 852681 ptas

ProDectista I ! Industrial "otal proDecto

Ptas . Pora - 888 ptas 0eto 0)- 688 ptas

3oras 16( *2 :2 #2 ( 16 4 ) 41 )84 ptas

"otal 4862111 ptas "otal 6652468 ptas

"<"#; P/,6>P>,6"<+

6652468 ptas2

3888E55

"l presente Presupuesto> asciende a la cantidad de 5"I5CI"H!65 5"5"H!6 [ CIHC/ 9I. CB6!R/CI"H!65 5"5"H!6 [ HB"I" P"5"!65 !R"5 9I. H/I"CI"H!/5 H/I"H!6 [ HB"I" C/H CIHCB"H!6 [ CIHC/ "BR/5

Carta&ena> _______de _______ de _______ "l pro1ectista

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 14(

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 14-

6p?ndice 6

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 144

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 140

Contenido del dis%uete

"l C# adjunto con el pro1ecto contiene * en el directorio adisco + tanto los arc;i$os de prcticas listados en el mismo como los pro&ramas necesarios para la compilacin 1 pro&ramacin de estas prcticas !ras copiar el contenido del directorio adisco en un disco normal de 1>44 se obtiene la si&uiente estructura en el mismoE - "n el directorio ra%z (#+T)> $ienen los pro&ramas correspondientes a la escritura> compilacin 1 pro&ramacin de los pro&ramas en el PIC "stos pro&ramas ;an sido obtenidos de la empresa microc;ip *$er biblio&ra2%a+ 1 de la micropic trainer "l listado de los 2ic;eros contenidos en este directorio esE "#I! C/9E es el editor de 95N#/5 para escribir los pro&ramas 7ue ms tarde sern compilados 1 pro&ramados IH5!6.6R G6!E el arc;i$o copia el contenido del dis7uete al directorio especi2icado *por ejemplo instalar aE cEapic+ o al directorio cEapro1ecto en caso de no especi2icar directorio destino 9P659 C/9E es el compilador de 2ic;eros proporcionado por microc;ip *$er &u%a del 9icroPic !rainer para comprobar su 2uncionamento+ PIC9"N!R "F"E es el pro&ramador para el 9icroPic !rainer proporcionado por la empresa 9icros1stems "n&ineerin& *$er &u%a el 9icroPic !rainer para comprobar su 2uncionamiento+ - "n el directorio T;*&> se ;an &rabado los 2ic;eros incluidos en las prcticasD as% tenemosE .C# 659E Rutinas para el control del .C# empleado en todas las prcticas realizadas P16F84 IHCE #e2inicin de re&istros para el PIC 16F84 empleado en todas las prcticas realizadas
____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 146

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

R5(-( 659E Rutinas para el control de la comunicacin serie empleado en la prctica uno *tanto en la del emisor como en la del receptor+ !"C.6#/ 659E Rutinas para el control del teclado ;e<adecimal empleado en el pro&rama emisor de la prctica uno 1 en la prctica dos - "l directorio aPR6C!1> contiene los 2ic;eros base empleados en la realizacin de la prctica uno "n todos los arc;i$os 659 de este directorio deber estar especi2icada la ruta donde se ;a instalado el directorio anterior *a.IG+ "l contenido del directorio descrito esE "9I5/R 659E es el pro&rama e<plicado en la prctica uno "ditndolo> se pueden $er los comentarios e<plicati$os del mismo as% como modi2icarlo en su caso "9I5/R 3"FE es el anterior arc;i$o 1a compilado 5e pro&rama directamente en el PIC utilizando el PIC9"N!R R"C"P! 659E es el otro pro&rama e<plicado en la prctica uno *para la placa eceptora+ "ditndolo> se pueden $er los comentarios e<plicati$os del mismo as% como modi2icarlo en su caso R"C"P! 3"FE es el anterior arc;i$o 1a compilado 5e pro&rama directamente en el PIC utilizando el PIC9"N!R

- "l directorio aPR6C!(> contiene los 2ic;eros base empleados en la realizacin de la prctica dos "n todos los arc;i$os 659 de este directorio deber estar especi2icada la ruta donde se ;a instalado el directorio anterior *a.IG+ "l contenido del directorio descrito esE 3699IH' 659E es el pro&rama e<plicado en la prctica dos "ditndolo> se pueden $er los comentarios e<plicati$os del mismo as% como modi2icarlo en su caso 3699IH' 3"FE es el anterior arc;i$o 1a compilado 5e pro&rama directamente en el PIC utilizando el PIC9"N!R

HotaE el ensamblado de los pro&ramas 659 ori&ina al&unos mensajes de


____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 14)

K:arnin&sL 7ue no in2lu1en en el correcto 2uncionamiento de los mismos .os mensajes 7ue aparecen son debidos a los cambios de bancos 7ue se ejecutan en los pro&ramas> es decir> el compilador nos a$isa de 7ue en ciertos momentos estamos trabajando en el banco de datos 1

6p?ndice G

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 148

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

_____________________________________________________________________________________ 144

&i'lio(ra)a

1 ( 4 0 6 ) 8 4

U icrocontroladores P*C2 BiseVo prActico de aplicacionesW S 9Y 6n&ulo 1 I&nacio 6n&ulo 9c'ra:3ill> 144) U icrocontroladores P*C2 ;a 6olucin en un CPip2W S 9Y 6n&ulo> " 9art%n> I 6n&ulo "d Paranin2o> 144) U icrocontroladores P*CW C;ristian !a$ernier I!P Paranin2o> 1440 U icrocontroladores P*C2 ;a solucin en un cPipW S 9Y 6n&ulo> " 9art%n 1 I 6n&ulo I!P Parain2o> 144) U,l li'ro del /6232W Soe Campbell "diciones 6na1a multimedia> 5 6 > 1488 U<r(ani7acin D ar%uitectura de co-putadoresW Pilliam 5tallin&s Prentice 3all> 1448 U anual de usuario de icro!P*C "rainerW 9icros1stems "n&ineerin& 'ral Conc;a -4N8T Gilbao 4881( U anual de usuario de icro!P*C "rainer PlusW 9icros1stems "n&ineerin& 'ral Conc;a -4N8T Gilbao 4881( UP*C 16F8L icrocontroller data 'ooHW ;ttpE,,::: microc;ip com

18 U;a'oratorio ,lectrnicoW Curso F b ' "ditores> 5 6 > 1444

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84

__ 108

I ! I "specialidad "lectrnica Industrial

#a$id Rodr%&uez 'onzlez ___________

11 B*/,CC*<0,6 B, *0",/0,"+ icrocPip+ ;ttpE,,::: microc;ip com ;ttpE,,::: arra@is es,cms1sen&

icrosDste-s ,n(ineerin(+ ParallaI+ ,lectrnica+ Pro(ra-ador+ Pic+

;ttpE,,::: paralla<inc com ;ttpE,,e1a s:in net ;ttpE,,::: lo@e@ieras es,personales,m&sanz,pro&rama ;tm ;ttp,,,members es tripod de,cIn2o",in2op ;tm

____________________________________________________________________________________ Realizacin de un conjunto de prcticas basadas en el microcontrolador PIC16F84