微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > mayday!mayday!小车程序有bug!求助求助!

mayday!mayday!小车程序有bug!求助求助!

时间:10-02 整理:3721RD 点击:
自己写的一个小车程序,编译无报错,但是在proteus内P1口始终为高电位,求高手帮忙查看程序
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define motor P1    //电机动作输出
#define test P0     //红外检测输入
volatile uchar flag;
void Mforward()     //前进赋值 左ENB IN4 IN3  ENA IN2 IN1右  
{
motor=0x2d;      //101101
}
void Mturnright()    //右转
{
motor=0x28;     //101000
}
void Mturnleft()    //左转
{
motor=0x05;     //000101
}
void Mroll()     //左反右正转
{
motor=0x35;     //110101
}
void Mstop()     //停止
{
motor=0x24;     //100100
}
void flagtest()     //红外检测     1表示无障碍或检测到黑线
{
uchar temp;
temp=test&0x0f;     //取P0低四位
switch(temp)
{
case 0x08:      //未偏 1000
case 0x0a:      //   1010
flag=0;
break;
case 0x0c:      //偏左 1100
case 0x0e:      //     1110
flag=1;
break;
case 0x09:      //偏右  1001
case 0x0b:      //    1011
flag=2;
break;
case 0x0d:      //终点 1101
case 0x0f:      //   1111
flag=3;
break;
case 0x00:      //有障碍  P0^3=0
case 0x01:
case 0x02:
case 0x03:
case 0x04:
case 0x05:
case 0x06:
case 0x07:
flag=4;
break;
default:
break;
}
}
void main()    //主函数
{
flagtest();
switch(flag)
{
case 0:
Mforward();
break;
case 1:
Mturnleft();
break;
case 2:
Mturnright();
break;
case 3:
Mroll();
break;
case 4:
Mstop();
break;
}
}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top