2019-07-18 12:40发布
武力戡乱 发表于 2014-8-18 13:16 switch(Key) { case 0:
先生下山啦 发表于 2014-8-18 15:24 其他的我稍后再看,我先纠正一点:准确的说每次是执行到break为止。多个case可共用一组执行语句。所以0-9 ...
先生下山啦 发表于 2014-8-18 11:25 我不明白为什么要加while(1);为什么不是一次性识别按键呢?难道不应该是按一次0-9的任意一个按键,然后执 ...
武力戡乱 发表于 2014-8-17 21:50 呵呵,你真牛。咋说呢 switch(Key)
最多设置5个标签!
如果你说的一直按着喇叭一直响是指刚按下响一声,然后松开又响一声,如果指的是这个的话,我觉得这是因为电平变化引起的,刚按下电平由高到低喇叭响一下,松开的时候又由低到高喇叭响一声。不一定是因为程序运行的问题。
这个程序确实是实现了多个公用一组
但是你看看这个http://see.xidian.edu.cn/cpp/html/39.html
switch语句的意思是什么。
看来这个确实一问题。今天晚上我一定花点时间看看。然后咱两在探讨。毕竟每个都设计思路不同吗。
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);就是判断按键是否释放。
如果按键没有释放,他就不会执行下一次扫描,这个是一个层。我把每个任务分成了层。
而你的程序有个明显的现象,就是按键一直按着的时候一直在响,这说明程序在整个系统中运行。我到没细看,为什么现象对。
先不说这个,我们打个赌,在不大改动思路的情况下,你看看你后续的功能能否实现,或者轻松就实现(我指的是多个数码管显示不同的值)。首先你要面对是数码管扫描(记得做在定时器中)和键盘扫描的问题。
我不明白为什么要加while(1);为什么不是一次性识别按键呢?难道不应该是按一次0-9的任意一个按键,然后执行完下面的程序由break退出吗?
- // DispBuf[PassPosi] = LINECHAR;//显示’-‘
- Disp_Led_Sin(Key,PassPosi);
- // z++;
- // if(z>5){z=0;}
- PassInBuf[PassPosi] = Key;//保存用户输入的密码
- if (PassPosi<5)
- PassPosi++;//调整密码输入位置
- Sys_Speaker(SHORT_TIME);//发按键提示音
- break;
复制代码一周热门 更多>