单片机识别5路电平并通过串口在电脑上(串口调试助手)显示问题,感觉很简单,其实很复杂!请帮忙呀

uintfp=0;voidsenddata(ucharda)//其他略去{SBUF=da;while(TI==0);TI=0;}voidselectout(ucharue... uint fp=0;
void senddata(uchar da) //其他略去
{
SBUF=da;
while(TI==0);
TI=0;
}
void selectout(uchar ue)
{
uchar a;
a=(ue|0xe0);
switch(a)
{
case 0xf0:
write_com(0x01);
delay(10);
hangone();
delay(10);
hangtwo("kaka");
fp=0;

senddata(0xff);
senddata(0xff);
senddata(0xf0);
senddata(0xff);
senddata(0xff);
break;

case 0xe2:
write_com(0x01);
delay(10);
hangone();
delay(10);
hangtwo("nini");
fp=0;

senddata(0xff);
senddata(0xff);
senddata(0xe2);
senddata(0xff);
senddata(0xff);
break;

case 0xe4:
write_com(0x01);
delay(10);
hangone();
delay(10);
hangtwo("xixi");
fp=0;

senddata(0xff);
senddata(0xff);
senddata(0xe4);
senddata(0xff);
senddata(0xff);
break;

default:
if(fp==0)
{
write_com(0x01);
delay(10);
hangone();
delay(10);
hangtwo("None");
fp=1;

senddata(0xdd);
}
break;
}
delay1(20);
}
void main()
{

temp=0x00;
delay(100);

init1602();
delay(10);
ini();

deng=1;

hangone();

temp=P2;

delay(50);

while((temp|0xe0)!=(P2|0xe0))
{
temp=P2;
delay1(20);
}
senddata(0x03); //为什么要加这句发送语句

delay(20);
selectout(temp);
delay(20);
senddata(0x02); //为什么要加这句发送语句,不加的话显示None

while(1)
{
delay(100);

if((temp|0xe0)!=(P2|0xe0))
{
delay1(20);

while((temp|0xe0)!=(P2|0xe0))
{
temp=P2;
delay1(20);

if((temp|0xe0)==(P2|0xe0))
{
delay(10);
senddata(0x01); //为什么要加这三句发送语句,不加的话显示None
senddata(0x01);
senddata(0x01);
selectout(temp);
delay(10);
}
}
}
delay1(40);
}
}
若已上电再给5路电平,则没问题都能出,若上电时已经有5路电平已经接上的话,不写上注明的那三句,则有5路电平输入也显示None,5路电平变化才恢复正常?为什么?急呀!
展开
 我来答
lgx1989101
2011-07-23 · 超过11用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:37.9万
展开全部
单片机初始化问题,单片机识别电平是通过对比才得到结论的,就是将某端口的电压与一个电压值对比。但是必须有点平变化,你没电平变化单片机就不检测端口电压,当然什么都输出不了。你在初始化时加一个中断,每隔一段时间,就中断一次并轮流检测个端口电平(当有电平转换时,单片机会自动跳到中断)。
感觉你家那几句话没啥用,骗人的!
再有就可能是设个看门狗,有错就自动跳出就行
单片机初始化问题,单片机识别电平是通过对比才得到结论的,就是将某端口的电压与一个电压值对比。但是必须有点平变化,你没电平变化单片机就不检测端口电压,当然什么都输出不了。你在初始化时加一个中断,每隔一段时间,就中断一次并轮流检测个端口电平(当有电平转换时,单片机会自动跳到中断)。
感觉你家那几句话没啥用,骗人的!
再有就可能是设个看门狗,有错就自动跳出就行
灵犀镯
2011-07-22 · 超过18用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:44.5万
展开全部
单片机初始化问题,单片机识别电平是通过对比才得到结论的,就是将某端口的电压与一个电压值对比。但是必须有点平变化,你没电平变化单片机就不检测端口电压,当然什么都输出不了。你在初始化时加一个中断,每隔一段时间,就中断一次并轮流检测个端口电平(当有电平转换时,单片机会自动跳到中断)。
感觉你家那几句话没啥用,骗人的!
再有就可能是设个看门狗,有错就自动跳出就行了。
追问
能不能详细一点呀!最好来几句程序可以么?麻烦了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式