Programa C para seguimiento de coches
#Definir carácter uchar sin signo
#Definir uint entero sin signo
sbit moto1=p1^5;
p>sbit moto2=p1^6;
sbit moto3=p2^0;
sbit moto4=p2^1;
sbit en1= p1^7;
sbit en2=p2^2;
//*Siete sensores infrarrojos en el puerto de seguimiento*//////////
sbit izquierda1=p1^0; //*sensor izquierdo*//
sbit izquierda2=p1^1;
sbit izquierda3=p1^2;
p>sbit mid=p1^3; //*posición de la línea negra*//
sbit right1=p1^4;
sbit right2=p2^3;
sbit right3=p2^4;//*Sensor a la derecha*///////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// ////
sbit bled=p0^1;
sbit lled=p0^2;
sbit rled=p0^3;
sbit bizhang=p2^5;
uchar pro _ cabeza
uchar pro _ espalda
Uchar I;
uchar j; //Indicadores de ciclo de trabajo delantero y trasero
Retraso no válido (unidad z)
{
Uchar I;
while( z -)
{
for(I = 0;i<121;i++);
}
}
/* * * * * *Inicializar el temporizador e interrumpir* * * * * * * *
void inicialization()
{
TMOD = 0x 01;
TH0 =(65536-100)/256;
TL0 =(65536-100)% 256;
EA = 1;
ET0 = 1;
TR0 = 1;
en 1 = 1;
en2 = 1;
Hora no válida 0 (no válida) interrupción 1
{
i++;
j++;
if( i<=pro_back)
{
es 1 = 1;
}
Otro
{ p>
es 1 = 0;
}
si (i==40)
{
es 1 = ~ en 1;
I = 0;
}
if(j & lt;=pro_head)
{
en2 = 1;
}
Otro
{
en2 = 0;
}
Si (j==40)
{
en2 = ~ en2
j = 0;
}
TH0 =(65536-100)/256;
TL0 =(65536-100)% 256;
}
Void qianjin()//*Sigue recto*///////////////
{
pro _ back = 15 ; p>
pro_cabeza = 5;
moto 1 = 0;
moto 2 = 0
moto 3 = 1; p>moto 4 = 0;
lled = 1;
rled = 1;
bled = 1; p>
Voidturn _ right1 ()/*función de giro a la derecha 1*//
{
pro _ back = 10
pro _ head; = 15;
moto 1 = 0;
moto 2 = 1;
moto 3 = 1; ;
}
. . . . . . .
Void xunji() //*Función de seguimiento*//
{
Banner Uqiar;
if((izquierda 1 = = 0)& amp; )& amp;& amp(derecha 2 = = 0)& amp;& amp(right3==0))
{
bandera = 1;
}
else if((izquierda 1 == 0)& amp;& amp(izquierda 2 == 0)& amp;& amp(izquierda 3 == 1)& amp;& amp(mid = = 0)& amp(right 1 = = 0)& amp;& amp(right 2 = = 0)& amp;& amp(right3==0))
{
flag = 2;
}
si no((izquierda 1 = = 0)& amp;& amp(izquierda 2 = = 1)& amp;& amp (izquierda 3 = = 1)& amp;& amp(media = = 0)& amp;& amp(derecha 1 == 0)& amp;& amp(derecha 2 == 0)& amp;& amp(right3== 0))
{
bandera = 3;
}
,. .. . . . . . . . . . .
Cambiar (bandera)
{
Caso 0: adelante(); encabezado();
Interrupción;
Caso 1: turn_left 1(); led izquierdo();
Rotura;
Caso 2: turn_left 2(); led izquierdo();
,. .. . . . . . . . . . . . . Romper; Valor predeterminado: backled();
Romper
}
}
void main()
{
init();
Retraso(600);
Consejo();
Retraso(300); /p>
while(1)
{
If (Zhang Bi==1)
{
Mensaje impar ();
}
Otro
BZ();
}
},,, , "Omita el medio, debe escribirlo usted mismo".