📄 tankex.c
字号:
#include<reg51.h>
sbit P1_0=P1^0;
sbit P1_7=P0^7;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_3=P2^3;
unsigned int CODE[8]={0x77,0x33,0xbb,0x99,0xdd,0xcc,0xee,0x66};
unsigned int now=1,qian;
unsigned int i,a=0;
unsigned char deng;
void delay(unsigned int);
void Init(void);
void panduan(void);
void zuozhuan(void);
void youzhuan(void);
void huifu(void);
void qianjin(void);
void tingzhi(void);
void houtui(void);
main()
{Init();
for(;;) //000 000 00 任意传感器检测到黑线就跳出
{if(P2_3==0)
break;
}
for(;;)
{deng=P2&0x1C;
if(deng==0x00)
break; //循迹
panduan();
}
tingzhi();
P1_7=0;
//C
delay(5000);
P1_7=0;
qianjin(); //循迹
for(;;)
{deng=P2&0x1C;
if(deng==0x00)
break;
panduan();
}
P1_7=0;
tingzhi();
delay(5000);
P1_7=0;
houtui();
for(;;)
{if(P2_3==0)
a++;
if(a==2)
break;
}
for(;;)
{deng=P2&0x1C;
if(deng==0x00)
break;
panduan();
}
for(;;);
}
void Init(void)
{P1_0=0;
P1_1=1;
P1_2=1;
P1_3=0;
}
void panduan(void)
{
//记录当前状态,和先前状态
if(deng==0x1C) // 000 111 00
{qian=now;
now=1;
}
else if(deng==0x14)// 000 101 00
{qian=now;
now=2;
}
else if(deng==0x04)// 000 001 00
{qian=now;
now=3;
}
else if(deng==0x0C)// 000 011 00
{qian=now;
now=4;
}
else if(deng==0x10)// 000 100 00
{qian=now;
now=5;
}
else if(deng==0x18)// 000 110 00
{qian=now;
now=6;
}
else if(deng==0x00)// 000 000 00
{qian=now;
now=7;
}
else if(deng==0x08)// 000 010 00
{qian=now;
now=8;
}
// 判断
if(now==1)
{if(qian==3||qian==4)
{zuozhuan();
}
else if(qian==5||qian==6)
{youzhuan();
}
else
{delay(20);
}
}
else if(now==2)
{huifu();
}
else if(now==3)
{if(qian==1)
{huifu();
}
else if(qian==2)
{zuozhuan();
}
else if(qian==5||qian==6)
{zuozhuan();
}
else
{delay(20);
}
}
else if(now==4)
{zuozhuan();
}
else if(now==5)
{if(qian==1)
{huifu();
}
else if(qian==2)
{youzhuan();
}
else if(qian==3||qian==4)
{youzhuan();
}
else
{delay(20);
}
}
else if(now==6)
{youzhuan();
}
else if(now==7)
{;
}
else if(now==8)
{;
}
}
void zuozhuan(void)
{P1_2=0;
P1_3=0;
}
void youzhuan(void)
{P1_0=0;
P1_1=0;
}
void huifu(void)
{P1_0=0;
P1_1=1;
P1_2=1;
P1_3=0;
}
void qianjin(void)
{P1_0=0;
P1_3=0;
P1_1=1;
P1_2=1;
}
void houtui(void)
{P1_0=1;
P1_1=0;
P1_2=0;
P1_3=1;
}
void tingzhi(void)
{P1_0=0;
P1_1=0;
P1_2=0;
P1_3=0;
}
void delay(unsigned int z)
{unsigned int x,y;
for(x=0;x<z;x++)
for(y=0;y<124;y++)
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -