帮我看看这个单片机程序,谢谢了

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:26:20
#include"reg52.h"

#include"intrins.h"
void delay(unsigned int d)
{while(d-->0);}

sbit LEFTL=P0^3;
sbit MIDL=P0^4;
sbit RIGHTL=P0^5;
sbit LEFT=P3^2;
sbit RIGHT=P3^3;

void main()
{

while(1)
{unsigned int m;

m=P0&0xff;

P0=0XFF;
P3=0XFF;

switch(m)
{case 0xff:{LEFT=0;RIGHT=0;delay(0xff);}break;
case 0xeb:{LEFT=0;RIGHT=0;delay(0xff);} break;
case 0xfb:{LEFT=1;RIGHT=0;delay(0xff);}break;
case 0xef:{LEFT=0;RIGHT=1;delay(0xff);}break;
case 0xf3:{LEFT=0;RIGHT=1;delay(0xff);}break;
case 0x01:{LEFT=1;RIGHT=0;delay(0xff);}break;
case 0x00:{LEFT=0;RIGHT=1;delay(0xff);}break;
case 0xf7:{LEFT=0;RIGHT=1;delay(0xff);}break;}

}
}
因为要用,所以刚学的,测试的结果SWITCH语句没有起作用,LEFT和RIGHT电平不变,希望大家能帮我找找原因
这是控制两个直流电机的

把这句:unsigned int m; 改成:unsigned char m;挪到while(1) 前头定义.unsigned int d 改成unsigned char d

看看你P0输入吧

楼上说得对啊,
int是两个字节,char是1个字节,拿两个字节的数据跟一个字节的数据位与,得出是两个字节,还是两个字节。

还有那个延时,(d-->0)不需要>0这个条件,因为本身就是判断是否大于0。