#include<reg52.h>
#include <intrins.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define uint unsigned int
#define uchar unsigned char
//减速电机控制IO口
sbit L1=P1^0;//左轮
sbit L2=P1^1;
sbit R1=P1^2;//右轮
sbit R2=P1^3;
sbit EN1=P1^4;
sbit EN2=P1^5;
//红外检测接口
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;
//小车停止
#define TZ EN1=0;EN2=0;
//小车前进
#define QJ L1=1;L2=0;R1=1;R2=0;EN1=1;EN2=1;
//小车后退
#define HT L1=0;L2=1;R1=0;R2=1;EN1=1;EN2=1;
//小车原地左转
#define ZZ L1=0;L2=1;R1=1;R2=0;EN1=1;EN2=1;
//小车原地右转
#define YZ L1=1;L2=0;R1=0;R2=1;EN1=1;EN2=1;
uint i;
bit flag,flag1,flag2; //超声波超出测量范围标志位,小车状态
/*****************************************************
函数功能:延时1ms
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++);
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
delay1ms();
}
void xcqd(void)
{
if(flag1)
{
QJ
}
else
{
HT
delay(300);
if(flag2==1)
{
ZZ
}
else
{
YZ
}
delay(400);
TZ
delay(400);
}
}
void hw(void)
{
if(!IN1&&!IN2&&!IN3&&!IN4)
{
flag1=1;
}
else
{
flag1=0;
}
}
main()
{
srand(111);
while(1)
{
flag2=(int)(rand()%2);
hw();
xcqd();
}
} |