ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Banda con semáforo y contador


Enviado por   •  7 de Noviembre de 2014  •  Informes  •  363 Palabras (2 Páginas)  •  171 Visitas

Página 1 de 2

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;

}

}

}

...

Descargar como (para miembros actualizados) txt (2 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com