0% encontró este documento útil (0 votos)
119 vistas6 páginas

MICRO1 Programa 4 Interrupciones

Este documento describe dos prácticas de laboratorio sobre interrupciones con el microcontrolador PIC16F877A. La primera práctica programa una interrupción externa por el pin RB0 que cambia el estado de un LED cuando se activa la interrupción. La segunda práctica programa una interrupción por cambio de estado en los pines RB4-RB7 que cambia el estado de dos LEDs y detiene un contador cuando se activa la interrupción. El documento incluye programas de ejemplo en C y diagramas de circuitos para implementar en Proteus y en el protoboard.
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)
119 vistas6 páginas

MICRO1 Programa 4 Interrupciones

Este documento describe dos prácticas de laboratorio sobre interrupciones con el microcontrolador PIC16F877A. La primera práctica programa una interrupción externa por el pin RB0 que cambia el estado de un LED cuando se activa la interrupción. La segunda práctica programa una interrupción por cambio de estado en los pines RB4-RB7 que cambia el estado de dos LEDs y detiene un contador cuando se activa la interrupción. El documento incluye programas de ejemplo en C y diagramas de circuitos para implementar en Proteus y en el protoboard.
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

TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I

CARRERA: ELECTRÓNICA 33-400

PRACTICA Nº 4
INTERRUPCIONES CON EL PIC 16F877A

1. DEFINICION DE INTERRUPCIÓN

Una “interrupción” en un programa es como su nombre lo indica interrumpir el programa en


cualquier parte del mismo donde se ejecuta toda una rutina y subrutinas según la aplicación.
En el momento de producirse la interrupción, el PIC ejecuta un salto a la rutina de atención a
la interrupción, previamente definida por el programador, donde se atenderá a la demanda de
la interrupción

Inicio interrupción

Inicio
Entrada
s
Activación de
interrupción Procesos

Salidas
Ciclo continuo

Fin interrupción

Terminada la rutina de interrupción el programa vuelve al programa principal de donde se


provocó la interrupción y continua con la ejecución del programa.

2. SENTENCIAS DE INTERRUPCIONES

Se tienen diversos tipos de interrupciones dependiendo del tipo de microcontrolador (se


recomienda revisar la hoja técnica del microcontrolador a emplear), nosotros aplicaremos
para los ejemplos de programación los siguientes tipos:

- INTERRUPCIÓN EXTERNA POR RB0

Esta interrupción se la realiza por la entrada del pin B0, es decir por el cambio de estado de
este dependiendo de la configuración.
La directiva usada es “#INT_EXT” y se debe acompañar de las siguientes funciones:

EXT_INT_EDGE(H_TO_L); //cambio de estado de alto a bajo


EXT_INT_EDGE(L_TO_H); //cambio de estado de bajo a alto

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

ENABLE_INTERRUPTS(INT_EXT); //Habilita la interrupción RB0


ENABLE_INTERRUPTS(GLOBAL); //Habilita la interrupción de forma global

- INTERRUPCIÓN EXTERNA POR CAMBIO DE ESTADO DE RB4 – RB7

En este caso la interrupción se la realiza por cualquiera de los puertos: B4, B5, B6 o B7

La directiva usada es #INT_RB y se debe acompañar de las siguientes funciones

EXT_INT_EDGE(H_TO_L); //cambio de estado de alto a bajo


EXT_INT_EDGE(L_TO_H); //cambio de estado de bajo a alto

ENABLE_INTERRUPTS(INT_RB); //Habilita la interrupción


ENABLE_INTERRUPTS(GLOBAL); //Habilita la interrupción de forma global

3. MATERIALES
- Microcontrolador PIC 6f877a
- Resistencias, capacitores y oscilador de cristal que son parte del circuito del
microcontrolador
- Diodos Leds de iluminación
- Resistencias de protección de 330 Ω

4. DESARROLLO DE LA PRÁCTICA

Realizar el siguiente programa:

PROGRAMA 1.

Programar en el C – COMPILER el siguiente programa y luego simularlo en el PROTEUS

Llama a interrupción externa por RB0


Descripción: este programa coloca un led a la salida de la terminal B7, y va cambiar de estado
(de bajo a alto) cuando se llame a la interrupción por RB0, esta operación se va a realizar con un
pulsador; mientras no se llame a la interrupción, el programa realiza una rutina de secuencia de
luces por el puerto A
Programa:

#include <16f877a.h>
#fuses xt,nowdt
#use delay(clock=4M)
#int_ext //define interrupcion externa
void int_rb0() // nombre de la interrupcion, el void va por la precaucion
{
output_toggle(pin_b7); //al activarse la interrupcion cambia de estado b7

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

do
{ //esta instrucción hace que mientras este apretado el pin b0, se habilita
} // la interrupcion, y el pin b7 cambia de estado
while(input(pin_b0)==0);
}
void main()
{
set_tris_b(0b00000001); //configura el b0 como entrada
output_low(pin_b7); //inicializa en bajo la salida b7
port_b_pullups(true); //activa resistencia pullups de los puertos b para no colocar resistencias
enable_interrupts(int_ext); //habilita interrupcion
ext_int_edge(h_to_l); //la interrupcion se habilita cuando cambia de alto a bajo
enable_interrupts(global); //habilita interrupcion de forma global en cualquier instante del programa
while(true)
{
output_a(0b00000001); // programa principal
delay_ms(200); //mientras no haya interrupcion
output_a(0b00000011); // el programa realiza esta secuencia
delay_ms(200);
output_a(0b00000111);
delay_ms(200);
output_a(0b00001111);
delay_ms(200);
output_a(0b00000000);
delay_ms(200);
}
}
CIRCUITO EN PROTEUS

Tarea 1. Basado en el programa anterior el estudiante debe programar la secuencia de luces por
los puertos D y deben ser 5 leds, asi mismo el led que cambie de estado debe ser por el puerto
RA0, al llamar la interrupción
Ing. Javier Tarqui Valeriano
TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

Implementar en el Protoboard, con el PIC el circuito

PROGRAMA 2. INTERRUPCIÓN POR CAMBIO DE ESTADO

Llama a interrupción por cambio de estado de RB4 – RB7


Descripción: en este programa utilizaremos la otra forma de interrupción que puede realizarse
por cualquiera de 4 entradas desde RB4 hasta RB7, es decir:

 La rutina principal será un contador de 0 al 9 que tiene 4 salidas por el puerto RC0, RC1,
RC2, RC3 y que va a un decodificador BCD de 7 segmentos (74LS48) y cuya salida a
un display de 7 segmentos cátodo común

 En los puertos RB4 al RB7, se tendrá pulsadores donde al apretar cualquiera de ellos
(dejándolo en el estado bajo), se llamara a la interrupción; y al soltar el pulsador se
vuelve a la rutina normal del programa principal

 En la sub-rutina de la interrupción se tendrá dos leds que salgan por los puertos RB0 y
RB1, y cada que se llame a la interrupción estos cambiarán de estado

Programa

#include <16f877a.h>
#fuses xt,nowdt
#use delay(clock=4M)
int i;
#int_rb //define interrupcion externa por cambio de estado
//void int_rb0() // nombre de la interrupcion
{
output_toggle(pin_b0);
output_toggle(pin_b1);

do // este do while se hace solo como antirrebote


{ // cuando esta presionado el boton se llama a la interrupcion

} // al soltarlo vuelve a la rutina principal


while ((input(pin_b4)==0)||(input(pin_b5 )==0)||(input(pin_b6)==0)||(input(pin_b7 )==0));
}

void main()
{
set_tris_b(0b11110000); //configura el b7-b4 como entrada al colocar en 1
output_high(pin_b0); //inicializa en alto como salida b0
output_low(pin_b1);
port_b_pullups(true); //activa resistencia pullups de los puertos b para no colocar resistencais
enable_interrupts(int_rb); //habilita interrupcion
ext_int_edge(h_to_l); //la interrupcion se habilita cuando cambia de alto a bajo
enable_interrupts(global); //habilita interrupcion de forma global cualquier instante

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

while(true)
{
for(i=0;i<10;i++) //output_high(pin_d0); // programa principal
{
output_c(i); // esta salida d0 parpadea
delay_ms(500);
}
}
}

CIRCUITO EN PROTEUS

En base a lo descrito en las carcaterísitcas del programa, el estudiante realizará el diagrama del
circuito en PROTEUS y obtendrá la simulación

Implementar en el protoboard el circuito con el PIC

5. INFORME

Una vez concluida la práctica el o los estudiantes deben presentar en la siguiente clase el
informe de la práctica, que contenga los siguientes puntos:

 Plano o layout del circuito con empleando un software especializado como el software
“fritzing” u otro
 Listado del programa del PIC – C Compiler
 Observaciones y conclusiones
 Hoja de calculo

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

HOJA DE LABORATORIO

PRIMERA PARTE. Interrupción RB0

SIMULADOR (5%) CIRCUITO IMPLEMENTADO (12%)

SEGUNDA PARTE. Interrupción RB4 – RB7

SIMULADOR (8%) CIRCUITO IMPLEMENTADO (15%)

Integrantes del Grupo

Nombres y apellidos Practica s/45 Informe (s/15)

Firma del Docente

Ing. Javier Tarqui Valeriano

También podría gustarte