//鄙视下载要财富值的人
#include<reg51.h>
#define middle_point 1540
sbit S1=P0^0;
sbit S2=P0^1;
sbit S3=P0^2;
sbit E_L=P2^0;
sbit E_R=P2^1;
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单位12 us 单位是US
{
i= i*7/9;
while(--i);
}
void delay_nms(unsigned int n) //延时n ms
{
n=n+1;
while(--n)
delay_nus(970); //延时 1ms,同时进行补偿
}
void delay_s(int t)
{
int i,j;
for(i=0;i<125;i++)
for(j=0;j<t;j++);
}
void LowForward(void)//?ò?°DD×?×ó3ìDò
{
E_L=1;
delay_nus(middle_point+20);
E_L=0;
E_R=1;
delay_nus(middle_point-20);
E_R=0;
delay_nms(20);
// delay_s(50);
}
void Only_Left(void)//×ó×a×ó3ìDò
{
E_L=1;
delay_nus(middle_point-100); // ×ó
E_L=0;
E_R=1;
delay_nus(middle_point-100); // ?ì
// delay_nus(middle_point-30); //?y
E_R=0;
delay_nms(20);
}
void Only_Right(void)//óò×a×ó3ìDò
{
E_L=1;
delay_nus(middle_point+10); //?ì
// delay_nus(middle_point+30); //?y
E_L=0;
E_R=1;
delay_nus(middle_point+100);
E_R=0;
delay_nms(20);
}
void Turn_Around(void)//?3ê±??×?×a×ó3ìDò
{
E_L=1;
delay_nus(1640); //?3ê±??
E_L=0;
E_R=1;
delay_nus(1640);
E_R=0;
delay_nms(20);
}
void Turn_Around_left(void)//??ê±??×?×a×ó3ìDò
{
E_L=1;
delay_nus(1510); //?3ê±??
E_L=0;
E_R=1;
delay_nus(1510);
E_R=0;
delay_nms(20);
}
void Stop_Run(void) //D?3μ ?Yí£
{
E_L=0;
delay_nus(middle_point);
E_L=0;
E_R=0;
delay_nus(middle_point);
E_R=0;
delay_nms(20);
}
//1是无反射,灯灭。
void main(void)
{
unsigned int z=0;
while(1)
{
if(S1==1&&S2==0&&S3==0)
Only_Right();
if(S1==0&&S2==1&&S3==0)
LowForward();
if(S1==0&&S2==0&&S3==0)
LowForward();
if(S1==0&&S2==0&&S3==1)
Only_Left();
}
}
采用对射式红外传感器!!!!! |