Banda con semáforo y contador
Enviado por rodolfoomar • 7 de Noviembre de 2014 • Informe • 363 Palabras (2 Páginas) • 193 Visitas
Banda con semáforo y contador
Se controlo un semáforo y un contador de cajas con una PIC16F877A, el semáforo de precaución consto de dos leds en el que cada foco prendía y se apagaba cada segundo mientras que la banda siempre se encuentra funcionamiento con un sensor conformado por un fotodiodo y un irlet, la pic espera la señal del sensor para empezar a contar y desplegarlo en una LCD.
Marco Teórico
En esta práctica lo que destaca es la utilización de interrupción externa para esto la interrupción va conectada a RB0/ INT, la señal externa para producir la interrupción en el PIC se podrá determinar por software que flanco de la señal producirá la interrupción, el de subida (cuando la señal pasa de un nivel 0 a 1) o el de bajada (cuando pasa de 1 a 0) en el código esto se puso así ext_int_edge(l_to_h) claro que antes de todo hay que declarar enable_interrupts(int_ext); para habilitarlo por último se crea la función interrupción (#int_ext) la cual va hacer la encargada de controlar el contador cuando se produzca dicha interrupción.
Código programa
#include<16F877A.H>
#Fuses XT,NOWDT,NOLVP,PUT
#Use delay(clock=4000000)
#Use fast_io (a)
#Use fast_io (b)
#Use fast_io (c)
#Use fast_io (d)
#Include <lcd.c>
int contador=0;
#bit arranque=0x05.0
#bit banda=0x07.0
#bit foco1=0x07.2
#bit foco2=0x07.1
//FUNCIONES
Inicializar_micro (){
arranque=0;
Set_tris_a (0b00000001);
setup_adc_ports(NO_ANALOGS);
foco1=0;
foco2=0;
Set_tris_c (0x00);
Set_tris_b (0b00000001);
enable_interrupts(GLOBAL);
ext_int_edge(l_to_h);
enable_interrupts(int_ext);
lcd_init();
}
#int_ext
void EXT_isr (void){
contador++;
lcd_gotoxy(1,1);
Printf (lcd_putc,"Cajas=%u",contador);
}
//PRINCIPAL
void main(){
Inicializar_micro();
While(TRUE){
if(input(pin_a0)){
output_high(pin_c0);
foco1=1;
foco2=0;
delay_ms(1000);
foco1=0; foco2=1;
delay_ms(1000);
}
else{
output_low(pin_c0);
foco1=0;
foco2=0;
Printf (lcd_putc,"\f");
contador=0;
}
}
}
...