2019-07-18 12:40发布
先生下山啦 发表于 2014-8-18 11:25 我不明白为什么要加while(1);为什么不是一次性识别按键呢?难道不应该是按一次0-9的任意一个按键,然后执 ...
最多设置5个标签!
switch(Key)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
// DispBuf[PassPosi] = LINECHAR;//显示’-‘
Disp_Led_Sin(Key,PassPosi);
这个switch是什么意思,选择吧!
当按键为9的时候,执行case 9:一直到到下一个case之前,是不?
那么假设你按键1的时候,是不不应该显示呢?
其实你没懂我的按键等待释放。你已经上传了程序
unsigned char Key_Scan(void)
{
unsigned char key_code_temp;
if(Key_Hit()==1)
{
Delay_Init(10,10);
if(Key_Hit()==1)
{
key_code_temp=Key_Code();
while(Key_Hit()==1);
return(key_code_temp);
}
else return(0xff);
}
else return(0xff);
}
其中while(Key_Hit()==1);就是判断按键是否释放。
如果按键没有释放,他就不会执行下一次扫描,这个是一个层。我把每个任务分成了层。
而你的程序有个明显的现象,就是按键一直按着的时候一直在响,这说明程序在整个系统中运行。我到没细看,为什么现象对。
先不说这个,我们打个赌,在不大改动思路的情况下,你看看你后续的功能能否实现,或者轻松就实现(我指的是多个数码管显示不同的值)。首先你要面对是数码管扫描(记得做在定时器中)和键盘扫描的问题。
一周热门 更多>