Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Alguien puede ayudarme a programar un coche de seguimiento en lenguaje C? Se otorgarán 100 puntos extra después de realizarlo.

¿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 ;

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

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=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;

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

}

;