📄 car.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned char
sbit col1 =P1^0;
sbit col2 =P1^1;
sbit col3 =P1^2;
sbit col4 =P1^3;
sbit l_f =P1^4;
sbit l_b =P1^5;
sbit r_f =P1^6;
sbit r_b =P1^7;
void front()
{
l_f =1;
l_b =0;
r_f =1;
r_b =0;
P0=0x8E; // F
}
void back()
{
l_f =0;
l_b =1;
r_f =0;
r_b =1;
P0=0x3E; // b
}
void left()
{
l_f =0;
l_b =1;
r_f =1;
r_b =0;
P0=0x1C; // L
}
void left_T()
{
l_f =0;
l_b =0;
r_f =1;
r_b =0;
P0=0x1C; // L turn
}
void right()
{
l_f =1;
l_b =0;
r_f =0;
r_b =1;
P0=0x0E; // r
}
void right_T()
{
l_f =1;
l_b =0;
r_f =0;
r_b =0;
P0=0x0E; // r turn
}
void stop()
{
l_f =0;
l_b =0;
r_f =0;
r_b =0;
P0=0x02;
}
void delay()
{
uchar i;
for(i=0;i<255;i++);
}
void go()
{
uchar i=0,j=0;
if(i >= 255)
{i = 0; j = j+1;}
else
{i = i+1; delay();}
if(j <= 50)
left_T();
if(j > 50 && j <= 100)
right_T();
if(j > 100 && j <= 180)
front();
if(j > 180 && j <= 200)
right();
if(j > 200 && j <= 220)
left();
if(j > 220 && j <= 254)
back();
if(j > 254)
stop();
}
void main()
{
P1=0x00;
P0=0x00;
while(1)
{
if(col1 ==0 && col2 ==0 && col3 ==0 && col4 ==0)
stop();
else if(col1 ==1 && col2 ==1 && col3 ==1 && col4 ==1)
go();
else if(col1 ==1 && col2 ==0 && col3 ==0 && col4 ==0)
front();
else if(col1 ==0 && col2 ==1 && col3 ==0 && col4 ==0)
back();
else if(col1 ==0 && col2 ==0 && col3 ==1 && col4 ==0)
left();
else if(col1 ==0 && col2 ==0 && col3 ==0 && col4 ==1)
right();
else if(col1 ==0 && col2 ==1 && col3 ==0 && col4 ==1)
left_T();
else if(col1 ==1 && col2 ==0 && col3 ==1 && col4 ==0)
right_T();
else stop();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -