• No se han encontrado resultados

98075531 Cronometro en PIC16F874A Assembler

N/A
N/A
Protected

Academic year: 2021

Share "98075531 Cronometro en PIC16F874A Assembler"

Copied!
15
0
0

Texto completo

(1)

CIRCUITOS DIGITALES

CIRCUITOS DIGITALES

Cronometro con PIC16F874A

Cronometro con PIC16F874A

Lipuma Daniel F. Lipuma Daniel F.

(2)

RESUMEN

En este practico estudiamos la implementación de un cronometro mediante programación 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&

(3)

-INTRODUCCION

 A continuación 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 ue al encender el cronometro se /isualicen los displa's en cero# luego al presionar por primera /ez ue comience a contar# al presionar por segunda /ez se detenga la cuenta mostrando est(ticamente la misma lle/ada a cabo# ' ue al pulsar nue/amente se /uel/a a cero ' arranue

El programa se logra bajo la utilización b(sicamente de interrupciones para realizar el mismo# la programación en MP$A% !&1# en lenguaje Assembler # la grabación del programa mediante Picit- ' la implementación del mismo sobre el PIC 16!"A&

(4)

Inicialización de /ariables Inicio ,e3ino Puertos Con3iguro 4PTI45RE e I5TC45 %orro %andera de Control de 1ms Interrupción TMR0 R%0 Testeo si es por R%0 o TMR0 Cargo TMR0708!-9eteo %andera de Control de

1ms Cargo contador de 10ms para displa's Muestro displa's ' decremento contadores Testeo bandera del pulsador 

Incremento cent# dec# seg# ' seg-,ecremento contadores 1 0 %orro displa's %ucle de control de 1ms DIAGRAMA EN BLOQUE

(5)

IMPLEMENTACION

En un principio# se muestran todos los displa's en cero# al presionar el botón por primera /ez comienza a contar# al presionar por segunda /ez se detiene uedando el numero al ue se llego# luego se presiona ' se pone en cero ' cuenta# as: continua sucesi/amente# para ello el programa se basa en las interrupciones ' el botón se logra con interrupción por R%4&

$a multiple8ación de los " displa's se ;ar( por puerto A ue tiene < pines# con3igurado con todos sus pines como salidas& $a in3ormación de tabla ue 3orma los n)meros en los displa's de siete segmentos se ;ar( por puerto % ue tiene ! pines# ue con3iguraremos de = salidas ' una de entrada ue es R%0  Al iniciar el programa de3inimos de los distintos registros# cuatro de ellos son

cent# dec# seg ' seg - ue 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 interrupción ' se testea si es por R%0 o TMR0# si 3uese por R%0 ue es el pin = del PIC o bit 0 del puerto %# /amos a la subrutina botón donde /emos si la cuenta debe parar ' mostrar el tiempo e8acto en el ue 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>RE se asigna prescaler al timer 0# el numero elegido para el prescaler es 1?!&

 Al tener 1?!# signi3ica ue si el tiempo es de 1 ms# eso eui/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 abilitamos IE e interrupciones por o/er3loB del TMR0

 Asignamos 10 para cont# ue se decrementa dentro de la interrupción# la idea es ue dada la 3orma en ue se de3inió el TMR4 para tener 1 milisegundo# poder lograr 10 milisegundo para mantener encendido cada displa'& 

(6)

logramos la multiple8ación de los displa's mediante la asignación 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 ue /uel/e al bucle de multiple8ación dejando est(tica la cuenta para poder mostrar de todas 3ormas los n)meros ue ;a' en el cronometro ' no permite ue a/ance la cuenta

 A;ora se supone ue no se apretó el botón# entonces decrementa los registros ,entro de botón lo primero limpiar el bit1 de I5TC45# ue indica la interrupción por R%4& 9e testea el bit 0 de bandera# si esta en 1 borro la bandera para ue no cuente mas# sino la 9eteo ' borro los registros para ue /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 ue en este caso es dec ue se le asigna 10# si no llega a 10 /uel/e a la interrupción ' no incrementa los otros registros# luego seg de igual manera ' seg- ue se le asigna 6 para contar ;asta <? segundos entonces# al saltar entre registro ' registro se limpia el ultimo para /ol/er a

El /alor de F ue corresponde a la ubicación del registro# luego se suma al PC$ de esa 3orma se puede ingresar a la tabla ue muestra los n)meros en los displa's de siete segmentos siguiendo esta secuencia A# %# C# ,# E# # # 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 GG

 A# %# C# ,# E# #  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&

(7)

El displa' ser( mostrado la misma posición 10 ms# luego a/anza ' muestra otro ' as: sucesi/amente# resultando imperceptible al ojo ;umano&

$a multiple8ación ue 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

DESCRIPCION DEL CIRCUITO Micro controlador PIC16F8A

iendo el diagrama de pines

En los pines 1< ' 16 conectaremos el Cristal de " Mz 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 ue ser(n colocadas en serie entre puerto % de pin = a 12 ' diodos led de los displa's ' de -L 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 ue la corriente en los $E, del displa' est( en el orden de los 1<mA# los

transistores son del tipo P5P 2-=-<&

(8)

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

Calculo de resistencias En corte? Resistencia de Colector

En saturación? Resistencia de %ase

(9)

DIAGRAMA DEL CIRCUITO

,iagrama del circuito para simulacion

,iagrama esuem(tico para realización del PC%

(10)

,iagrama para realización del PC% PC% terminado ista in3eriorN

Circuito terminado ista superiorN

(11)

Circuito completo con " displa's = segmentos a su salida

igura A + Cronometro corriendo# se puede /er claramente el e3ecto de numero 3antasma en los posiciones ue corren r(pidamente por ue la 3oto no es instant(nea

igura A

igura % + Cronometro parado# se puede /er claramente ue los n)meros se /en bien porue no est(

incrementando el contador por presionar el botón de stop*reset

igura %

(12)

!ARD"ARE UTILI#ADO

Resistencias =8 --0K * "8 -J K* 18 <60 K* !81-0 K Micro controlador PIC16!"A

Cristal " Mz

Capacitores -8 --p* 18 100u*1810n*18100n

Programador T4R

,ispla's " 8 Onodo Com)n <1-1%+5 Transistores "8 2-=-< P5P&

Pulsador - Tipo Araa Regulador  =!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 ue 3unciona& $os problemas ' los obst(culos ue presento la implementación 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 botón de stop# reset presentaba un rebote pero 3ue eliminado por prueba ' error cambiando la con3iguración de capacitor ' resistencia ;asta lograr un buen pulsador&

(13)

1-PROGRAMA

$I9T P7PIC16!"A

QI5C$H,E P16!"A&I5C

RA,ID ED

 ,EI5ICIS5 ,E ARIA%$E9

C45T EH 0D-2  C45TA,4R PARA RETAR,4 ,E 10M9 CE5T EH 0D-=  CE5T PARA CE5TU9IMA9 ,E 9EH5,49 ,EC EH 0D-6  ,EC PARA $A9 ,UCIMA9 ,E 9EH5,49 9E EH 0D-<  9E PARA $49 9EH5,49

9E- EH 0D-"  9E- PARA $A9 ,ECE5A9 ,E 9EH5,49 $A EH 0D-!  %A5,ERA PARA E$ C45TR4$ ,E$ TIEMP4 F>AHD EH 0D-  AHDI$IAR PARA HAR,AR F

9T>AHD EH 0D20  AHDI$IAR PARA HAR,AR 9TATH9 %A5,ERA EH 0D2-  %A5,ERA HE TE9TEA R%0

,I9P$A EH 0D21  AHDI$IAR HE I5,ICA ,I9P$A

4R 0D00 4T4 I5ICI4 4R 0D0" VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVI5TERRHPCI45 1M9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV M4F F>AHD M4 9TATH9#F M4F 9T>AHD

%T9C I5TC45#I5T TE9TE4 9I I5TERRHPCI45 IE5E P4R R%4 CA$$ %4T45 9I E9 P4R R%0 4 A %4T45

%T99 I5TC45#T0I TE9TE4 9I IE5E P4R TMR0 RETIE

M4$F 0D!- CAR4 TMR0 -<<+1-<7120

M4F TMR0

%C I5TC45#T0I $IMPIAM49 %IT HE I5,ICA I5TERRHPCI45 D TMR0 %9 $A#0 9ETE4 %A5,ERA ,E C45TR4$ ,E TIEMP4

M4 9T>AHD#F

M4F 9TATH9

M4 F>AHD#F RETIE

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %4T45 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

%4T45 %C I5TC45#I5T $IMPIAM49 %IT ,E I5TERRHPCI45 D R%4 %T9C %A5,ERA#0

4T4 $44P 9I E9 7 1 %4RR4 %A5,ERA PARA HE 54 CHE5TE %9 %A5,ERA#0 E5CIE5,E E$ CR454METR4  %4RRA REI9TR49

C$R CE5T C$R ,EC C$R 9E C$R 9E-%C %A5,ERA#1 RETHR5 $44P %C %A5,ERA#0 RETHR5 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV PR4RAMA PRI5CIPA$VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV I5ICI4 %C 9TATH9#6  I5RE94 A$ %A5C4 1

%9 9TATH9# <

M4$F 0D01

M4F TRI9% PHERT4 % = 0HT* 1 I5

(14)

C$R TRI9A PHERT4 A < 4HT   M4$F 0D-M4F 4PTI45>RE %C 9TATH9#< M4$F 0D%0 M4F I5TC45 %C $A#0 C$R ,I9P$A VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV,EM4RA9 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %HC$E1 M4$F 0D0A CAR4 C45T C45 10 PARA RETAR,4 ,E 10M9

M4F C45T

%HC$E %T99 $A#0 RETAR,4 ,E 1M9 TE9TE4 %A5,ERA ,E PA94 1 M9N

  4T4 %HC$E

%C $A#0

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV%ARRI,4 ,E ,I9P$A9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

  M4 ,I9P$A#0

CA$$ P49ICI45 9AC4 P4R PHERT4 A $A P49ICI45 ,E$ ,I9P$A M4F P4RTA

  M4$F

9E-A,,F ,I9P$A#0 9HM4 9E- C45 ,I9P$A

  M4F 9R

M4 I5,#0

CA$$ TA%$A 9AC4 P4R PHERT4 % $49 ,IIT49 A REPRE9E5TAR

  M4F P4RT% I5C ,I9P$A#0  A5,$F 0D02 M4F ,I9P$A ,EC9W C45T 4T4 %HC$E

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVI5CREME5T4 ,E CE5T#,EC#9E1  9E-VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %T99 %A5,ERA#0 TE9TE4 $A %A5,ERA ,E$ %4T45# 9I E9TA E5 1 I5CREME5TA

4T4 %HC$E1 9I54# 54 I5CREME5TA MA9 ,EXA5,4 E9TATIC4 T4,4

I5C CE5T# I5CREME5TA CE5TE9IMA ,E 9EH5,4

M4$F 0D0A

D4RF CE5T#F

%T99 9TATH9#W

4T4 %HC$E1

C$R CE5T

I5C ,EC# I5CREME5TA ,ECIMA9 ,E 9EH5,49

M4$F 0D0A

D4RF ,EC#F

%T99 9TATH9#W

4T4 %HC$E1

C$R ,EC

I5C 9E# I5CREME5TA 9EH5,49

M4$F 0D0A

D4RF 9E#F

%T99 9TATH9#W

4T4 %HC$E1

  C$R 9E

I5C 9E-# I5CREME5TA ,ECE5A9 ,E 9EH5,49

M4$F 0D06

D4RF 9E-#F

(15)

%T9C 9TATH9#W C$R 9E-  4T4 %HC$E1 VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTA%$A ,E $E,9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV TA%$A A,,F PC$# RET$F %Y10000001Y  RET$F %Y11110011Y  RET$F %Y01001001Y  RET$F %Y01100001Y  RET$F %Y00110011Y  RET$F %Y00100101Y  RET$F %Y00000101Y  RET$F %Y11110001Y  RET$F %Y00000001Y  RET$F %Y00100001Y 

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTA%$A ,E P49ICI45 ,E ,I9P$A9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV P49ICI45 A,,F PC$# RET$F %Y0111Y RET$F %Y1110Y RET$F %Y1101Y RET$F %Y1011Y E5,

Referencias

Documento similar