标题: 51单片机按键问题 [打印本页]

作者: STC12F    时间: 2022-9-28 18:59
标题: 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, 下载次数: 84)

按键3按下显示

按键3按下显示

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

按键4按下显示

按键4按下显示

作者: 温xyz    时间: 2022-9-29 00:03
那用这么麻烦?
作者: lkc8210    时间: 2022-9-29 10:00
创建变量时没有赋值


改成这样看看






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1