Buscando un programa sencillo para el coche inteligente c51
Programa del microcontrolador del sistema
#include "reg52.h"
#define det_Dist 2.55 //La distancia recorrida por el automóvil correspondiente a un solo pulso, su el valor es el perímetro de la rueda/4
#define RD 9 //Longitud del eje diagonal del coche
#define PI 3.1415926
#define ANG_90 90
#definir ANG_90_T 102
#definir ANG_180 189
/*======================= === ===Área de definición de variables globales=============================*/
sbit P10= P1^0 ; //Controla la apertura y cierre del relé
sbit P11=P1^1; //Controla el interruptor de proximidad metálico
sbit P12=P1^2; /Controla la apertura y cierre del sensor de color
sbit P07=P0^7; //Controla la apertura de la señal luminosa y sonora
sbit P26=P2^6; /Recibe la señal del sensor de color, el blanco es 0, el negro es 1
sbit P24=P2^4; //Izquierdo
sbit P25=P2^5; la derecha recibe la señal de los sensores de luz izquierdo y derecho, y la luz es 0
unsigned char mType=0; //Establece el modo de movimiento, 0 adelante 1 izquierda 2 atrás 3 derecha
unsigned char Direction=0; //La dirección en tiempo real del automóvil 0 hacia arriba 1 Mirando hacia la izquierda 2 Mirando hacia abajo 3 Mirando hacia la derecha
unsigned sX=50; coordenadas de la esquina inferior derecha relativa del automóvil CM (sX, sY)
unsigned char StartTask=0; //Después de obtener la pieza de hierro, inicie la tarea de descarga de retorno y establezca StartTask en uno
unsigned char Inter_EX0=0; // Solo puede haber una interrupción externa durante la finalización de una tarea completa
// Inter_EX0 registra el estado de interrupción de la interrupción externa 0
// 0 La acción más reciente no ha sido interrumpida,
// 1 La acción más reciente ha sido interrumpida
unsigned char cntIorn=0 //Número de piezas de hierro
unsigned char bkAim=2; //Destino de regreso, 0 es el almacén A, 1 es el almacén B, 2 es el campo de estacionamiento,
//(Recibe la señal del color de la chapa de hierro sensor de juicio para asignar valor en PRINCIPAL)
unsigned char Light_Flag=0;//Bandera que ingresa al área de la guía de luz (1)
unsigned int cntTime_5Min=0; períodos de tiempo, utilizados para la sincronización precisa de T0
unsigned int cntTime_Plues=0; //El número de pulsos generados por el interruptor Hall
/*======== =====================Área de definición de variable global============== ============ ===*/
/*------------------------ ------------ --------------*/
/*--------------- --Programa de retardo general----- --------------*/
/*--------------- ---------- ------------------------*/
retraso nulo (unsigned int
tiempo) // tiempo*0.5ms de retraso
{
unsigned int i,j;
for(j=0;j