Está en la página 1de 7

UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

MANEJO DE TEMPORIZADORES PARA LA IMPLEMENTACION DE UN


CRONMETRO

INFORME N9

1.- Caiza Quishpe Paul Segundo


scaizap@est.ups.edu.ec
2.- Cndor Guaygua Mesias Miguel
mcondor@est.ups.edu.ec

Lunes 30 de Enero del 2017


07:00h a 09:00h
Grupo 2 Sistemas Microprocesador I
Nivel Sexto

2. MARCOTERICO
RESUMEN: El en presente informe se da a conocer el
manejo de los temporizadores que tiene el PIC 16F877A 2.1- MANEJO DE TEMPORIZADORES
para Familiarizar al estudiante con el uso y la forma de
operacin de los temporizadores para generar bases de
Un temporizador o minutero es un dispositivo, con
tiempo, a travs de la implementacin de un cronometro
frecuencia programable, que permite medir el tiempo. La
convencional (minutos: segundos: milisegundos).
primera generacin fueron los relojes de arena, que
fueron sustituidos por relojes convencionales y ms tarde
por un dispositivo ntegramente electrnico. Cuando
ABSTRACT: The present report discloses the timer trascurre el tiempo configurado se hace saltar una alarma
handling of the PIC 16F877A to familiarize the student o alguna otra funcin a modo de advertencia.
with the use and the way of operation of the timers to
generate time bases, through the implementation of a En este caso se ver el uso del timer0 PIC como
conventional timer (minutes: Seconds: milliseconds). contador y temporizador, en lo que sigue se comentar
. para el caso del PIC16F877A por lo que es muy
importante que se tenga a mano la hoja de datos del
PALABRAS CLAVE: Manejo de Temporizadores, PIC16F877A, para el caso de utilizar algn otro
Cronometro convencional, Timer 0, Timer 1, Timer 2. microcontrolador AVR el procedimiento ser muy similar
a lo aqu comentado. [1]

1. OBJETIVOS
Familiarizar al estudiante con el uso y la forma
de operacin de los temporizadores para
generar bases de tiempo.

1.2 OBJETIVOS ESPECIFICOS

Estudiar el funcionamiento de los


temporizadores y hacer uso de interrupciones
para implementar un temporizador digital.

Implementar un cronometro convencional


mediante el uso de los Timer del PIC 16F877A.
Figura 1.- Timer0 del PIC 16F877A ubicado en el pin 6.

1
UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

2.2.- USO DEL TIMER 0 DEL PIC 16F877A.

El Timer cero del Microcontrolador 16F877A, es un


Temporizador/Contador de 8-bit. Para trabajar con este
Timer hay varios parmetros de configuracin como lo
son (abajo):

Fuente de conteo o tiempo, interna o externa


Prescaler 1:2, 1:4, 1:8 hasta 1:256
Uso de las interrupciones del timer cada
desbordamiento
Transiciones, (0 a 1) o (1 a 0)
Figura 3.-Diagrama de bloques del Timer1 como
temporizador.
El prescaler es como un contador ms, es decir si no
usramos prescaler la interrupcin o desbordamiento del
timer tiene lugar cada vez que el registro de conteo pase 2.3.- USO DEL TIMER 1 DEL PIC 16F877A.
de FFh a 00h. Pero con el uso de prescaler a por ej. 1:256,
estaramos hablando de una interrupcin cada vez que el El timer1 PIC es un temporizador contador de 16 bits,
timer se desborde 256 veces (FFh*FFh). el registro TMR1 es el temporizador contador timer1 PIC
en s, es donde se guardan los valores del timer1 PIC,
En el programa presentado hoy, se usan dos fuentes cuando es utilizado como temporizador, sus valores
de interrupcin la del timer y la interrupcin externa por lo aumentaran de uno en uno entre 0 y 65535 con cada 4
cual el programa debe identificar cual es la rutina ciclos de reloj, no olvidar que cada ciclo de instruccin del
adecuada para cada una de las interrupciones, eso se microcontrolador PIC es realizado en 4 ciclos de reloj, por
logra comparando las banderas de cada interrupcin. ejemplo si el oscilador con el que est funcionando el
Adicionalmente las banderas deben ser borradas en microcontrolador PIC es de 4MHz, entonces el registro
Software para evitar falsos disparos de rutina. TMR1 aumentar en una unidad cada 1us, si el registro
TMR1 se incrementa en 100 unidades habrn
En la etiqueta INICIO del programa, se observa que transcurrido 100us.
simplemente siempre est poniendo en 1 y en 0 a dos
pines del Puerto B, pero cada vez que hay interrupcin Cuando es utilizado como contador el temporizador
del timer, pondr en 0 al pin que estaba en 1 y en 1 al que timer1 PIC ya no aumenta su valor de uno en uno en cada
estaba en 0, de esa manera se crea una forma de onda y 4 ciclos de reloj, sino que lo har mediante el flanco de
es complementaria por ser simtrica una de la otra. subida o el flanco de bajada de alguna seal que llegue a
un pin especial del PIC conectado al timer1 PIC, este pin
La funcin de la interrupcin externa es simplemente es identificado como T1CKI que en el PIC16F877A es el
cambiar la velocidad del conteo, cmo se logra? pin15 o RC0, esto puede variar de acuerdo al
cambiando el prescaler del Timer 0. microcontrolador PIC utilizado, pero siempre se llamar
T1CKI. [3]
En el video de arriba se puede observar el cambio de
velocidad al presionar el SW de interrupcin.
2.3.1.- TIMER1 PIC COMO CONTADORE
Este es el Esquemtico, el programa ASM lo
encuentras aqu, y el HEX est ms abajo. [2] EJEMPLO

El circuito utilizado es el que se muestra en la siguiente


imagen, la seal que ingresa por el pin T1CKI se genera
con la ayuda de un fotorresistor, cada vez que el
fotorresistor disminuya su valor al pin T1CKI le llegar un
alto, esto es un flanco de subida, lo que provocar que el
registro TMR1 aumente en una unidad, la cuenta del
timer1 PIC ir desde 0 hasta 65535, se ver de forma
indirecta los valores del timer1, se har que cada vez que
el timer1 aumente en 8000 unidades se encienda un led
del puerto b, se empezar con los leds del puerto b
totalmente apagados.

Se utilizar un led ms conectado al pin RD1 se har


que este led est en contacto con el fotorresistor para que
sea este el que genere los altos y bajos que llegarn al
pin T1CKI, con lo que en cada flanco de subida se
incremente el valor del registro TMR1, el led se har
Figura 2.- Temporizador/Contador de 8-bit. parpadear cada 20ms. [4]

2
UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

Figura 4.- Circuito de seal que ingresa por el pin Figura 6.- Valores que hay que dar a estos bits para
T1CKI. obtener los diferentes valores de los prescaler y el
postcale para el timer2 PIC.
2.4.- USO DEL TIMER 2 DEL PIC 16F877A.
2.5.- CRONOMETRO
Timer2 PIC como temporizador
T2CON es el registro de control del timer2 PIC La palabra cronmetro proviene de la mitologa
griega, el nombre se le dio por el Dios griego
El temporizador timer2 PIC cuenta con lo que se Cronos que era el Dios del tiempo.
conoce como prescaler y tambin con un postcaler pero
el postcaler solo hace su trabajo cuando el timer2 PIC es Es un reloj o una funcin de reloj que sirve para
utilizado con interrupciones esto se ve en la seccin de medir fracciones de tiempo, normalmente cortos
interrupciones con el PIC, y con exactitud. [1]

Por ahora se comentar como utilizar tanto el prescaler Temporizador:


como el postcaler, lo que hacen es que la frecuencia de
trabajo FOSC se divida por este prescaler y a la vez por Sistema de control de tiempo que se utiliza para
el postcaler si se utilizan ambos a la vez se logra que el abrir o cerrar un circuito en uno o ms momentos
temporizador timer2 PIC tarde un poco ms en aumentar determinados, y que conectado a un dispositivo
su valor en una unidad. [4] lo pone en accin. [1]

Reloj:

Se denomina reloj a un instrumento que permite


medir el tiempo. Existen diversos por Ejemplo:
Reloj de pulso, reloj de bolsillo, reloj de saln
pared. Lo ms importante y esencial de las
funciones de un reloj comn es proporcionar la
hora. [1]
Figura 5.- Control de registro del Timer2.

1.- El bit7 no se utiliza por lo que se le pone a 0.

2.- Los bits de 6 al 3 mediante las combinaciones de estos


bits se elige el postcaler, el poscaler puede tener los
valores del 1 al 16.

3.- El bit2 al poner este bit a 1 se habilita el uso del timer2


PIC, si se pone a 0 el timer2 PIC estar deshabilitado.

4.- Los bits 1 y 0 mediante las combinaciones de estos


bits se elige el prescaler, el prescaler puede tener los
valores del 1, 4 y 16
Figura 7.- Cronometro digital armado en placa.

3
UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

3. MATERIALES Y EQUIPO

3.1.- EQUIPO DE PROTECCION.

Mandil.

3.2.- EQUIPO DEL LABORATORIO.

Computadora.
Software PIC C.
Software Proteus.
Mesa de Trabajo.
Figura 6. Circuito simulado en el software proteus del
cronometro.
3.3.- MATERIALES PARA LA IMPLEMENTACION DE
LOS CIRCUITOS.
4.1.2.- Realice el diagrama de flujo para el algoritmo que
PIC16F877A implementar para el enunciado 1 CRONOMETRO.
Resistencias de 330
1 Capacitor de 10uF
4 Pulsador.
Protoboard.
Tarjeta Programadora de Pic`s.
Cristal 4MHz
2 Capacitores (22Pf)
Diodos de propsito general.
LCD(2x16)
Fuente DC(5V)
Potencimetro de 100k
Cables de conexiones.

4. DESARROLLO Y PROCEDIMIENTO

MARCO PROCENDENCIAL:

4.1.1.- Disee el diagrama electrnico para cumplir con el


primer enunciado propuesto, cumpliendo al pie de la letra
lo all solicitado.

Enunciado 1:
Figura 7. Diagrama de flujo del programa de un
Realizar un cronometro el cual conste de milisegundos, cronometro
segundos y minutos en la siguiente posicin (minutos,
segundos, milisegundos) en la segunda lnea de la LCD. 4.1.3.- Desarrolle en el compilador C la programacin
La primera lnea de la LCD tiene que visualizar la palabra necesaria en base de su diagrama de flujo, para cumplir
CRONOMETRO. Adems se tiene 3 pulsadores los con el enunciado 1 CRONOMETRO.
cuales son:
#include <16F877a.h>
Botn 1.- Inicio/Reinicio #fuses XT,NOWDT
Botn 2.- Pausa #use delay(clock=4M)
Botn 3.- Reseteo #use standard_io(B)
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2

4
UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

#define LCD_DATA4 PIN_D4 comp1=1;


#define LCD_DATA5 PIN_D5 while(comp==1){
#define LCD_DATA6 PIN_D6 set_timer1(15536);
#define LCD_DATA7 PIN_D7 enable_interrupts(INT_TIMER1);
#include <lcd.c> enable_interrupts(global);
int cont=0,seg=0,min=0,b=0,c=0,i=0,y=0,comp,comp1; while(comp1==1){
int32 a=0,as=0; lcd_gotoxy(4,1);
#INT_TIMER1 printf(lcd_putc,"CRONOMETRO");
void TIMER1_isr(void){ lcd_gotoxy(5,2);
if(y==0){ printf(lcd_putc,"%u ",min);
if(cont==1){ lcd_gotoxy(7,2);
seg++; printf(lcd_putc,":%u ",seg);
if(seg==60){ lcd_gotoxy(11,2);
seg=0; a=get_timer1()*0.001525;
min++; printf(lcd_putc,":%Lu ",a);
if(min==60){ if(input(PIN_B5)==0){
seg=0; comp=0;
min=0; comp1=0;
}} i=0;
cont=0; y=1;
}else{ }
cont++;} if(input(PIN_B6)==0){
set_timer1(15536); comp=0;
}} comp1=0;
void main(){ y=1;
lcd_init(); min=0;
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); seg=0;
lcd_gotoxy(4,1); a=0;
printf(lcd_putc,"CRONOMETRO"); i=0;
lcd_gotoxy(5,2);
printf(lcd_putc,"%u ",min); //////////////////////////////////
lcd_gotoxy(7,2); lcd_gotoxy(4,1);
printf(lcd_putc,":%u ",seg); printf(lcd_putc,"CRONOMETRO");
lcd_gotoxy(11,2); lcd_gotoxy(5,2);
printf(lcd_putc,":%Lu ",a); printf(lcd_putc,"%u ",min);
lcd_gotoxy(7,2);
while(1){ printf(lcd_putc,":%u ",seg);
lcd_gotoxy(11,2);
//////////reset////////////////// printf(lcd_putc,":%Lu ",a);
if(input(PIN_B6)==0){ ////////////////////////////////////
comp=0; }}
comp1=0; }}}
y=1; }
min=0;
seg=0;
a=0; 4.1.4.- Arme el circuito electrnico diseado, programe su
i=0; microcontrolador y realice las pruebas de funcionamiento
lcd_gotoxy(4,1); del CRONOMETRO.
printf(lcd_putc,"CRONOMETRO");
lcd_gotoxy(5,2);
printf(lcd_putc,"%u ",min);
lcd_gotoxy(7,2);
printf(lcd_putc,":%u ",seg);
lcd_gotoxy(11,2);
printf(lcd_putc,":%Lu ",a);
}

/////////////////fin/////////////////
if(input(PIN_B4)==0){
i=1;
}
if(i==1){
y=0;
comp=1; Figura 8. Circuito implementado del CRONOMETRO.

5
UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

5. ANLISIS Y RESULTADOS.

5.1.- Botones de mando para el CRONOMETRO.

Figura 12. Cronmetro puesto en marcha.

6. CONCLUSIONES
Por medio de la prctica realizada pudimos
observar el proceso que toma el manejo de los
Figura 9. Circuito implementado de los botones de temporizadores del PIC 16F877A los cuales
mando (Inicio/Reinicio-Pausa-Reseteo). pueden funcionar como contadores o
temporizadores los cuales nos ayudan a
generar bases de tiempo, para poder
implementar un reloj o tambin un cronometro.

Mediante la prctica se logr aprender que el


PIC 16F877A consta de 3 TIMER (timer0,
Timer1, Timer2) los cuales tiene diferente
capacidad de memoria ya que el Timer0 es un
contador ascendente de 8 bits y el Timer1 es un
contador ascendente de 16bits y para lograr la
implementacin del cronometro se tuvo cuidado
con este tipo de capacidad para que no genere
errores en el conteo del cronometro.

7. RECOMENDACIONES.

Figura 10. Circuito implementado del cronometro. Tomar en cuenta los diferentes tipos de
Temporizadores que posee el PIC y la
capacidad de memoria que tiene cada uno de
ellos para no tener errores en el
desbordamiento.

Al instante de la implementacin de los circuitos


tomar muy en cuenta si los pulsadores estn
conectados para enviar un 1L 0L ya que esto
influye en la programacin.

Polarizar de forma correcta el PIC as como la


LCD para no tener ningn problema en la dems
arquitectura del circuito.

8. REFERENCIAS

[1] Cronometro
Figura 11. Primera visualizacin del cronmetro puesto http://www.cenam.mx/eventos/enme/docs/38%20Funcio
en cero. namiento%20y%20Tipos%20de%20cronometros%2
0[Modo%20de%20compatibilidad].pdf

6
UNIVERSIDAD POLITCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

[2] Cronmetro Funcionamiento


https://www.youtube.com/watch?v=9Vv4rbRltpc

[3] Timer0 del PIC 16F877A


http://microcontroladores-mrelberni.com/timer0-pic/

[4] Timer1 del PIC 16F877A


http://microcontroladores-mrelberni.com/timer1-pic/

[5] Timer2 del PIC 16F877A


http://microcontroladores-mrelberni.com/timer2-pic/

También podría gustarte