¿Alguien puede ayudarme a programar un coche de seguimiento en lenguaje C? Se otorgarán 100 puntos extra después de realizarlo.
#includelt; reg52.hgt;
#define uchar unsigned char; //char datos enteros de un solo byte o datos de caracteres
#define uint unsigned int ; //int declara datos enteros básicos
#define PON 0
#define POFF 1
#define ON 1
#define APAGADO 0
#define VELOCIDAD2 100
#define VELOCIDAD1 50
uchar ito=0;
uchar m=0 ; p>
uchar time=0;
uchar PWM1=0;
uchar PWM2=0;
sbit p=P2^0 ; Controla la rueda izquierda
sbit q=P2^1 //Controla la rueda derecha
sbit p_green=P2^2;
sbit p_red=P2^ 3;
sbit TCRD1=P2^4; //Aquí está la declaración del pin del sensor RPR220
sbit TCRD2=P2^5
sbit TCRD3 =P2; ^6;
sbit TCRD4=P2^7;
int count1=0; //Dos declaraciones de bits de variables globales para el conteo de tiempos
int count2=0 ;
int x[4];
uchar table1[]={ 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60, 0xff}; //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, apagado, tabla de códigos de tubos digitales, nivel alto válido
tabla de códigos de caracteres sin firmar2 []=
{0xfe, 0xfd, 0xfb, //11111110, 11111101, 11111011
0xf7, 0xef, 0xdf, 0xbf, 0x7f,} //11110111, 11101111, 11011111, 10111 111, 01111111 p>
unsigned char dp=0x7f; //Utilice AND para agregar el punto decimal/punto de reloj.
unsigned char cp;
int s =0;
int sec=0; //Definir distancia y tiempo
char a;
int idi=0;
int j=0; /p>
bit rup3=0;
int GAO=4000;
int T=0; //Interrupción de tiempo de procesamiento 3
int timeCount ; //Indicador de tiempo
int wheelCount; //Indicador de rango
//int white=0; //Medir línea cruzada
void delay(int x )
{
> int a;
int b;
for(a=x;agt;0;a--)
for(b=125;bgt; 0; b--);
}
void display()//Mostrar tiempo y distancia
{
//Mostrar Hora
P0=table1[x[idi]]
P1=table2[idi];
idi
if( idi==4)
idi=0;
retraso(1);
}
void forward_turn1()//motor 1 Adelante
{
if(PWM1)
p=PON
else
p=POFF; ;
}
void forward_turn2()//El motor 2 avanza
{
if(PWM2)
q=PON;
else
q=POFF;
}
void stop_turn1()//El motor se detiene p >
{
P=POFF;
q=POFF;
}
velocidad de vacío1(int ct, int sd )//Función de control de velocidad del motor 1, donde el parámetro sd es generar onda PWM
{
if(ctgt;=sd)
PWM1= 0;
else
PWM1=1;
}
velocidad nula2(int ct, int sd)//Velocidad del motor 2 función de control, el parámetro sd es generar onda PWM
{
if(ctgt;=sd)
PWM2=0
else
p>PWM2=1;
}
avance vacío(int ct1, int sd1, int ct2, int sd2)//coche directo función
{
forward_turn1();
forward_turn2()
velocidad1(ct1, sd1); p> speed2(ct2, sd2);
}
//******************El siguiente es el plan 1, que logra la dirección haciendo dos ruedas, una rápida y otra lenta* ********
void left_turn1(int ct1, int sd1, int ct2, int sd2)//El auto gira a la izquierda
{
forward_turn1();
forward_turn2();
velocidad1(ct1, sd1); > speed2(ct2, sd2);
}
void right_turn1(int ct1, int sd1, int ct2, int sd2)//El coche gira a la derecha
{
forward_turn1();
p> forward_turn2();
velocidad1(ct1, sd1);
velocidad2(ct2, sd2); /******************El siguiente es el plan 2, que realiza la dirección haciendo que dos ruedas pasen lentamente y dejen de girar***
void left_turn2(int ct1 , int sd1, int ct2, int sd2)//El coche gira a la izquierda
{
forward_turn1()
forward_turn2();
velocidad1(ct1, sd1);
velocidad2(ct2, sd2
}
void right_turn2(int ct1, int sd1, int ct2); , int sd2 )//El coche gira a la derecha
{
forward_turn1();
stop_turn1()
speed1(ct1); , sd1);
velocidad2(ct2, sd2
}
void main()
{
<); p>p= 1;q=1;
TMOD=0x11; //Configuración del modo de interrupción
TH0=(65536-1000)/256; //Inicialización del temporizador 1
TL0=(65536-1000)256;
EA=1
ET0=1; =1 ;
TH1=(65536-1000)/256; //Inicialización del temporizador 2
TL1=(65536-1000)256
EA= 1 ;
ET1=1
TR1=1
mientras(1)
{
.............
}
}
tiempo vacío0()interrupción 1
{
TH0=(65536-5000)/256; //Tiempo 5 ms
TL0=(65536-5000)256
count1; >
ito;
if(ito==200)
{
ito=0;
s; p >
si(s==60)
{
s=0;
m ;
si(m = =60)
{
m=0
}
x[0]=m/10;
x[1]=m10;
}
x[2] =s/10; /p>
p>
}
display();
if(count1==SPEED2)//El período es 1s
cuenta1=0;
cuenta2;
si(c
ount2==SPEED2)//El período es 1s
count2=0
}
;