L8 TIMER

8
CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico MICROPROCESADOR 8051 L8.- TIMER Introduccion.- ¿Que es un Timer? Un timer es un es un contador que genera una señal de salida cuando se alcanza un recuento programado. La señal de salida provoca una interrupción, (las interrupciones que estudiamos la anterior clace). Haciendo una analogia, si tenemos un programa “dormir” corriendo y al mismo tiempo que este programa dormir esta en ejecucion tenemos un “timer” un reloj que al llegar a la cuenta programada ejecutara una interrupcion al programa “dormir” (suena la alarma), despertando a la persona. De igual manera el timer en un microcontrolador se programa y se activa para que incrementando su cuenta al llegar al valor programado interrumpa al programa principal para ejecutar una accion y luego de ejecutada esa accion retorne nuevamente al programa principal. Interrupciones del Timer En el microcontrolador la direccion de la interrupcion por el timer sera: Interrupción Dirección Reset 0000 Interrupción Externa 0 0003 Timer 0 000B Interrupción Externa 1 0013 Timer 1 001B Puerto Serial Tx y Rx 0023 Timer 2 (Solo At89c52 y superiores) 002B El microcontrolador , como se ha indicado posee deacuerdo al modelo, cierta cantidad de timers, basicamente traera minimamente uno, denominado timer 0 y si tiene 2, el segundo se llamara timer 1. Cada uno de estos timer puede generar en el microcontrolador una interrupcion, y para activar dicha interrupcion se requiere primero de habilitar las interrupciones para el timer en el registro IE. En este registro se requiere activar el timer que vamos a utilizar es decir habilitar o ET0 o ET1, pero tambien se debe activar las interrupciones generalmente es decir habilitar globalmente las interrupciones , esto se hace con el bit EA del mismo registro IE, en la parte de abajo encuentra la descripcion de cada uno de los pines de este registro.

description

timer

Transcript of L8 TIMER

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    MICROPROCESADOR 8051 L8.- TIMER

    Introduccion.-

    Que es un Timer?

    Un timer es un es un contador que genera una seal de salida cuando se alcanza un recuento programado. La seal de salida provoca una interrupcin, (las interrupciones que estudiamos la anterior clace).

    Haciendo una analogia, si tenemos un programa dormir corriendo y al mismo tiempo que este programa dormir esta en ejecucion tenemos un timer un reloj que al llegar a la cuenta programada ejecutara una interrupcion al programa dormir (suena la alarma), despertando a la persona. De igual manera el timer en un microcontrolador se programa y se activa para que incrementando su cuenta al llegar al valor programado interrumpa al programa principal para ejecutar una accion y luego de ejecutada esa accion retorne nuevamente al programa principal.

    Interrupciones del Timer

    En el microcontrolador la direccion de la interrupcion por el timer sera:

    Interrupcin Direccin

    Reset 0000 Interrupcin Externa 0 0003

    Timer 0 000B Interrupcin Externa 1 0013

    Timer 1 001B Puerto Serial Tx y Rx 0023

    Timer 2 (Solo At89c52 y superiores) 002B

    El microcontrolador , como se ha indicado posee deacuerdo al modelo, cierta cantidad de timers, basicamente traera minimamente uno, denominado timer 0 y si tiene 2, el segundo se llamara timer 1.

    Cada uno de estos timer puede generar en el microcontrolador una interrupcion, y para activar dicha interrupcion se requiere primero de habilitar las interrupciones para el timer en el registro IE. En este registro se requiere activar el timer que vamos a utilizar es decir habilitar o ET0 o ET1, pero tambien se debe activar las interrupciones generalmente es decir habilitar globalmente las interrupciones , esto se hace con el bit EA del mismo registro IE, en la parte de abajo encuentra la descripcion de cada uno de los pines de este registro.

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    Configuracin del Timer

    El Timer 0 y el Timer 1 son contadores de 16 bits, el valor de estos contadores se refleja en los registros TH0 y TL0, para el Timer 0, y en los registros TH1 y TL1, para el Timer 1. El registro THx constituye el byte alto del contador y el registro TLx el byte bajo.

    El Timer 0 y el Timer 1 pueden funcionar con cuatro modos de trabajo distintos, seleccionables mediante el registro TMOD, (Timer Mode). Los modos de trabajo son:

    Modo 0, temporizador/contador de 13 bits

    Modo 1, temporizador/contador de 16 bits

    Modo 2, temporizador/contador de 8 bits con autorrecarga

    Modo 3, varios contadores.

    En la siguiente figura se muestra el esquema funcional del Timer 0 y del Timer 1, para los modos 0 y 1 de funcionamiento, con temporizador de 13 y 16 bits, respectivamente. En esta figura se resaltan, con un cuadro de puntos, dos bloques: el bloque de seleccin de temporizador/contador y el bloque de la lgica de control. Estos bloques son comunes al Timer 0 y al Timer 1 y a los modos de funcionamiento 0, 1 y 2 de los Timers.

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    El bloque de seleccin de temporizador/contador, mediante el bit /T C del registro TMOD, Timer Mode, selecciona la fuente de entrada de pulsos del Timer, que puede provenir directamente de la seal de reloj del microcontrolador dividida por 12, para /T C a 0 lgico, o de una entrada de pulsos externa a travs del terminal Tx del microcontrolador, para /T C a 1 lgico.

    El bloque de lgica de control utiliza una puerta de transmisin para dejar pasar, o no, los pulsos de reloj hacia el contador (figura 7.1). En este bloque intervienen el bit TRx, Timer Run, del registro TCON, el bit GATE del registro TMOD y el terminal de entrada /INTx, con el propsito de controlar el paso de pulsos de reloj hacia el contador, lo que a partir de este momento se definir como puesta en marcha o parada del contador. Con los bits TRx y GATE se puede poner en marcha o parar el Timer de forma directa, por software, o bien, por medio del estado lgico del terminal /INTx, por hardware

    Observando el circuito de la lgica de control, se deduce que si el bit GATE se pone a 0 lgico, en la entrada de la puerta OR, habr un 1 lgico y, por tanto, un 0 lgico en la entrada de la puerta AND; en esta situacin queda claro que la puerta est gobernada por el estado lgico del bit TRx. Entonces, si TRx vale 0 lgico, la puerta queda abierta y el Timer parado, y si TRx vale 1 lgico, la puerta queda cerrada y el Timer en marcha, y se incrementa a cada pulso de entrada. En esta situacin, con el bit GATE a 0 lgico, la puesta en marcha o la parada del Timer dependen del estado del bit TRx, y queda, en consecuencia, gobernado por software.

    Si GATE se pone a 1 lgico, a la entrada de la puerta OR, tras la puerta inversora, habr un 0 lgico; luego, el estado lgico de la puerta OR depender directamente del estado lgico del terminal /INTx. Si al mismo tiempo, el bit TRx se pone a 1 lgico, queda claro que el gobierno de la puerta de transmisin depender del terminal /INTx, que pondr en marcha el Timer cuando /INTx est a 1 lgico, y parar el Timer cuando /INTx est a 0 lgico, lo que se mencionar, a partir de ahora, como puesta en marcha o parada del contador por hardware, es decir, por el estado lgico de /INTx.

    La determinacin del modo de funcionamiento del Timer 0 y del Timer 1 se realiza con los bits M0 y M1 del registro TMOD: existen, en efecto, en este registro un par de bits para cada Timer. El contenido del registro TCON se muestra en la siguiente figura:

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    .

    Generacin de una seal peridica

    Es habitual en un sistema tener que generar seales peridicas: en el caso de la MCS-51 se pueden llevar a cabo empleando uno o varios de sus temporizadores. En este ejemplo se usa el Timer 0 en el modo 2 de 8 bits con autorrecarga, para generar una seal binaria de 5kHz de frecuencia. Para determinar el perodo de la seal se emplear el registro TH0 del Timer 0. La seal generada se extraer a travs de la patilla P1.0 del microcontrolador.

    En el programa realizado se habilita la interrupcin del Timer 0 (ET0=1, EA=1), y se configura el Timer 0 en el modo 2 de 8 bits con autorrecarga (M1=1 y M0=0, registro TMOD). La puesta en marcha del Timer 0 es por software (GATE=0, registro TMOD), el Timer 0 cuenta pulsos procedentes del reloj del microcontrolador (C/T=0, registro TMOD), y, al final de la rutina Inicio, se pone en marcha el Timer (TR0=1).

    El Timer 0 est gestionado completamente por interrupciones, de manera que cada vez que llega a desbordamiento se activa el bit TF0, TF0=1, se produce una interrupcin a la CPU y se recarga el valor del registro TH0 en el registro TL0.

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    En la rutina de atencin a la interrupcin del Timer 0, RSI_Timer0, basta con complementar el estado lgico de la patilla P1.0, para generar la frecuencia requerida. Con esta instruccin el microcontrolador lee el estado de la patilla, lo complementa (pasa de 0 lgico a 1 lgico, y viceversa) y escribe el nuevo estado en la patilla.

    El bit de rebasamiento se activa con la peticin de interrupcin y se borra, de forma automtica, cuando la CPU atiende a la interrupcin ejecutando la rutina RSI_Timer0.

    Calculo de Timer

    Para determinar el valor de recarga del registro TH0, se debe considerar que el perodo necesario para generar frecuencia de 5 kHz es de 200 s, por lo que la patilla P1.0 se debe complementar cada 100s, es decir, la mitad del perodo. Adems, desde que se produce la interrupcin hasta que se vectoriza la interrupcin del Timer 0, transcurren tres ciclos mquina en el mejor de los casos, y la instruccin CPL P1.0 se ejecuta en un ciclo mquina. Por tanto, el estado lgico de la patilla P1.0 cambiar, al menos, cuatro ciclos mquina despus de que se halla activado el bit TF0.

    La frmula para este caso ser la siguiente:

    TH0 = 1*valor 256

    Donde 1 se dar en caso de que el cristal sea nicamente 12Mhz.

    Para lo que valor ser el tiempo en el cual el timer interrumpe al microcontrolador, es decir para un tiempo de 100s se tendr:

    TH0 = 1*100s 256

    TH0 = 156

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    HARDWARE:

    SOFTWARE:

    ORG 0000H AJMP Principal ;---- Interrupcion Externa 0 ORG 0003H RETI ;---- Timer 0 ORG 000BH call int_timer0 reti

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    ;---- Interrupcion Externa 1 ORG 0013H reti ;---- Timer 1 ORG 001BH reti ;---- Puerto Serial Tx y Rx ORG 0023H reti ;---- Timer 2 ORG 002BH reti ORG 0050h int_timer0: CPL P2.0 ;Complementa P1.0. Pasa de 1 a 0, y de 0 a 1 RET ;Fin de rutina. El bit TF0 se borra automticamente ;------Programa principal Principal: setb ET0 ;habilitar interrupcion del timer 0 setb EA ;habilitar la interrupcion general mov TMOD,#02H ;M1=1 y M0=0 (Modo 2), GATE=0 y C/T=0 del Timer 0 MOV TL0, #156 ;Pone valor 156 en TL0 (256-100) MOV TH0, #156 ;Pone valor de recarga en TH0 (256-100) SETB TR0 ;Pone marcha el contador ;*************************************************************** ; Rutina de Principal ;*************************************************************** bucle: SJMP bucle ;Bucle infinito sin una tarea concreta end

    Laboratorio:

    Generar una onda cuadrada en el pin p2.7, con una frecuencia de 10 Khz con el Timer 1. Generar con el timer el parpadeo en un led, cada segundo, imitando el pulso de un reloj digital : .

  • CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

    Cuestionario.-

    1.- Cual es la direccion de interrupcion del timer cero y el timer 1 en el vector de interrupciones.

    2.- Enumere y describa los modos de trabajo del timer.

    3.- Describa la funcion del registro IE y TMOD, y como se utilizan para configurar el timer.

    4.- Realice un programa para simular un reloj con horas y minutos de 00:00 a 23:59, en displays de 7 segmentos, utilizando el timer.

    Puede descargar los dems laboratorios y guas de la siguiente pagina web https://sites.google.com/site/cursodemicrocontroladores8051/