xtrh.net
当前位置:首页 >> whilE kEy1 >>

whilE kEy1

这条语句应该是按键松手检测的。key1是单片机按键的接口,按键按下的时候改接口的点平为低。也就是key1的值是零。!key1即为非零,为真,语句一直停在了while循环里。 在松手检测的循环里加display1();是为了在按键按下的时候,还能继续扫描数码...

while(!key1)一般是要放在if(!key1)的花括号内的,也就是: if(!key1) //如果key1被按下 { DelayMs(5); // 软件延时进行按键消抖 while(!key1); // 等待按键释放 fun(); // 要执行的函数 } 分析一下,单片机C语言和软件C,C++不是完全一样的,单...

就是!key能返回true的时候一直执行{ }里面的代码

这个是检测放手的,按键按下的时候是低电平,即数字0。 如果不加这句话,在按键按下的时候,这个检测按键按下的程序会一直被触发,直观来看就是num不停的在加;加上这句话,如果这次按下,num++之后并没有松开按键则等待直到用户松开按键,直观...

如果key1 没有松手,即 key1=0; ' !'为取反; 则!key1=1, 此时While(!key1) 条件成立,while(!key1) 函数语句为空,即程序一直等待在此处循环。(即等待松手)

if(key1==0) //一个判断 bz=(bz+1)%3;//一个取余运算 while(key1==0); //一个无实体的循环

key1变量的赋值是在中断程序里吧?如果是这样,变量key1申明时应该加上关键字volatile,如volatile char key1;不加此关键字编译器会把当前局部的key1变量优化成一个寄存器变量,永远不去读取全局变量,你去看看汇编代码就知道了。新手进阶时都会...

if(Key == 0); //检测按键是否按下 { delay_ms(10); 延迟10ms if(key==0) { TR0 = 1; //开定时器T0中断 while(Key==0); //等待按键释放 } } void delay_ms(int a) //12M晶振约a毫秒 { int i,j; for(i=0;i

直接看你发的程序看不出问题来…你试试把case里的改成ASCII码数字呢? 会不会你使用的是Unicode编译环境所以char对不上。。

key_flag只有两种可能:零或非零 如果不是零,那么就等价于1,也会是相同的结果; 如果是零,那么这个循环因为条件不满足,根本就不会被执行,当然就没错了 归根结底,还是while循环体中的代码异常

网站首页 | 网站地图
All rights reserved Powered by www.xtrh.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com