编译通过是因为没有语法错误,不代表你的程序是正确的。
你的问题出在判断语句上。
RD2=0;RD5=1;RD4=1;ys(); //执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==1,RB4==0,RB5==0
//if((!RB5)&&(RB4)&&(RB2)) //第一路判断//这里判断的是RB2==1,RB4==1,RB5==0;条件才为真,和上条指令执行完结果不一致,所以为假,报警
if((RB2)&&(!RB4)&&(!RB5)) //第一路判断//修改为判断RB2==1,RB4==0,RB5==0
{
RD2=1;RD5=0;RD4=1;ys();//执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==0,RB4==0,RB5==1
//if((RB5)&&(!RB4)&&(RB2)) //第二路判断//这里判断的是RB2==1,RB4==1,RB5==0;条件才为真,和上条指令执行完结果不一致,所以为假,报警
if((!RB2)&&(!RB4)&&(RB5)) //第二路判断//修改为判断RB2==0,RB4==0,RB5==1
{
RD2=1;RD5=1;RD4=0;ys();//执行完这行代码后,RB2,RB4,RB5对应的电平应该是RB2==0,RB4==1,RB5==0
//if((RB5)&&(RB4)&&(!RB2))//第三路判断//这里判断的是RB2==0,RB4==1,RB5==1;条件才为真,和上条指令执行完结果不一致,所以为假,报警
if((!RB2)&&(RB4)&&(!RB5)) //第三路判断//修改为判断RB2==0,RB4==1,RB5==0 |