You are on page 1of 5

MICROCONTROLADORES

TEMPORIZADOR PROGRAMABLE
Tatiana Leal, Cód. 1160084, Mayerly Rizo, Cód. 0160897 Yeisson Muñoz, Cód. 0160547
INTRODUCCIÓN El microcontrolador PIC16F877 posee registros especiales para múltiples aplicaciones. Entre ellos tenemos al timer TMR0 que dependiendo de su programación puede actuar como un contador de pulsos externos mediante el pin R4/T0CKI o un temporizador que cuenta los impulsos de Fosc/4 y. En el presente documento haremos énfasis al Timer TMR0 del microcontrolador PIC16F8977 conociendo de una manera sencilla y práctica la programación registro INTCON, registro OPTION, puerto PORTB, PORTC, PORTD, utilizando herramientas de simulación mediante el siguiente software: MPLAB (para el desarrollo y compilación en lenguaje de máquina del PIC) y PROTEUS (para la simulación esquemática del PIC una vez se le haya descardo el programa). Desarrollar, compilar, ejecutar y descargar el programa respectivo para encender y apagar los leds a la salida del puerto B, visualizándolo a través del software de simulación PROTEUS y mediante una implementación física del PIC16F84. MARCO TEÓRICO El registro OPTION se encuentra ubicado con el banco 1 del mapa de memoria de datos. Este registro es de configuración múltiple, aunque su misión principal es gobernar el comportamiento del timer TMR0. Al conectar la alimentación todos sus bits se ponen a ³1´ (OPTION_REG)=b¶11111111¶.
/RBPU Bit7 INTEDG Bit6 TOCS Bit5 TOSE Bit4 PSA Bit3 PS2 Bit2 PS1 Bit1 PS0 Bit0

OBJETIVOS Familiarización con el software MPLAB para el desarrollo del código fuente del microcontrolador PIC16f877. Conocer el mapa de memoria RAM del PIC16f877 para poder programar el registro STATUS, el registro OPTION, los puertos PORTA y PORTB. Programar el timer del registro OPTION para emplearlo como un temporizador de impulsos de Fosc/4, resaltando sus ventajas frente a la no implementación de este timer y utilizar interrupciones usando el registro INTCON para el desarrollo del programa del Temporizador programable .

Tabla N°1. Bits del registro OPTION_REG.  PS2-PS0 (Prescaler rate selec bits). Bits para seleccionar los valores del prescaler o rango con el que actúa el divisor de frecuencia, según la TablaN° 2.  PSA (Prescaler Assignment bit). Asignación del divisor de frecuencia. El Prescaler es compartido entre el TMR0 y el WDT; su asignación es mutuamente excluyente ya que solamente a uno de ellos se puede aplicar el divisor de frecuencia a la vez. -PSA=0, El divisor se asigna al TMR0. -PSA=1, El divisor se asigna al WDT.

Temporización= 4*Tosc*(255-TMR0)*Prescaler (1) El registro INTCON Contiene los bits para habilitar cada una de las fuentes de interrupción y las banderas que informan el origen de la interrupción. Cód. 0160897 Yeisson Muñoz. Mayerly Rizo. Cód. que se incrementa con cada pulso de entrada hasta su valor máximo b¶11111111¶. Pulsos de reloj introducidos a través del pin RA4/T0CKI (TMR0 como contador). flanco flanco PS2PS1PS0 DIV TMR0 DIV WDT 000 1:2 1:1 001 1:4 1:2 010 1:8 1:4 011 1:16 1:8 100 1:32 1:16 101 1:64 1:32 110 1:128 1:64 111 1:256 1:128 Tabla N°2. Selección del rango del divisor de frecuencia.MICROCONTROLADORES TEMPORIZADOR PROGRAMABLE Tatiana Leal. -TOCS=0. (TMR0 como temporizador). INTDEG (Interrupt edge select bit). Bits del registro INTCON. El TMR0 se inicializa con un valor. -INTEDG=1. Deshabilita las resistencias de pull-up del puerto B. Tabla N°2. -/RBPU=1. -INTEDG=0. -/RBPU=0. con el siguiente impulso de entrada el contador se desborda pasando a valer b¶00000000¶. Selector de flanco de la interrupción INT. . Selecciona la fuente de la señal TMR0. TMR0 se incrementa en cada flanco descendente de la señal aplicada al pin RA4/T0CKI. -TOCS=1. circunstancia que se advierte mediante la activación del flag TOIF del registro INTCON. -TOSE=0. Pulsos de reloj interno Fosc/4. Interrupción por descendente del pin RB0/INT. Habilitación de las resistencias de Pull-up del Puerto B. TMR0 se incrementa en cada flanco ascendente de la señal aplicada al pin RA4/T0CKI. -TOSE=1. EL TIMER 0 (TMR0) El timer se implementa por medio de un contador que determina un tiempo preciso entre el momento en que el valor es cargado y el instante en que se produce un desbordamiento. 1160084. Cód. Interrupción por ascendente del pin RB0/INT. 0160547 TOSE (TMR0 source edge select bit). TOCS (TMR0 clock source select bit). Selecciona el flanco de la señal al TMR0. Habilita las resistencias de pull-up del puerto B. GIE Bit7 EEIE Bit6 TOIF Bit5 INTF Bit4 RBIF Bit3 TOIE Bit2 INTE Bit1 RBIF Bit0 /RBPU (Resistor por pull up enable bit).

Cód. Cód. Cód. -1 = Al menos un pin cambio de estado -0 = Ningún pin ha cambiado de estado. Tiempo= 15(cuenta)*255(TMR0=0)*256(Prescaler)*1useg (2) Tiempo= 1. 1160084. NOTA: ³La programación realizada se presenta al finalizar el documento como un ANEXO. Borrar por software -0 = No se ha desbordado RBIE (RB port change interrupt enable): Habilitación de la interrupción RBI. -1 = Activada -0 = Desactivada TOIE (TMR0 interrup enable bit): Habilitación de la interrupción TOI. -1 = Activada -0 = Desactivada GIE (Global interrupt enable): Flag de habilitación global de interrupción. NOTA: ³El cálculo del tiempo se presenta mediante la siguiente ecuación2. Indica cualquier interrupción por cambio de estado en cualquiera de las líneas RB4RB7. -1 = Activada -0 = Desactivada INTF (External interrupt flag bit): Flag de estado de la interrupción externa INT. Indica que se ha producido una interrupción a través de RB0. . 0160897 Yeisson Muñoz. usando el software de programación MPLAB y el software de simulación PROTEUS. 0160547 RBIF (RB port change interrupt flag): Flag de estado de la interrupción RBI. -1 = Activada -0 = Desactivada EEIE (EEPROM write complete interrupt enable): Habilitación de la interrupción EEI. -1 = Activada -0 = Desactivada INTE (External INT enable bit): Habilitación de la interrupción externa INT. -1 = TMR0 desbordado. -1 = Ocurrió una interrupción externa -0 = No ha ocurrido interrupción externa DESARROLLO DE LA PRÁCTICA Se pide desarrollar el diseño de un programa en el cuál se enciendan y se apaguen los leds del puerto B durante 1 segundo mediante el TMR0. en el cuál se explica detalladamente los pasos referentes a cada una de las instrucciones´ A continuación se presenta el circuito eléctrico correspondiente al desarrollo de la práctica usando el software de PROTEUS.MICROCONTROLADORES TEMPORIZADOR PROGRAMABLE Tatiana Leal.045segundos.´ TOIF (TMR0 overflow interrupt flag bit): Indica que se ha producido una interrupción por desbordamiento del timer. Mayerly Rizo.

0160897 Yeisson Muñoz. Circuito esquemático del PIC16F877. Cód. empleando el TMR0 y el PIC16F877. A continuación se presenta en la figura N°2. empleando el TMR0 del PIC16F877. El diagrama de flujo correspondiente al programa realizado para el temporizador programable. Diagrama de flujo de la interrupción INTEP. figura N°3 y figura N°4. . W contendrá el valor a del número a mostrar en el 7-segmentos empleando el PIC16F877. 0160547 Figura N°1. con visualización a través de un Display 7 segmentos. Figura N°4. Diagrama de flujo del temporizador programable de un máximo de 7 durante 1 segundo. Al retorno de esta tabla. Mayerly Rizo. Figura N°2. Conteo mediante el TMR0 del PIC16F877. Figura N°3. Cód. la carta ASM del programa.MICROCONTROLADORES TEMPORIZADOR PROGRAMABLE Tatiana Leal. Cód. Diagrama de flujo de DISPLAY. diodo led y zumbador. 1160084.

LOS REGISTROS. leyendo el valor del timer en determinado momento. documento pdf. siempre es necesario estar chequeando el bit RB0- INICIO. 0160897 Yeisson Muñoz. autor desconocido. empleando el prescaler de 1:256. Palacios Enrrique. desarrollo de proyectos 2da Edición. fue necesario realizar el conteo 16 veces (ecuación N°2) para que el tiempo de conmutación de los leds fuera de 1 seg. Mayerly Rizo. Cuando se realiza el programa testeando el TMR0 mediante el registro STATUS. ya que si este no está activo no se puede realizar ninguna operación con él debido a que el conteo se realizará cada vez que ocurra la interrupción del desbordamiento del timer durante cada segundo. Ahora. La implementación del Prescaler facilita el cálculo del valor del temporizador y permite una reducción significativa de las instrucciones empleadas para realizar el retardo Existen 2 de posibilidades para realizar el TESTEO del TMR0.com/3ds/chipspic/descripin struc. http://www. Además la complejidad del mismo disminuye. 1160084. [2]. 0160547 CONCLUSIONES Debido a que el tiempo calculado mediante el TMR0. Microcontrolador PIC 16F84.MICROCONTROLADORES TEMPORIZADOR PROGRAMABLE Tatiana Leal. BIBLIOGRAFÍA [1]. MICROCONTROLADOR PIC16F84. INTRODUCCIÓN A LA PROGRAMACIÓN.hispavila. Características Generales de los PIC16F84A. . y una frecuencia de oscilación de 4MHZ es muy pequeño (ecuación N°1). Cód. Cód. debido a que el programa se reduce sustancialmente y evita el uso de mayor cantidad de memoria del microcontrolador. Eric Serra. Cód.html [3]. Remiro Fernando y López Lucas. empleando el registro INTCON en el desbordamiento del timer. realizar una operación matemática con él y registrar su resultado mediante el bit2 del registro STATUS. con un solo pulso en la entrada RB0 basta para que el programa inicie el conteo y sólo dependa el paro de la de la cuenta cuando se active el interruptor de PARO. la primera considerando el desbordamiento del timer chequeando la bandera TOIF del registro INTCON y la segunda. Se implementó una nueva función en lenguaje ensamblador como lo es el uso de tablas mediante la instrucción RETLW y el uso del registro PCL.