求论坛高手相助~一个关于KEIL里面的switch语句

2020-02-05 08:59发布

其实就是一个按键的switch语句来的:如下,我只是在那个数码管的地方,换成了其它语句,出现的现象是:switch会不断地执行,比如,我在第一个case中有一个c++;的语句,只要我按了第一个键,那个c就会加到最大值,怎么这样呢,而且,我也不断地修改那个key的值,结果还是一样,只要你按了一个键,它就会在那个case语句里,重复地执行里面的语句。
void delay(uint i);
void main()
{
        uchar key;
        P2=0x00;        
        while(1)
        {
                key=keyscan();  //调用键盘扫描,
                switch(key)
                {
                          case 0x7e:P0=dofly[0];break;//0
                          case 0x7d:P0=dofly[1];break;//1
                          case 0x7b:P0=dofly[2];break;//2
                          case 0x77:P0=dofly[3];break;//3
                          case 0xbe:P0=dofly[4];break;//4
                          case 0xbd:P0=dofly[5];break;//5
                          case 0xbb:P0=dofly[6];break;//6
                          case 0xb7:P0=dofly[7];break;//7
                          case 0xde:P0=dofly[8];break;//8
                          case 0xdd:P0=dofly[9];break;//9
                          case 0xdb:P0=dofly[10];break;//a
                          case 0xd7:P0=dofly[11];break;//b
                          case 0xee:P0=dofly[12];break;//c
                          case 0xed:P0=dofly[13];break;//d
                          case 0xeb:P0=dofly[14];break;//e
                          case 0xe7:P0=dofly[15];break;//f
                }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
20114016039
1楼-- · 2020-02-05 22:47
哇~~解决啦~~高兴死了!
是里面有一些函数在作怪!由于这是工程项目,不方便贴出来!!所以有时候要慢慢去调试,不管是什么问题~~祝大家龙年快乐!
zyyn123
2楼-- · 2020-02-06 03:49
楼主,你再看一下,你的键盘扫描程序的逻辑运算是不是有点问题呀,那个cord_l的值有变化吗?
20114016039
3楼-- · 2020-02-06 09:39
 精彩回答 2  元偷偷看……
boshi1987
4楼-- · 2020-02-06 14:28
我觉得还是用示波器 卡比较好
AllureLove
5楼-- · 2020-02-06 15:09
switch语句里最好不要用++或者—— 很可能会飞掉
信天游
6楼-- · 2020-02-06 19:45
可以在keyscan函数里加入松手检测

一周热门 更多>