📄 zhixianpao.c
字号:
#include<reg51.h>
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
unsigned int i,j,k,l,m,x,yichu,dir,jinru;
unsigned char deng,th,tl;
void delay(void);
void timer0(void) interrupt 1
{yichu++;
if(yichu==1)
{yichu=0;
x++;
if(P1_3==0)
P1_3=1;
else
P1_3=0;
if(x%2==1)
{th=0xF4; //3ms
tl=0x48;
}
else
{th=0xE4; //7ms
tl=0xA8;
}
}
TH0=th;
TL0=tl;
}
main()
{P1_0=0;
P1_1=0;
P1_2=0;
P1_3=0;
EA=1;
ET0=1;
TMOD=0x01;
TH0=0xF4; //2ms
TL0=0x48;
TR0=1;
for(;;)
{deng=P1&0xF0;
if(deng==0xD0) /* 0x0A=0000'101'1 不转弯 */
{P1_0=0;
P1_1=0;
delay();
}
else if(deng==0xC0) /* 0x0A=0000'001'1 右偏 ->左 */
{dir=1;
if(jinru==1)
{P1_0=1;
P1_1=0;
delay();
}
else
{P1_0=0;
P1_1=1;
delay();
}
continue;
}
else if(deng==0xE0) /* 0x0A=0000'011'1 右偏 ->左 */
{dir=1;
if(jinru==1)
{P1_0=1;
P1_1=0;
delay();
}
else
{P1_0=0;
P1_1=1;
delay();
}
continue;
}
else if(deng==0x90) /* 0x0A=0000'100'1 左偏 ->右 */
{dir=2;
if(jinru==1)
{P1_0=0;
P1_1=1;
delay();
}
else
{P1_0=1;
P1_1=0;
delay();
}
continue;
}
else if(deng==0xB0) /* 0x0A=0000'110'1 左偏 ->右 */
{dir=2;
if(jinru==1)
{P1_0=0;
P1_1=1;
delay();
}
else
{P1_0=1;
P1_1=0;
delay();
}
continue;
}
else if(deng==0x80) /* 0x0A=0000'000'1 不可能情况 */
{delay();
continue;
}
else if(deng==0xF0) //(deng==0xF0) /* 0x0A=0000'111'1
{if(dir==1)
{P1_0=0;
P1_1=1;
delay();
}
else if(dir==2)
{P1_0=1;
P1_1=0;
delay();
}
jinru=1;
continue;
}
}
}
void delay()
{unsigned int i,j;
for(i=0;i<10;i++)
for(j=0;j<120;j++)
;
}
/*
if(x%2==1)
{th=0xFC; //1ms
tl=0x18;
}
else
{th=0xDC; //9ms
tl=0xD8;
}
if(x%2==1)
{th=0xF8; //2ms
tl=0x30;
}
else
{th=0xE0; //8ms
tl=0xC0;
}
if(x%2==1)
{th=0xE4; //7ms
tl=0xA8;
}
else
{th=0xF4; //3ms
tl=0x48;
}
if(x%2==1)
{th=0xEC; //5ms
tl=0x78;
}
else
{th=0xEC; //5ms
tl=0x78;
}
if(x%2==1)
{th=0xE8; //6ms
tl=0x90;
}
else
{th=0xF0; //4ms
tl=0x60;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -