请教高手单片机的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 02:53:40
我是单片机的新手,问一个比较大侠们认为简单的问题,
在键盘扫描式用到下面这两句语句是什么意思?
if(key==0)
{
while(!key==0);
TR0=!TR0;//这句是按位取反,我打不来那个符号,就用感叹号代替了
}
我想知道它是怎么工作的,希望详尽些,谢谢,我是新手,把分全部拿出了

~ 是按位取反,是一种位运算
! 是逻辑求反,可以认为是一位,起作真假的意思.

顾名思义,按位取取反,所有位者会由0变1,或由1变0,例如:
00000010 按位取反后 11111101
00000010(真) 逻辑求反后 00000000(假) //但keil有位变量

while(!key==0);//意思是如果key为1,则求反后为0则等式成立,进入死循环,直到key为0,51单片机通常是这样,因为引脚是低电平0有效的.

除非你的键盘有问题,否则~打法和!是一样的.只是键位置不同而已.

简单点说就是有键按下(因为key为低电平),程序就进去了循环。

之后的while语句一直在等待,当按键松开(也就是key为高电平)时往下执行。

用处是避免按键按下了没松开,程序执行了很多次的取反操作。