求高人指点按键扫描的思想

2020-01-30 13:57发布

本人是刚接触单片机的菜鸟,现在想做个小模块。
是这样的,有A,B,C三件事,通过一个按键在A,B,C之间选择,当按1下,执行A;再按1下,执行B;再按1下,执行C;再按1下,又回到A.其中有个D函数是A,B,C都得调用它,也就是A要完成A的事要调用D,B要完成B的事要调用D,C要完成C的事要调用D;同时我用马老的状态机原理编了个键盘扫描的程序的程序可以用。
希望高人能指点下实现这些功能应该怎样弄
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
jswd0810
1楼-- · 2020-01-31 13:47
你不要在程序中用for(;;)那种循环来延时,如果不能做到,你就把switch放到中断里去处理
.titrwh
2楼-- · 2020-01-31 15:31
中断里放标志位,主程序检测。
电子爱好者_MCU
3楼-- · 2020-01-31 20:31
如果感觉按键扫描太麻烦,可以采用AD按键 只需一个接口 那么比较简单 扩展的按键也比较多
limmy321
4楼-- · 2020-01-31 22:59
本帖最后由 limmy321 于 2013-3-29 14:50 编辑

中断也不行,可能是时间没把握好,我还是把代码贴出来吧,大家帮忙看看
jswd0810
5楼-- · 2020-02-01 04:44
 精彩回答 2  元偷偷看……
limmy321
6楼-- · 2020-02-01 08:28
本帖最后由 limmy321 于 2013-3-29 15:11 编辑

#include<REG52.H>
#include<intrins.h>
#include <absacc.h>
#include "GONGYONG.h"  
#include "DANSE.h"          
#include "TUOWEI.h"          
#include "TUIJIN.h"          
#include "KEY.h"
#define uint unsigned int  
#define uchar unsigned char
void main(void)
{   delay1();
        delay1();
        delay1();
        delay1();
        delay1();
        delay1();
        while(1)
        {
     read_mode() ;
         }      
}



main()这有这些,后面的是没删掉的,不好意思,我改好了

一周热门 更多>