找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 871|回复: 3
打印 上一主题 下一主题
收起左侧

51单片机按键问题

[复制链接]
跳转到指定楼层
楼主
sbit key3 = P3^3;
sbit key4 = P3^7;                                                                            //按键触发顺序是先按3在按4第4才有反应如果直接按下4没反应        bit keysta,keysta2 = 1;                                                              //独立按键需要每个按键写一个函数吗?
        bit backup,backup2 = 1;
         
void anjian()                                                                                     //按键值已经消抖,按键出发激活事件
{
        if(keysta != backup)                                //è·èÏ°′Ï                  //按键3的事件
                {

                        if(backup == 0)                                        //这里backup与0比较为什么会执行下面的语句,backup=1   bit backup,backup2 = 1;
                                {               
                                        HuiTuChuShiHua();               
                                        HuiTu80();
                                        lcdSHowStr(0,0,"ÄãoÃ123");
                                
                                }
                        backup = keysta;
        
                }
        if(keysta2 != backup2)                                                           //按键4的事件
                {
                        if(backup2 == 0)
                        {
                        
                          lcdSHowStr(0,2,"ÄãoÃ");
                                HuiTuChuShiHua();
                                HuiTuXianShi();        
                        
                           
                        }
                        backup2 = keysta2;        
                }        
        
}                          

void keyscan()                                                                    //中断进入扫描按键的状态
{
        static unsigned char keybuf,keybuf2 = 0xff;
        keybuf = (keybuf<<1)|key3;
        if(keybuf == 0)
                {
                        keysta = 0;
      anjian();
                }
         else if(keybuf == 0xff)
                 {
                        keysta = 1;
                }
        

                 keybuf2 = (keybuf2<<1)|key4;
        if(keybuf2 == 0)
                {
                        keysta2 = 0;
                        anjian();
                }
         else if(keybuf2 == 0xff)
                 {
                        keysta2 = 1;
        
                }
         else
         {
         }
         
}


IMG_20220928_184013.jpg (1.8 MB, 下载次数: 41)

按键3按下显示

按键3按下显示

IMG_20220928_184019.jpg (1.68 MB, 下载次数: 59)

按键4按下显示

按键4按下显示
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:8222 发表于 2022-9-29 00:03 | 只看该作者
那用这么麻烦?
回复

使用道具 举报

板凳
ID:161164 发表于 2022-9-29 10:00 | 只看该作者
创建变量时没有赋值


改成这样看看

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表