98075531 Cronometro en PIC16F874A Assembler

November 29, 2020 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download 98075531 Cronometro en PIC16F874A Assembler...

Description

CIRCUITOS DIGITALES Cronometro con PIC16F874A Lipuma Daniel F.

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&

Cronometro P(gina

+ ,igitales III

-

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&

Cronometro P(gina

+ ,igitales III

2

DIAGRAMA EN BLOQUE Inicio

Inicialización de /ariables

,e3ino Puertos Con3iguro 4PTI45RE e I5TC45 %orro %andera de Control de 1ms

Interrupción

Testeo si es por R%0 o TMR0

R%0

TMR0

Cargo TMR0708!9eteo %andera de Control de 1ms

Testeo bandera del pulsador  1

0

Cargo contador de 10ms para displa's

%ucle de control de 1ms

Incremento cent# dec# seg# ' seg,ecremento contadores

%orro displa's

Muestro displa's ' decremento contadores

Cronometro P(gina

+ ,igitales III

"

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 -
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF