You are on page 1of 2

#include <16f877A.

h>
#fuses XT, NOPROTECT, NOWRT, NOPUT, NOWDT, NOLVP, NOCPD
#use delay (clock=4000000)
#include <lcd.c>
#use STANDARD_IO(B)
#use STANDARD_IO(D)

void main() {
int i;
char estado;
port_b_pullups(true);
output_B(0);
estado='P';
output_D(0);
LCD_INIT();
LCD_PUTC("\f");
LCD_GOTOXY(7,1);
LCD_PUTC("PARO");
do{
if((input(pin_B1)==0)&&(estado=='P')){
output_high(pin_B5);
output_low(pin_B4);
estado='I';
LCD_PUTC("\f");
LCD_GOTOXY(5,1);
LCD_PUTC("IZQUIERDA");
if(estado=='I'){
for(i=1; i<=100; i++){
delay_ms(50);
if(input(pin_B2))
break;
}
output_low(pin_B4);
output_low(pin_B5);
estado='P';
LCD_PUTC("\f");
LCD_GOTOXY(7,1);
LCD_PUTC("PARO");
if(estado=='P'){
for(i=1; i<=100; i++){
delay_ms(20);
if(input(pin_B2))
break;
}
output_high(pin_B5);
output_low(pin_B4);
estado='I';
LCD_PUTC("\f");
LCD_GOTOXY(5,1);
LCD_PUTC("IZQUIERDA");
}}}
if((input(pin_B3)==0)&&(estado=='P')){
output_low(pin_B5);
output_high(pin_B4);
estado='D';
LCD_PUTC("\f");
LCD_GOTOXY(6,1);
LCD_PUTC("DERECHA");
if(estado=='D'){
for(i=1; i<=100; i++){
delay_ms(50);
if(input(pin_B2))
break;
}
output_low(pin_B4);
output_low(pin_B5);
estado='P';
LCD_PUTC("\f");
LCD_GOTOXY(7,1);
LCD_PUTC("PARO");
if(estado=='P'){
for(i=1; i<=100; i++){
delay_ms(20);
if(input(pin_B2))
break;
}
output_high(pin_B4);
output_low(pin_B5);
estado='D';
LCD_PUTC("\f");
LCD_GOTOXY(6,1);
LCD_PUTC("DERECHA");
}}}
if(estado=='I'||estado=='D'){
for(i=1; i<=100; i++){
delay_ms(50);
if(input(pin_B2)) break;
}
output_low(pin_B4);
output_low(pin_B5);
estado='P';
LCD_PUTC("\f");
LCD_GOTOXY(7,1);
LCD_PUTC("PARO");
}}while(true);}

You might also like