You are on page 1of 6

UNIVERSIDAD DE LAS FUERZAS ARMADAS

ESPE-L
CARRERA DE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC

INFORME
NOMBRES:
BYRON ARIAS
MALDONADO EDISON
ROBERTH ORTIZ
NIVEL:

6TO AUTOMOTRIZ

FECHA DE REALIZACION: 30/07/2016


FECHA DE ENTREGA:

31/07/2016

TEMA:
Interrupcin y Temporizador

OBJETIVO GENERAL
Realizar ejercicios con el manejo de interrupciones y temporizadores.

OBJETIVOS ESPECIFICOS

Comprender el funcionamiento de las interrupciones externas.

Realizar ejercicios
temporizadores.

Determinar funcionamiento y programacin para realizar un programa a base


de temporizadores.

en

el

software

logos

de

las

interrupciones

1 Ejercicios
Contador Led 5-9

Lneas de Programacin
#include <18f4550.h> //Librera para usar el PIC18F4550.
#fuses HS, NOPROTECT, NOWRT, NOWDT, NOLVP, NOMCLR
//Configuracin de fusibles.
#use delay (clock=12000000) //FOSC =12MHz.
#use standard_io(B) //Usa librera estndar para el puerto B
#use standard_io(D) //Usa librera estndar para el puerto B
#byte port_b= 0xF81
#byte port_d= 0xF83
int num=1;//variable usada para seleccionar lso valores de 0 a 9
const int cont[]= {64,121,36,48,25,18,2,120,0,16};//Datos decodificados del
0 al 6.
void antirebote(){//funcion antirebote
while(input(PIN_B1)==0){}
}
#int_ext1
//Activa la interrupcin externa RB0.
void PortB_Imterrupt(void) //Nombre de la interrupcin.
{
ext_int_edge(H_TO_L); //Detecta el cambio de estado de RB0 en el flanco
negativo.
if(num>=0&&num<=9){//condicion para iniciar la cuenta de 0 a 9
port_d=cont[num];//imprime en el diplay el valor del numero seleccionado
num++;//incrementa el valor de num en uno
if(num>=5&&num<=10){//condicion para encender el LED de cuando el
contador est de 5 a 9
output_high(PIN_D7);//enciende el LED
}else{

output_low(PIN_D7);//apaga el LED si no se cumple la condicion


}
antirebote(); //llama a la funcion antirebote
}
if(num>=10){//cuando el contador llega a 9 reinici el valor de pocision de
num
num=0;
}
}
void main(void) //Funcin principal main
{
set_tris_b(0b00000010); //Fija el puerto RB1 como entrada y el resto como
salida.
set_tris_d(0b00000000);////Fija el puerto D como salida
enable_interrupts(GLOBAL); //Habilitacin de todas(GLOBAL) las
interrupciones.
enable_interrupts(INT_EXT1); //Habilita la interrupcin externa RB0.
port_d=64;//inicia el valor del dado a 0
while (TRUE){//inicio del bucle infinito
}//cierre del bucle infinito

Simulacin en el Programa Proteus

Interrupcin TMR0
Lneas de Programacin
#include <18f4550.h> //Librera para usar el PIC18F4550.
#fuses XT, NOPROTECT, NOWRT, NOPUT, NOWDT, NOLVP, NOCPD
//Configuracin de fusibles.
#use delay (clock=4000000) //FOSC = 4 MHz.
int contador; //Variable para el contador.
#use fast_io(d) //Define el Puerto D para respuesta rpida.
#int_Timer0 //Interrupcin int_Timer0.
void DesbordeTimer0() //Funcin interrupcin.
{
contador = contador +1; //contador se incrementa en 1.
if (contador == 16){
output_bit(PIN_D0,!input(PIN_D0)); //Cada 16 interrupciones cambia de
valor
contador=0;
}
set_timer0(12); //Fija el TMR0 en 12.
}
main(void) //Funcin principal main.
{
contador =0; //Contador= 0,
output_d(0x00);
set_tris_d(0x00);
setup_timer_0(rtcc_div_256|rtcc_internal|rtcc_8_bit); //pre-escalar a 256,
//TMR0 interno con 8 bits.
set_timer0(12); //Fija el TMR0 en 12.
enable_interrupts( int_timer0 ); //Habilita la interrupcin TMR0.
enable_interrupts( global ); //Habilitacin global de las interrupciones.
while(true) { //Bucle infinito
// Aqu incluir instrucciones para el programa
} //Fin del bucle.
} //Fin del main.

Simulacin en Proteus

2 Bibliografa
Kaftan, J. (2010). PLC-Curso Basico. Madrid: Vogel.
Katsen, S. (2010). Essential PIC18 Microcontroller. Series Editor.
Shenouda, D. (2010). Sistemas Digitales - Uso de Microcontroladores. Osaka:
River Publishers.

3 Anexos

4 Bases digitales

You might also like