You are on page 1of 7

UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I

Fecha: 30/01/2017

MANEJO DE TEMPORIZADORES PARA LA IMPLEMENTACION DE UN
CRONÓMETRO

INFORME N°9

1.- Caiza Quishpe Paul Segundo
scaizap@est.ups.edu.ec
2.- Cóndor 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. MARCOTEÓRICO
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
operación de los temporizadores para generar bases de
→ Un temporizador o minutero es un dispositivo, con
tiempo, a través de la implementación de un cronometro
frecuencia programable, que permite medir el tiempo. La
convencional (minutos: segundos: milisegundos).
primera generación fueron los relojes de arena, que
fueron sustituidos por relojes convencionales y más tarde
por un dispositivo íntegramente electrónico. 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 función 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 algún 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 operación 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

timer se desborde 256 veces (FFh*FFh). 1:8 hasta 1:256  Uso de las interrupciones del timer cada desbordamiento  Transiciones.USO DEL TIMER 1 DEL PIC 16F877A.. 1:4. lo que provocará que el registro TMR1 aumente en una unidad. → En el programa presentado hoy. Para trabajar con este Timer hay varios parámetros de configuración como lo son (abajo):  Fuente de conteo o tiempo. sino que lo hará mediante el flanco de es complementaria por ser simétrica una de la otra. pero cada vez que hay interrupción → Cuando es utilizado como contador el temporizador del timer. interna o externa  Prescaler 1:2. la señal que ingresa por el pin T1CKI se genera con la ayuda de un fotorresistor. el programa ASM lo encuentras aquí.. [4] 2 . y el HEX está más abajo. ¿cómo se logra? pin15 o RC0. pero siempre se llamará T1CKI. se observa que transcurrido 100us. 1:256. 2. subida o el flanco de bajada de alguna señal que llegue a un pin especial del PIC conectado al timer1 PIC. (0 a 1) o (1 a 0) Figura 3. entonces el registro Software para evitar falsos disparos de rutina.3. TMR1 aumentará en una unidad cada 1us. eso se microcontrolador PIC es realizado en 4 ciclos de reloj. [2] EJEMPLO → El circuito utilizado es el que se muestra en la siguiente imagen. microcontrolador PIC utilizado. cada vez que el fotorresistor disminuya su valor al pin T1CKI le llegará un alto. → El Timer cero del Microcontrolador 16F877A. esto es un flanco de subida.-Diagrama de bloques del Timer1 como temporizador. → El prescaler es como un contador más. con lo que en cada flanco de subida se incremente el valor del registro TMR1. este pin → La función de la interrupción externa es simplemente es identificado como T1CKI que en el PIC16F877A es el cambiar la velocidad del conteo.1.USO DEL TIMER 0 DEL PIC 16F877A. de esa manera se crea una forma de onda y 4 ciclos de reloj. se empezará con los leds del puerto b totalmente apagados.Temporizador/Contador de 8-bit. sus valores de interrupción la del timer y la interrupción 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. estaríamos hablando de una interrupción cada vez que el → El timer1 PIC es un temporizador contador de 16 bits. se verá de forma indirecta los valores del timer1.. se usan dos fuentes cuando es utilizado como temporizador. si el registro TMR1 se incrementa en 100 unidades habrán → En la etiqueta INICIO del programa.3. esto puede variar de acuerdo al cambiando el prescaler del Timer 0. es donde se guardan los valores del timer1 PIC. 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. el led se hará Figura 2. parpadear cada 20ms. simplemente siempre está poniendo en 1 y en 0 a dos pines del Puerto B. por logra comparando las banderas de cada interrupción.. de FFh a 00h. la cuenta del timer1 PIC irá desde 0 hasta 65535. se hará que cada vez que el timer1 aumente en 8000 unidades se encienda un led del puerto b. es un Temporizador/Contador de 8-bit. es decir si no usáramos prescaler la interrupción o desbordamiento del timer tiene lugar cada vez que el registro de conteo pase 2.2. [3] → En el video de arriba se puede observar el cambio de velocidad al presionar el SW de interrupción. el registro TMR1 es el temporizador contador timer1 PIC en sí. ejemplo si el oscilador con el que está funcionando el Adicionalmente las banderas deben ser borradas en microcontrolador PIC es de 4MHz. Pero con el uso de prescaler a por ej.TIMER1 PIC COMO CONTADORE → Este es el Esquemático. → Se utilizará un led más 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 llegarán al pin T1CKI. no olvidar que cada ciclo de instrucción del adecuada para cada una de las interrupciones.UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I Fecha: 30/01/2017 2.

Los bits de 6 al 3 mediante las combinaciones de estos bits se elige el postcaler. 3..Los bits 1 y 0 mediante las combinaciones de estos bits se elige el prescaler. obtener los diferentes valores de los prescaler y el postcale para el timer2 PIC.. 2.. el poscaler puede tener los valores del 1 al 16..UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I Fecha: 30/01/2017 Figura 4. 2.USO DEL TIMER 2 DEL PIC 16F877A.Valores que hay que dar a estos bits para T1CKI.El bit2 al poner este bit a 1 se habilita el uso del timer2 PIC. Lo más importante y esencial de las funciones de un reloj común es proporcionar la hora. 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.. 3 .. si se pone a 0 el timer2 PIC estará deshabilitado. reloj de bolsillo. conoce como prescaler y también con un postcaler pero el postcaler solo hace su trabajo cuando el timer2 PIC es  Es un reloj o una función de reloj que sirve para utilizado con interrupciones esto se ve en la sección de medir fracciones de tiempo. y que conectado a un dispositivo su valor en una unidad. reloj de salón ó pared. [4] lo pone en acción. 4 y 16 Figura 7. 4. [1] → Por ahora se comentará como utilizar tanto el prescaler Temporizador: como el postcaler..5.Circuito de señal que ingresa por el pin Figura 6.4.CRONOMETRO Timer2 PIC como temporizador T2CON es el registro de control del timer2 PIC  La palabra cronómetro proviene de la mitología griega.El bit7 no se utiliza por lo que se le pone a 0. 2. normalmente cortos interrupciones con el PIC.Control de registro del Timer2..Cronometro digital armado en placa.. 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 más momentos temporizador timer2 PIC tarde un poco más en aumentar determinados. [1] Reloj:  Se denomina reloj a un instrumento que permite medir el tiempo. Existen diversos por Ejemplo: Reloj de pulso.. 1. el prescaler puede tener los valores del 1. [1] Figura 5. y con exactitud.

MATERIALES Y EQUIPO 3. 3.2.  Mandil. DESARROLLO Y PROCEDIMIENTO MARCO PROCENDENCIAL: 4.  Resistencias de 330Ω  1 Capacitor de 10uF  4 Pulsador. Circuito simulado en el software proteus del cronometro.1.  Tarjeta Programadora de Pic`s.EQUIPO DE PROTECCION.h> Botón 1.  Software Proteus.Diseñe el diagrama electrónico para cumplir con el primer enunciado propuesto. cronometro segundos y minutos en la siguiente posición (minutos.1. Diagrama de flujo del programa de un Realizar un cronometro el cual conste de milisegundos.2. milisegundos) en la segunda línea de la LCD.3.MATERIALES PARA LA IMPLEMENTACION DE LOS CIRCUITOS.Inicio/Reinicio #fuses XT. cuales son: #include <16F877a. 4.1. Enunciado 1: Figura 7.  Mesa de Trabajo.EQUIPO DEL LABORATORIO.. 4.UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I Fecha: 30/01/2017 3...  Computadora. cumpliendo al pie de la letra lo allí solicitado..  Cristal 4MHz  2 Capacitores (22Pf)  Diodos de propósito general.. segundos.Reseteo #use standard_io(B) #define LCD_ENABLE_PIN PIN_D0 #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 4 .1.Pausa #use delay(clock=4M) Botón 3..Realice el diagrama de flujo para el algoritmo que  PIC16F877A implementará para el enunciado 1 “CRONOMETRO”. para cumplir “CRONOMETRO”. Además se tiene 3 pulsadores los con el enunciado 1 “CRONOMETRO”.Desarrolle en el compilador C la programación La primera línea de la LCD tiene que visualizar la palabra necesaria en base de su diagrama de flujo..  Protoboard.  LCD(2x16)  Fuente DC(5V)  Potenciómetro de 100k Ω  Cables de conexiones. 4.  Software PIC C.NOWDT Botón 2..1. Figura 6. 3..3.

min).2). lcd_gotoxy(7. a=get_timer1()*0. printf(lcd_putc. }} i=0. }else{ } cont++. seg++. printf(lcd_putc. while(1){ printf(lcd_putc.":%Lu ". } min=0.2)."CRONOMETRO"). #define LCD_DATA5 PIN_D5 while(comp==1){ #define LCD_DATA6 PIN_D6 set_timer1(15536). lcd_gotoxy(11. lcd_gotoxy(5.} if(input(PIN_B6)==0){ set_timer1(15536). } /////////////////fin///////////////// if(input(PIN_B4)==0){ i=1. comp1=0. printf(lcd_putc.":%Lu ".c> enable_interrupts(global). microcontrolador y realice las pruebas de funcionamiento lcd_gotoxy(4. printf(lcd_putc. comp=0."%u ". lcd_gotoxy(4. #INT_TIMER1 printf(lcd_putc.001525. lcd_gotoxy(5.UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I Fecha: 30/01/2017 #define LCD_DATA4 PIN_D4 comp1=1. printf(lcd_putc."%u ". y=1. int cont=0."CRONOMETRO").2). printf(lcd_putc.2). lcd_gotoxy(5. void main(){ y=1. lcd_init(). }} comp1=0. lcd_gotoxy(11. printf(lcd_putc. lcd_gotoxy(11. a=0.2).2). min=0.":%u ". comp=0."%u ".seg). cont=0.comp1. seg=0.1.y=0. printf(lcd_putc. min=0. if(min==60){ if(input(PIN_B5)==0){ seg=0.min).2). lcd_gotoxy(7. void TIMER1_isr(void){ lcd_gotoxy(5.1). if(y==0){ printf(lcd_putc.":%u ".min). seg=0. Figura 8.min).":%u ". }} comp1=0.2). printf(lcd_putc.1). a=0. 4."CRONOMETRO").as=0.1).4.Arme el circuito electrónico diseñado. if(seg==60){ lcd_gotoxy(11."CRONOMETRO"). #define LCD_DATA7 PIN_D7 enable_interrupts(INT_TIMER1).a).min=0. del “CRONOMETRO”. if(cont==1){ lcd_gotoxy(7.a). }}} y=1.comp.c=0. printf(lcd_putc.i=0.seg).b=0. //////////reset////////////////// printf(lcd_putc.":%Lu ".":%u ". comp=1. if(input(PIN_B6)==0){ //////////////////////////////////// comp=0.2). seg=0.a). 5 . printf(lcd_putc. programe su i=0. #include <lcd.2). lcd_gotoxy(4."%u ". } if(i==1){ y=0. lcd_gotoxy(4. min++.2). ////////////////////////////////// lcd_gotoxy(7.2).seg).a).seg=0. i=0. printf(lcd_putc.seg). Circuito implementado del CRONOMETRO..":%Lu ". setup_timer_1(T1_INTERNAL|T1_DIV_BY_8). while(comp1==1){ int32 a=0.1).

RECOMENDACIONES.  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. 8. pueden funcionar como contadores o temporizadores los cuales nos ayudan a generar bases de tiempo. Circuito implementado del cronometro.  Mediante la práctica se logró aprender que el PIC 16F877A consta de 3 TIMER (timer0.cenam. 5. 6. Timer1. CONCLUSIONES  Por medio de la práctica realizada pudimos observar el proceso que toma el manejo de los Figura 9. REFERENCIAS [1] Cronometro Figura 11.UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I Fecha: 30/01/2017 5. Primera visualización del cronómetro puesto http://www.mx/eventos/enme/docs/38%20Funcio en cero.pdf 6 .  Al instante de la implementación de los circuitos tomar muy en cuenta si los pulsadores están conectados para enviar un 1L ó 0L ya que esto influye en la programación.1.Botones de mando para el “CRONOMETRO”. 7. Figura 12. para poder implementar un reloj o también un cronometro. Figura 10. Circuito implementado de los botones de temporizadores del PIC 16F877A los cuales mando (Inicio/Reinicio-Pausa-Reseteo). 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 implementación del cronometro se tuvo cuidado con este tipo de capacidad para que no genere errores en el conteo del cronometro. namiento%20y%20Tipos%20de%20cronometros%2 0[Modo%20de%20compatibilidad].  Polarizar de forma correcta el PIC así como la LCD para no tener ningún problema en la demás arquitectura del circuito.. ANÁLISIS Y RESULTADOS. Cronómetro puesto en marcha.

com/timer1-pic/ [5] Timer2 del PIC 16F877A http://microcontroladores-mrelberni.com/timer2-pic/ 7 .youtube.com/timer0-pic/ [4] Timer1 del PIC 16F877A http://microcontroladores-mrelberni.com/watch?v=9Vv4rbRltpc [3] Timer0 del PIC 16F877A http://microcontroladores-mrelberni.UNIVERSIDAD POLITÉCNICA SALESIANA LABORATORIO DE SISTEMAS MICROPROCESADOS I Fecha: 30/01/2017 [2] Cronómetro Funcionamiento https://www.