源码: port4();//选通CHIP3
Delay(1);
receive=P0;//P0 口读到的数给变量receive
if(receive!=0x00)//判断是否收到有效数据
{
while(receive=P0)
{
switch(receive)
{
case 0x80:disp_real(7+24);start=0x00;break;
case 0x40:disp_real(6+24);break;
case 0x20:disp_real(5+24);break;
case 0x10:disp_real(4+24);break;
case 0x08:disp_real(3+24);break;
case 0x04:disp_real(2+24);break;
case 0x02:disp_real(1+24);break;
case 0x01:disp_real(0+24);break;
default: break;
}
}
}
portn();//关闭端口
Delay(1);
if(start==0x00) //如果32路显示完毕,开始判断处理
{ 。。。。。。。。
这是第四个端口,每个端口8路,每次接收数据为:{0x01,0x02,0x04,0x08,0X10,0X20,0X40,0X80}第一路收0X01,第八路收0X80...;现在用单片机的P0口不断读接收到的数receive,然后用数码管显示出来。假如第32路开路或者短路或者与其他线粘连,不能正常接收到0X80的时候,怎么使start=0X00;呢?由于采样频率的问题,每次进入case语句的数量都在20以上,并且数目不稳定很随机,无法用一个变量强制start=0X00;请问各位有什么好的办法吗?谢谢啦! |