Soy nuevo en esto, realice una placa de un coche rastreador de lineas negras de 8 sensores por el proteus y luego programe el programa c en el programa pic c compiler pero me daba error, me gustaria que corrigierais el error o una alternativa al programa.
Gracias y saludos.
Gracias y saludos.
Código (c) [Seleccionar]
////////Coche rastreador//////////
//Características del microcontrolador
#include <16F873.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#define NEGRO 0
#define BLANCO 1
#define S1 input(pin_A5)
#define S2 input(pin_A4)
#define S3 input(pin_A3)
#define S4 input(pin_A2)
#define S5 input(pin_A1)
#define S6 input(pin_A0)
#define S7 input(pin_B7)
#define S8 input(pin_B6)
void derecha()
{
output_low(pin_B3); //Motor derecho 1
output_high(pin_B4); //Motor derecho 2
output_high(pin_B1); //Motor izquierdo1
output_low(pin_B2); //Motor izquierdo 2
}
void izquierda()
{
output_high(pin_B3); //Motor derecho 1
output_low(pin_B4); //Motor derecho 2
output_low(pin_B1); //Motor izquierdo1
output_high(pin_B2); //Motor izquierdo 2
}
void recto()
{
output_high(pin_B3); //Motor derecho 1
output_low(pin_B4); //Motor derecho 2
output_high(pin_B1); //Motor izquierdo1
output_low(pin_B2); //Motor izquierdo 2
}
void parado()
{
output_low(pin_B3); //Motor derecho 1
output_low(pin_B4); //Motor derecho 2
output_low(pin_B1); //Motor izquierdo1
output_low(pin_B2); //Motor izquierdo 2
void main()
{
int estado=0;
while (1)
{
if(S1==NEGRO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=1;
}
if(S1==BLANCO&&S2==NEGRO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=2;
}
if(S1==BLANCO&&S2==BLANCO&&S3==NEGRO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=3;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==NEGRO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=4;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==NEGRO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=5;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==NEGRO&&S7==BLANCO&&S8==BLANCO)
{
estado=6;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==NEGRO&&S8==BLANCO)
{
estado=7;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==NEGRO)
{
estado=8;
}
if(S1==NEGRO&&S2==NEGRO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=9;
}
if(S1==BLANCO&&S2==NEGRO&&S3==NEGRO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=10;
}
if(S1==BLANCO&&S2==BLANCO&&S3==NEGRO&&S4==NEGRO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=11;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==NEGRO&&S5==NEGRO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=12;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==NEGRO&&S6==NEGRO&&S7==BLANCO&&S8==BLANCO)
{
estado=13;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==NEGRO&&S7==NEGRO&&S8==BLANCO)
{
estado=14;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==NEGRO&&S8==NEGRO)
{
estado=15;
}
if(S1==NEGRO&&S2==NEGRO&&S3==NEGRO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=16;
}
if(S1==BLANCO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=17;
}
if(S1==BLANCO&&S2==BLANCO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=18;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==BLANCO&&S8==BLANCO)
{
estado=19;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==BLANCO)
{
estado=20;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==NEGRO&&S7==NEGRO&&S8==NEGRO)
{
estado=21;
}
if(S1==NEGRO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=22;
}
if(S1==BLANCO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=23;
}
if(S1==BLANCO&&S2==BLANCO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==BLANCO&&S8==BLANCO)
{
estado=24;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==BLANCO)
{
estado=25;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==NEGRO)
{
estado=26;
}
if(S1==NEGRO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=27;
}
if(S1==BLANCO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==BLANCO&&S8==BLANCO)
{
estado=28;
}
if(S1==BLANCO&&S2==BLANCO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==BLANCO)
{
estado=29;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==NEGRO)
{
estado=30;
}
if(S1==NEGRO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==BLANCO&&S8==BLANCO)
{
estado=31;
}
if(S1==BLANCO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==BLANCO)
{
estado=32;
}
if(S1==BLANCO&&S2==BLANCO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==NEGRO)
{
estado=33;
}
if(S1==NEGRO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==BLANCO)
{
estado=34;
}
if(S1==BLANCO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==NEGRO)
{
estado=35;
}
if(S1==NEGRO&&S2==NEGRO&&S3==NEGRO&&S4==NEGRO&&S5==NEGRO&&S6==NEGRO&&S7==NEGRO&&S8==NEGRO)
{
estado=36;
}
if(S1==BLANCO&&S2==BLANCO&&S3==BLANCO&&S4==BLANCO&&S5==BLANCO&&S6==BLANCO&&S7==BLANCO&&S8==BLANCO)
{
estado=37;
}
if ((estado==0) || (estado==37))
{
parado();
}
if ((estado==4) || (estado==5) || estado==12) || (estado==18) || (estado==19) || (estado==23) || (estado==24) || (estado==25) || (estado==28) || (estado==29) || (estado==32) || (estado==36))
{
recto();
}
if ((estado==1) || (estado==2) || estado==3) || (estado==9) || (estado==10) || (estado==11) || (estado==16) || (estado==17) || (estado==22) || (estado==27) || (estado==31) || (estado==34))
{
izquierda();
}
if ((estado==6) || (estado==7) || estado==8) || (estado==13) || (estado==14) || (estado==15) || (estado==20) || (estado==21) || (estado==26) || (estado==30) || (estado==33) || (estado==35))
{
derecha();
}
}
}
FIN