|
二驱,两个传感器
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit left1=P2^0;
- sbit left2=P2^1;
- sbit right1=P2^2;
- sbit right2=P2^3;
-
- sbit left_red=P2^4; //白线位置
- sbit right_red=P2^5; //白线位置
- void delay(uint z)
- {
- uchar i;
- while(z--)
- {for(i=0;i<121;i++);}
- }
- void straight() //走直线函数
- {
- left1=1;
- left2=0;
- right1=1;
- right2=0;
- }
- void turn_left() //左转弯函数
- {
- left1=1;
- left2=1;
- right1=1;
- right2=0;
- }
- void turn_right() //右转弯函数
- {
- left1=1;
- left2=0;
- right1=1;
- right2=1;
- }
- void turn_back() //后退(反转)函数
- {
- left1=0;
- left2=1;
- right1=0;
- right2=1;
- }
- void infrared() //循迹
- {
- uchar flag;
- if((left_red==1)&(right_red==1))
- {flag=0;}
- else
- if((left_red==0)&(right_red==1))
- {flag=1;}
- else
- if((left_red==1)&(right_red==0))
- {flag=2;}
- else
- if((left_red==0)&(right_red==0))
- {flag=3;}
- switch (flag)
- {
- case 0: straight();
- break;
- case 1: turn_left();
- break;
- case 2: turn_right();
- break;
- case 3: turn_back();
- break;
- default:
- break;
- }
- }
- void main(void)
- {
- delay(1);
- while(1)
- {
- infrared();
- // straight();
- }
- }
复制代码
|
|