//研究了两天心酸酸 还是做出来 了! STC12C560S2 单片机制作
#include <reg52.h>
sbit k1 = P2^0;
sbit k2 = P2^1;
sbit k3 = P2^2;
sbit k4 = P2^3;
sbit left1 = P0^0;
sbit left2 = P0^1;
sbit right1 = P0^2;
sbit right2 = P0^3;
sbit left3=P0^4;
sbit left4=P0^5;
sbit right3=P0^6;
sbit right4=P0^7;
sbit led=P2^4;
sbit led1=P2^5;
typedef unsigned char u8;
typedef unsigned int u16;
void delay(u16 x) //@11.0592MHz
{
unsigned char i, j, k;
while(x--)
{
i = 5;
j = 52;
k = 10;
do
{
do
{
while (--k);
}
while (--j);
}
while (--i);
}
}
void init()
{
left1=0; right1=0;
left2=0; right2=0;
left3=0; right3=0;
left4=0; right4=0;
}
void move()
{
left1=1; right1=1;
left2=0; right2=0;
left3=1; right3=1;
left4=0; right4=0;
}
void back()
{
left1=0; right1=0;
left2=1; right2=1;
left3=0; right3=0;
left4=1; right4=1;
}
void right()
{
left1=0; right1=1;
left2=1; right2=0;
left3=0; right3=1;
left4=1; right4=0;
}
void left()
{
left1=1; right1=0;
left2=0; right2=1;
left3=1; right3=0;
left4=0; right4=1;
}
void stop()
{
left1=0; right1=0;
left2=0; right2=0;
left3=0; right3=0;
left4=0; right4=0;
}
void xunji()
{
unsigned char flag;
if((k1 == 0)&&(k2 == 0)&&(k3==0)&&(k4==0)) //1代表检测到黑线
{
flag =0;
}
if((k1 == 0)&&(k2== 1)&&(k3==1)&&(k4==0))
{
flag = 0;
}
if((k1== 1)&&(k2== 0)&&(k3==0)&&(k4==0))
{
flag = 1;
}
if((k1== 1)&&(k2== 1)&&(k3==0)&&(k4==0))
{
flag = 1;
}
if((k1 == 0)&&(k2== 0)&&(k3==1)&&(k4==1))
{
flag = 2;
}
if((k1== 0)&&(k2== 1)&&(k3==1)&&(k4==0))
{
flag = 2;
}
switch(flag)
{
case 0:move();break;
case 1:right();break;
case 2:left();break;
case 3:back();break;
case 4:stop();break;
default:stop();break;
}
}
void main()
{ init();
// k1 = 1;
// k2 = 1;
// k3 = 1;
// k4 = 1;
while(1)
{
xunji();
}
}
4路循迹小车
于 2018-03-28 20:12:20 首次发布