在看郭天祥老师的视频的时候遇到了一个疑问,琢磨半天也没想明白,特来求教
视频:http://v.youku.com/v_show/id_XMjkxMTQ1ODky.html 现象发生时间是:110分10秒左右。
现象描述:按第一排第一个按键的时候,数码管显示0,按道理按第二个按键的时候应该显示1的,但是事实上按了没有反应,必须要重启下
单片机,才能按第二个。
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0) //郭老师貌似解释是跳不出这个循环吧,后来听一学生建议,就加了temp=P3 这句
{
temp=P3; //就是加了这句,就能在第一行正常工作了,说是加了这句就能跳出上面那个while循环了
switch(temp)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
我没明白的就是,为什么加了temp=P3这句,就能跳出小while循环呢?既然能跳出小的while循环,那和它条件一样的大while循环,应该也能跳出啊,最重要的是,为什么加了temp=P3就能跳出去,跳出去的条件是temp=0xf0,但是P3并不等于0xf0啊。
小弟在此实在是想不通了
一周热门 更多>