0% encontró este documento útil (0 votos)
927 vistas8 páginas

Laboratorio de Microcontroladores

Este documento presenta dos experiencias de laboratorio sobre el uso del timer 0 en un PIC16F877A. La primera experiencia genera una interrupción cada segundo usando el timer 0 para cambiar el estado de un LED y mostrar el tiempo en un LCD. La segunda muestra un reloj MM:SS en el LCD usando el timer 0 para la temporización de 1 segundo. Se pide como reto programar un temporizador regresivo que pueda configurarse y contar hacia atrás hasta 00:00, cuando sonará un bip 3 veces.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
927 vistas8 páginas

Laboratorio de Microcontroladores

Este documento presenta dos experiencias de laboratorio sobre el uso del timer 0 en un PIC16F877A. La primera experiencia genera una interrupción cada segundo usando el timer 0 para cambiar el estado de un LED y mostrar el tiempo en un LCD. La segunda muestra un reloj MM:SS en el LCD usando el timer 0 para la temporización de 1 segundo. Se pide como reto programar un temporizador regresivo que pueda configurarse y contar hacia atrás hasta 00:00, cuando sonará un bip 3 veces.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Nro.

LABORATORIO MICROCONTROLADORES
Página 1 de 8

MICROCONTROLADORES

LABORATORIO N° 10

Timer e Interrupciones

Participantes(s)

Foto:

Nova Rosas Arhuire Huamani Muñante Vega


Nombres:
Diego Yilbert Jorge
%
34 35 31
participación:
Grupo B
Ciclo 4C5 Electrónica y Automatización – Microcontroladores
Fecha de entrega 18/06/2021
Nro.
LABORATORIO MICROCONTROLADORES
Página 2 de 8

I. COMPETENCIAS ESPECÍFICAS DE LA SESIÓN


• Usar adecuadamente el software y las instrucciones del programa.
• Conocer el funcionamiento y la configuración del Timer 0.
• Programar el Módulo Timer 0 y aplicaciones prácticas.

II. CONTENIDOS A TRATAR


• Instrucciones, módulos internos del microcontrolador, entradas y salidas
• Configuración y utilización de módulo Timer 0.

III. MATERIALES Y EQUIPO


• CCS Compiler instalado.
• Entrenador de PICS
• PIC16F877A
• PC con Software de simulación.

IV. FUNDAMENTO TEÓRICO


• Para la realización de este laboratorio se requiere haber realizado y aprobado la EVALUACIÓN
DE LA FASE ASÍNCRONA
• La lectura previa de la información proporcionada para el curso, como el texto y el manual del
fabricante.
• Revise la bibliografía recomendada en la FASE ASÍNCRONA.

V. SEGURIDAD EN LA EJECUCIÓN DEL LABORATORIO

Tener cuidado con el tipo y niveles de voltaje con los


que trabaja.

Antes de utilizar el multímetro, asegurarse que está


en el rango y magnitud eléctrica adecuada.

Tener cuidado en la conexión y en la desconexión


de los equipos utilizados
Nro.
LABORATORIO MICROCONTROLADORES
Página 3 de 8

VI. EXPERIENCIA 1 – EXPERIENCIA # 1: GENERAR TEMPORIZADOR DE 1 SEGUNDO CON


TIMER 0

1. Vamos a realizar un programa que genere una interrupción por desbordamiento del Timer
cada segundo. La función de interrupción cambiará el estado de una salida conectada a un
Led y al mismo tiempo incrementará el valor de una variable. Este valor se mostrará en un
display LCD.

2. El código a utilizar se muestra en la imagen respectiva, además se hace un paralelo con su


respectivo PSEUDOCÓDIGO:

Directivas

Declaración de variables

Función de Interrupción por


Desbordamiento del Timer 0

Se incrementan las
centésimas, si llegan a 100
(un segundo), se cambia el
estado de la salida B1 y se
incrementa valor.
Se reinicia cuenta del Timer
0 desde el número 61
FUNCIÓN PRINCIPAL:
Se inicializa LCD
Se configura TIMER0 como
Temporizador y
PREESCALER de 256. Se
escribe 61 en Timer
Se habilita interrupción del
Timer y Global.
Se envía mensaje inicial

BUCLE INFINITO:
Se envía valor de variable a
pantalla LCD.
Nro.
LABORATORIO MICROCONTROLADORES
Página 4 de 8

3. Como EVIDENCIA, capturamos la pantalla de PROTEUS mostrando la ventana PIC CPU


Source Code: (incluir NOMBRES DE LOS INTEGRANTES).:

VII. EXPERIENCIA 2 – RELOJ MM:SS UTILIZANDO EL TIMER 0

1. Esta vez vamos a mostrar en la pantalla LCD un RELOJ de minutos – segundos, cuya
temporización de 1 segundo (base de tiempo) será generada por el Timer 0.

4. El código a utilizar se muestra en la imagen respectiva, además se hace un paralelo con su


respectivo PSEUDOCÓDIGO:
Nro.
LABORATORIO MICROCONTROLADORES
Página 5 de 8

(mismas Directivas anteriores)


Declaración de variables
FUNCIÓN INTERRUPCIÓN
TIMER0
Se incrementa centésimas
Si llega a 100 (1 segundo), se
incrementa segundos y se reinicia
centésimas en 0.
Si segundos llega a 60, se
incrementa minutos y se reinicia los
segundos.
Si se cumples 3 minutos con 10
segundos, se deshabilita Timer0 y
se activa PIN C5.
Se reinicia cuenta de Timer0 desde
61.

FUNCIÓN PRINCIPAL:
Inicialización de LCD
Se configura Timer 0 como
TEMPORIZADOR y con un
PREESCALER de 256.
Se inicia cuenta desde 61
Se habilita Interrupción de Timer 0
y la interrupción Global.
Se envía mensaje inicial
BUCLE INFINITO:
Mostramos minutos y segundos en
el LCD

5. Como EVIDENCIA, capturamos la pantalla de PROTEUS mostrando la ventana PIC CPU


Source Code: (incluir NOMBRES DE LOS INTEGRANTES).:
Nro.
LABORATORIO MICROCONTROLADORES
Página 6 de 8

VIII. RETO DE PROGRAMACIÓN:

1. A partir del código mostrado, realice los cambios necesarios para realizar un programa que
CUENTE EN FORMA DESCENDENTE, (temporizador regresivo), bajo las siguientes
condiciones:

• Al presionar pulsador en E0, incrementar MINUTOS. el temporizador aún no debe estar


contando el tiempo. (sirve para configurar tiempo de cuenta).

• Al presionar pulsador en E1, iniciar CUENTA REGRESIVA desde los minutos previamente
configurados.

• Si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces.

• Para verificar que una variable de tiempo (digamos “minutos”) llegó a cero, hacerlo con la
instrucción “if (minutos==-1)”

Video demostrativo: https://www.loom.com/share/e445a2ce645f40bb943bbe535ab23dd2

2. Como EVIDENCIA 1, grabe un video de su simulación en PROTEUS utilizando la aplicación


LOOM o YOUTUBE y coloque el LINK en el recuadro siguiente. En la simulación debe
visualizarse los nombres de los integrantes claramente. El video NO debe durar más de 2
minutos.

https://youtu.be/BJ1-HFBkLfc

3. Como EVIDENCIA 2, pegue en el recuadro siguiente el CÓDIGO EN MODO TEXTO:

//Integrantes:
//-Arhuire Huamani Yilbert
//-Muñante Vega Jorge
//-Nova Rosas Diego
Nro.
LABORATORIO MICROCONTROLADORES
Página 7 de 8

#include <16f877a.h> // Incluimos archivo con el PIC a utilizar


#use delay (clock=20M) // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles
#INCLUDE <lcd.c> // Incluimos librería para manejar pantalla LCD

int centesimas=0;
int segundos=0;
int minutos=0 ;

#INT_TIMER0 // FUNCIÓN DE INTERRUPCIÓN POR


void TIMER (VOID) // DESBORDAMIENTO DEL TIMER 0
{
--centesimas; // disminuir centésima
if(centesimas==000)
{
--segundos; // si llegamos a 000 dismuir un segundo
centesimas=100;
}
if(segundos <1)
{
--minutos; // si llegamos a 0 disminuir un minuto
segundos=59;
}
if (minutos==-1 && segundos==59) // Si llegamos a 00:00 hacer alguna acción
{
minutos=0;
segundos=0;

disable_interrupts (INT_TIMER0); // habilita interrupción de timer0


output_high(PIN_C5); // agregar cualquier otra acción necesaria
delay_ms(600);
output_low(PIN_C5);
delay_ms(600);
output_high(PIN_C5);
delay_ms(600);
output_low(PIN_C5);
delay_ms(600);
output_high(PIN_C5);
delay_ms(600);
output_low(PIN_C5);
delay_ms(600);
}
set_timer0(61);
}

void main ()
{
lcd_init(); // Incializamos pantalla LCD
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // Configuración del timer0
set_timer0(61); //Reinicia cuenta desde 61
printf(lcd_putc,"\fTEMPORIZADOR..."); // Mostramos mensaje

WHILE (true)
{
lcd_gotoxy(1,2);
printf(lcd_putc,"Tiempo %02u:%02u hrs",minutos,segundos);

if(!input(PIN_E0)) // si presionamos E0
Nro.
LABORATORIO MICROCONTROLADORES
Página 8 de 8

{
++minutos; // incrementar minuto
delay_ms(500);
}
if (!input(PIN_E1)) // Si presionamos E1
{
enable_interrupts (INT_TIMER0); // habilita interrupción de timer0
enable_interrupts (GLOBAL); // todas las interrupciones activadas
}
}
}

IX. OBSERVACIONES Y CONCLUSIONES: (Deben estar convenientemente redactadas)

OBSERVACIONES:

• En la experiencia 1 se logró observar un temporizador de un timer0 de 1 segundo


donde un led cada segundo que transcurre se enciende y se apaga.

• En la experiencia 2 se pudo observar que se estableció un tiempo de 3 minutos y 10


segundos para que nuestro temporizador se detenga y realice una acción a través
del sonido de una alarma.

• Atraves del reto de programación se observó que el objetivo de dicha experiencia es


modificar lo visto en la experiencia 2 para obtener un temporizador en cuenta
descendente (cuenta regresiva).

• Se pudo observar que el timer 0 en modo temporizador la velocidad de cuenta


depende de la frecuencia del oscilador del PIC.

CONCLUSIONES:

• Podemos concluir en la experiencia 1, temporizador de 1 segundo con timer 0 que


fue importante tener claro que cuando la variable centésima llega a 100 ya se ha
transcurrido 1 segundo, a partir de ahí se logro realizar la acción de encendido y
apagado de un led cada segundo que transcurre.

• Podemos concluir de la experiencia 2, reloj de minutos y segundos utilizando un timer


0, que se puede trabajar con mas variables como horas, días, semanas, etc.

• En cuanto al reto de programación se concluye que a través de la programación y


funcionamiento realizado se deduce que esta aplicación es vista claramente en
nuestra vida cotidiana como por ejemplo al usar un horno microondas.

• De acuerdo a lo realizado se concluye que el timer 0 en modo temporizador su


velocidad de cuenta va depender mucho de la frecuencia del oscilador del PIC, en
este caso como ejemplo se hizo uso de 20Mhz para nuestras experiencias.

LABORATORIO MICROCONTROLADORES 
Nro.  
Página 1 de 8 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Participantes(s) 
Fot
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 2 de 8 
 
 
 
I. COMPETENCIAS ESPECÍFICAS DE LA SESIÓN 
• 
Usar adecuadamente
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 3 de 8 
 
 
VI. 
EXPERIENCIA 1 – EXPERIENCIA # 1: GENERAR TEMPORIZADOR DE 1 S
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 4 de 8 
 
 
3. Como EVIDENCIA, capturamos la pantalla de PROTEUS mostrando la
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 5 de 8 
 
 
 
(mismas Directivas anteriores) 
Declaración de variables 
FUNCI
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 6 de 8 
 
 
VIII. 
RETO DE PROGRAMACIÓN:  
 
1. A partir del código mostrado,
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 7 de 8 
 
 
#include <16f877a.h>           // Incluimos archivo con el PIC a
LABORATORIO MICROCONTROLADORES 
Nro.  
Página 8 de 8 
 
 
             {  
             ++minutos;        // incrementar mi

También podría gustarte