📄 qianmian.c
字号:
#include<at89x52.h>
#define uint unsigned int
void delay_ms(uint i)
{uint j;
for(;i>0;i--)
for(j=0;j<125;j++)
{;}
}
///////////////////////////////////
void ji_sha(uint i)
{
while(i--)
{P1_0=1;P1_2=1;
delay_ms(30);
}
}
///////////////////////////////////
void zhi_zou()
{
P1_0=0;P1_2=0;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
///////////////////////////////////
void zuo_weidong()
{
P1_0=0;P1_2=0;
P1_1=1; P1_3=0;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
/////////////////////////////////////
void you_weidong()
{
P1_0=0; P1_2=0;
P1_1=0; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
/////////////////////////////////////
void xunji() //直线循迹
{
while(P1_4==1&&P1_5==1&&P3_0==0&&P3_1==0&&P2_0==0) // 直走
zhi_zou();
while(P1_4==0&&P1_5==1&&P3_0==0&&P3_1==0&&P2_0==0) // 左微动
zuo_weidong();
while(P1_4==1&&P1_5==0&&P3_0==0&&P3_1==0&&P2_0==0) // 右微动
you_weidong();
}
/////////////////////////////////////
void zuo() // 左转弯
{
ji_sha(2);
while(P1_4==1||P1_5==1)
{
P1_0=1;P1_2=0;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
while(P1_4==0&&P1_5==0)
{
P1_0=1;P1_2=0;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(3);
}
/////////////////////////////////////
void you() // 右转弯
{
ji_sha(2);
while(P1_4==1||P1_5==1)
{
P1_0=0;P1_2=1;
P1_1=1;P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
while(P1_4==0&&P1_5==0)
{
P1_0=0;P1_2=1;
P1_1=1;P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(3);
}
/////////////////////////////////////
void chong(uint i)
{
while(i--)
{
P1_0=0;P1_2=0;
P1_1=1;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
}
/////////////////////////////////////
void lu_kou(unsigned int j)
{
unsigned int sign;
sign=j;
switch(sign)
{
case 1 : zuo(); break;
case 2 : you(); break;
case 3 : chong(8); break;
case 4 : chong(8); break;
case 5 : chong(8); break;
case 6 : chong(8); break;
case 7 : chong(8); break;
case 8 : chong(8); break;
case 9 : chong(8); break;
case 10 : chong(8); break;
case 11 : chong(8); break;
case 12 : chong(8); break;
}
}
/////////////////////////////////////
void main() //修改i,j,M
{ uint k=0;
uint i=17;
uint j=15;
while(1)
{
xunji();
if(P3_0==1||P3_1==1&&P2_0==0)
{
k++;
lu_kou(k);
}
while(k==12)
{
k=0;
}
if(P2_0==1) //总判断
{
while(i--)
{ P1_0=1;P1_2=0;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(2);
while(P1_4!=1&&P1_5!=1)
{
P1_0=0;P1_2=0;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(2);
while(P3_1!=1)
{P1_0=0;P1_2=0;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(2);
while(P1_4!=1&&P1_5!=1)
{
P1_0=0;P1_2=1;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(2);
while(P2_1==0)
{ while(P1_4==1&&P1_5==0) // 右微动
you_weidong();
while(P1_4==1&&P1_5==1) // 直走
zhi_zou();
while(P1_4==0&&P1_5==1) // 左微动
zuo_weidong();
}
while(P2_1==1)
{ while(P1_4==1&&P1_5==0) // 右微动
you_weidong();
while(P1_4==1&&P1_5==1) // 直走
zhi_zou();
while(P1_4==0&&P1_5==1) // 左微动
zuo_weidong();
}
ji_sha(2);
if(P2_1==0)
{
while(j--)
{ P1_0=0;P1_2=1;
P1_1=1; P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(2);
while(P1_4!=1&&P1_5!=1)
{ P1_0=0;P1_2=1;
P1_1=1;P1_3=1;
delay_ms(10);
P1_1=0;P1_3=0;
delay_ms(30);
}
ji_sha(2);
while(P1_4==1||P1_5==1)
{P1_0=1;P1_2=1;
delay_ms(30);
P1_1=0;P1_3=0;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -