Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
RESUMEN
En este practico estudiamos la implementacin de un cronometro mediante programacin realizada en lenguaje Assembler sobre el PIC 16 !"A# compilado en MP$A% !&1# mediante " displa's de siete segmentos (nodo com)n con pulsador de stop*reset&
Cronometro P(gina
+ ,igitales III
INTRODUCCION
A continuacin se mostrara como se realizara el cronometro con pulsador de stop*reset# para ello se emplear(n " displa's de siete segmentos para cent.simas# d.cimas# unidades ' decenas de segundos respecti/amente El problema planteado es 0ue al encender el cronometro se /isualicen los displa's en cero# luego al presionar por primera /ez 0ue comience a contar# al presionar por segunda /ez se detenga la cuenta mostrando est(ticamente la misma lle/ada a cabo# ' 0ue al pulsar nue/amente se /uel/a a cero ' arran0ue El programa se logra bajo la utilizacin b(sicamente de interrupciones para realizar el mismo# la programacin en MP$A% !&1# en lenguaje Assembler # la grabacin del programa mediante Pic1it- ' la implementacin del mismo sobre el PIC 16 !"A&
Cronometro P(gina
+ ,igitales III
DIAGRAMA EN BLOQUE
Inicializacin de /ariables Inicio
Interrupcin
R%0
TMR0
%orro displa's
Cronometro P(gina
+ ,igitales III
"
IMPLEMENTACION En un principio# se muestran todos los displa's en cero# al presionar el botn por primera /ez comienza a contar# al presionar por segunda /ez se detiene 0uedando el numero al 0ue se llego# luego se presiona ' se pone en cero ' cuenta# as: continua sucesi/amente# para ello el programa se basa en las interrupciones ' el botn se logra con interrupcin por R%4& $a multiple8acin de los " displa's se ;ar( por puerto A 0ue tiene < pines# con3igurado con todos sus pines como salidas& $a in3ormacin de tabla 0ue 3orma los n)meros en los displa's de siete segmentos se ;ar( por puerto % 0ue tiene ! pines# 0ue con3iguraremos de = salidas ' una de entrada 0ue es R%0 Al iniciar el programa de3inimos de los distintos registros# cuatro de ellos son cent# dec# seg ' seg - 0ue son los utilizados para almacenar los n)meros del cronometro# cent representa a las cent.simas# dec representa a las d.cimas# seg a los segundos ' seg- a las decenas de segundos& 9e de3ine la interrupcin ' se testea si es por R%0 o TMR0# si 3uese por R%0 0ue es el pin = del PIC o bit 0 del puerto %# /amos a la subrutina botn donde /emos si la cuenta debe parar ' mostrar el tiempo e8acto en el 0ue 3ue parado o borrar los registros ' comenzar a contar si se presiono por segunda /ez# para ello se testea al comenzar a incrementar si la bandera controlada por R%0 esta acti/ada o no& En el programa principal de3inimos el inicio# donde se ingresa al banco uno ' se de3ine puerto A# % ' C# luego se de3ine los bits del 4PTI45>RE6 se asigna prescaler al timer 0# el numero elegido para el prescaler es 1?!& Al tener 1?!# signi3ica 0ue si el tiempo es de 1 ms# eso e0ui/ale a 1000 @s# al di/idir por ! se tiene 1-< @s# a;ora el TMR4 debe llegar a -<<# la di3erencia entre -<< ' 1-<# es 120# sea cargamos 08!- al TMR0 Al pasar al banco 0 /emos TMR0 cargado con 08!- ' los puertos con3igurados 9e con3igura el registro I5TC45# donde Aabilitamos 6IE e interrupciones por o/er3loB del TMR0 Asignamos 10 para cont# 0ue se decrementa dentro de la interrupcin# la idea es 0ue dada la 3orma en 0ue se de3ini el TMR4 para tener 1 milisegundo# poder lograr 10 milisegundo para mantener encendido cada displa'& C
Cronometro P(gina + ,igitales III <
logramos la multiple8acin de los displa's mediante la asignacin de un puntero llamado displa' 9iempre primero multiple8amos los displa's por puerto A cada 10ms# ' luego incrementamos los registros cent# dec# seg ' seg- mostr(ndolos por puerto % 9i la bandera del pulsador esta borrada# no llega a incrementar sino 0ue /uel/e al bucle de multiple8acin dejando est(tica la cuenta para poder mostrar de todas 3ormas los n)meros 0ue ;a' en el cronometro ' no permite 0ue a/ance la cuenta A;ora se supone 0ue no se apret el botn# entonces decrementa los registros ,entro de botn lo primero limpiar el bit1 de I5TC45# 0ue indica la interrupcin por R%4& 9e testea el bit 0 de bandera# si esta en 1 borro la bandera para 0ue no cuente mas# sino la 9eteo ' borro los registros para 0ue /uel/a a contar $a cuenta consiste en incrementar de3iniendo cent con 10 ' comparando con D4R ' testeando status#z si esta en 1#si llega a 10 status#z esta seteado entonces pasa a incrementar el registro siguiente 0ue en este caso es dec 0ue se le asigna 10# si no llega a 10 /uel/e a la interrupcin ' no incrementa los otros registros# luego seg de igual manera ' seg- 0ue se le asigna 6 para contar ;asta <E?EE segundos entonces# al saltar entre registro ' registro se limpia el ultimo para /ol/er a El /alor de F 0ue corresponde a la ubicacin del registro# luego se suma al PC$ de esa 3orma se puede ingresar a la tabla 0ue muestra los n)meros en los displa's de siete segmentos siguiendo esta secuencia A# %# C# ,# E# # 6# R%0 0000+0011 G0G 1001+1111 G1G 0010+0101 G-G 0000+1101 G2G 1001+1001 G"G 0100+1001 G<G 0100+0001 G6G 0001+1111 G=G 0000+0001 G!G 0000+1011 GEG A# %# C# ,# E# # 6 representan los = segmentos usados en el displa'# ' el ultimo bit es R%0# como es de (nodo com)n# prendemos por 0 ' apagamos por 1& Al de/ol/erla tabla el n)mero se muestra a tra/.s del puerto % representando cada pata del mismo un bit del n)mero&
Cronometro P(gina + ,igitales III 6
El displa' ser( mostrado la misma posicin 10 ms# luego a/anza ' muestra otro ' as: sucesi/amente# resultando imperceptible al ojo ;umano& $a multiple8acin 0ue se realiza por tabla se ;ace por puerto A " transistores P5P& Prendiendo por 0 el displa' a mostrar 0000+1110 0000+1101 0000+1011 0000+0111 Hna /ez obtenido el n)mero sale de la tabla ' se muestra a tra/.s del puerto A
Iiendo el diagrama de pines En los pines 1< ' 16 conectaremos el Cristal de " MAz en serie con capacitores de -- p los cuales /an a masa& En el pin " ponemos una resistencia de 10J K para el MC$R Para los " displa's de (nodo com)n# las resistencias empleadas son de --0K en el colector del transistor 0ue ser(n colocadas en serie entre puerto % de pin = a 12 ' diodos led de los displa's ' de -1L para la base en serie entre el puerto A de pin 1#-#2#1=#1! ' pata de (nodo com)n de cada displa'# por lo 0ue la corriente en los $E, del displa' est( en el orden de los 1<mA# los transistores son del tipo P5P 2-=-<&
Cronometro P(gina + ,igitales III =
Para el pulsador se emplea una resistencia de 1J K# ' un capacitor de 10n para lograr un anti rebote por ;ardBare en el pin R%0
Cronometro P(gina
+ ,igitales III
Cronometro P(gina
+ ,igitales III
Cronometro P(gina
+ ,igitales III
10
igura A + Cronometro corriendo# se puede /er claramente el e3ecto de numero 3antasma en los posiciones 0ue corren r(pidamente por 0ue la 3oto no es instant(nea
igura A
igura % + Cronometro parado# se puede /er claramente 0ue los n)meros se /en bien por0ue no est( incrementando el contador por presionar el botn de stop*reset
igura %
Cronometro P(gina
+ ,igitales III
11
!ARD"ARE UTILI#ADO
=!0<
CONCLUSION
Aprendimos a usar# ' comprender el uso de los puertos como salidas ' entradas# el uso de las interrupciones e8ternas e internas# conjug(ndolo con el uso de tablas ' subrutinas para lograr satis3actoriamente un pro'ecto 0ue 3unciona& $os problemas ' los obst(culos 0ue presento la implementacin 3ueron muc;os# pero 3ueron sobrelle/ados ' 3ueron )tiles para conocer m(s nuestro PIC# no se obtiene un error perceptible por minuto del cronometro# ser:a interesante poder incrementar un puntero ' poder mostrar minutos para poder /er si e8iste alg)n error grosero al pasar el tiempo& El botn de stop# reset presentaba un rebote pero 3ue eliminado por prueba ' error cambiando la con3iguracin de capacitor ' resistencia ;asta lograr un buen pulsador&
Cronometro P(gina
+ ,igitales III
1-
PROGRAMA
$I9T P7PIC16 !"A QI5C$H,E P16 !"A&I5C RA,ID AED R ,E I5ICIS5 ,E IARIA%$E9 R C45TA,4R PARA RETAR,4 ,E 10M9 R CE5T PARA CE5TU9IMA9 ,E 9E6H5,49 R ,EC PARA $A9 ,UCIMA9 ,E 9E6H5,49 R 9E6 PARA $49 9E6H5,49 R 9E6- PARA $A9 ,ECE5A9 ,E 9E6H5,49 R %A5,ERA PARA E$ C45TR4$ ,E$ TIEMP4 R AHDI$IAR PARA 6HAR,AR F R AHDI$IAR PARA 6HAR,AR 9TATH9 R %A5,ERA THE TE9TEA R%0 R AHDI$IAR THE I5,ICA ,I9P$AC
C45T CE5T ,EC 9E6 9E6$A6 F>AHD 9T>AHD %A5,ERA ,I9P$AC 4R6 64T4 4R6
ETH ETH ETH ETH ETH ETH ETH ETH ETH ETH 0D00
I5ICI4 0D0"
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVI5TERRHPCI45 1M9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV M4IF M4I M4IF %T 9C CA$$ %T 99 RET IE M4I$F M4IF %C %9 M4I M4IF M4I RET IE F>AHD 9TATH9#F 9T>AHD I5TC45#I5T %4T45 I5TC45#T0I 0D!TMR0 I5TC45#T0I $A6#0 9T>AHD#F 9TATH9 F>AHD#F RTE9TE4 9I I5TERRHPCI45 IIE5E P4R R%4 R9I E9 P4R R%0 I4C A %4T45 RTE9TE4 9I IIE5E P4R TMR0 RCAR64 TMR0 -<<+1-<7120 R$IMPIAM49 %IT THE I5,ICA I5TERRHPCI45 D TMR0 R9ETE4 %A5,ERA ,E C45TR4$ ,E TIEMP4
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %4T45 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %4T45 %C %T 9C 64T4 %9 C$R C$R C$R C$R %C RETHR5 %C RETHR5 I5TC45#I5T %A5,ERA#0 $44P %A5,ERA#0 CE5T ,EC 9E6 9E6%A5,ERA#1 R$IMPIAM49 %IT ,E I5TERRHPCI45 D R%4 R9I E9 7 1 %4RR4 %A5,ERA PARA THE 54 CHE5TE RE5CIE5,E E$ CR454METR4 C %4RRA RE6I9TR49
$44P
%A5,ERA#0
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV PR46RAMA PRI5CIPA$VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV I5ICI4 %C %9 M4I$F M4IF 9TATH9#6 9TATH9# < 0D01 TRI9% R I56RE94 A$ %A5C4 1
RPHERT4 % = 0HT* 1 I5
Cronometro P(gina
+ ,igitales III
12
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV,EM4RA9 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %HC$E1 %HC$E M4I$F M4IF %T 99 64T4 %C 0D0A C45T $A6#0 %HC$E $A6#0 RCAR64 C45T C45 10 PARA RETAR,4 ,E 10M9 RRETAR,4 ,E 1M9 MTE9TE4 %A5,ERA ,E PA94 1 M9N
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV%ARRI,4 ,E ,I9P$AC9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV M4I CA$$ M4IF M4I$F A,,F M4IF M4I CA$$ M4IF I5C A5,$F M4IF ,EC 9W 64T4 ,I9P$AC#0 P49ICI45 P4RTA 9E6,I9P$AC#0 9R I5, #0 TA%$A P4RT% ,I9P$AC#0 0D02 ,I9P$AC C45T %HC$E
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVI5CREME5T4 ,E CE5T#,EC#9E61 C 9E6-VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %T 99 I5CREME5TA 64T4 T4,4 I5C M4I$F D4RF %T 99 64T4 C$R I5C M4I$F D4RF %T 99 64T4 C$R I5C M4I$F D4RF %T 99 64T4 C$R I5C M4I$F D4RF CE5T# 0D0A CE5T#F 9TATH9#W %HC$E1 CE5T ,EC# 0D0A ,EC#F 9TATH9#W %HC$E1 ,EC 9E6# 0D0A 9E6#F 9TATH9#W %HC$E1 9E6 9E6-# 0D06 9E6-#F RI5CREME5TA CE5TE9IMA ,E 9E6H5,4 %HC$E1 R9I54# 54 I5CREME5TA MA9 ,EXA5,4 E9TATIC4 %A5,ERA#0 RTE9TE4 $A %A5,ERA ,E$ %4T45# 9I E9TA E5 1
RI5CREME5TA 9E6H5,49
Cronometro P(gina
+ ,igitales III
1"
%T 9C C$R 64T4
9TATH9#W 9E6%HC$E1
RET$F RET$F RET$F RET$F RET$F RET$F RET$F RET$F RET$F RET$F
%Y10000001Y R %Y11110011Y R %Y01001001Y R %Y01100001Y R %Y00110011Y R %Y00100101Y R %Y00000101Y R %Y11110001Y R %Y00000001Y R %Y00100001Y R
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTA%$A ,E P49ICI45 ,E ,I9P$AC9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV P49ICI45 A,,F RET$F RET$F RET$F RET$F %Y0111Y %Y1110Y %Y1101Y %Y1011Y PC$#
E5,
Cronometro P(gina
+ ,igitales III
1<