久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2594|回復: 1
打印 上一主題 下一主題
收起左側

回轉掃描法取按鍵值的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:68618 發表于 2014-11-22 15:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void Key_Check(void)
   {
       Key_Status=Scan_Store_Key();
      if((Key_Status>0)&&(Key_Status<13))
      {
          if(Key_Status==10)//*存包鍵
           {
                STORE_CLR;
                STORE_OUT;
                Delay_us(50);
                STORE_SET;
                Delay_us(100);
                STORE_CLR;//RISING一次,啟動M64 INT6中斷
           }  
         else if(Key_Status==12)//#取包鍵
          {
                Code_Buf_Init();
                Time_Wait=0;//按鍵間隔時間5秒以上沒反應退出
                Code_Buf[0]=0x03;
                SN=1;  
                LED_GREEN_OUT;
                LED_GREEN_ON;   
                while(1)
                 {
                         Key_Status0=Scan_Key();//2ms掃描一次
                        if((Key_Status0>0)&&(Key_Status0<13))
                         {
                               if((Key_Status0==10)||(Key_Status0==12))//*,#,直接退出
                                {
                                       Time_Wait=0;
                                       Code_Buf[SN]=0x41;
                                       //SPI_Send(Code_Buf[SN]);//M64里判斷如果有10出現則代表直接退出
                                       SN++;
                                       Code_Buf[SN]=0x06;
                                       //SPI_Send(Code_Buf[SN]);
                                       Check_Sum(&Code_Buf[0],&Check_Buf[0]);
                                      //SPI_Send(Check_Buf[0]);
                                      //SPI_Send(Check_Buf[1]);
                                        LED_RED_OUT;
                                        LED_RED_ON;
                                        Delay_ms(500);
                                        LED_RED_OFF;
                                        LED_GREEN_OFF;
                                        break;
                                    }  
                                  else if(Key_Status0==11)
                                    {
                                         Code_Buf[SN]=0x30;
                                         SN++;
                                         //SPI_Send(0x30);
                                         Time_Wait=0;
                                         if(SN>10)
                                          {
                                               Code_Buf[11]=0x06;//完整10位密碼
                                               Check_Sum(&Code_Buf[0],&Check_Buf[0]);
                                               //SPI_Send(Check_Buf[0]);
                                               //SPI_Send(Check_Buf[1]);
                                               LED_RED_OUT;
                                               LED_RED_ON;
                                               Delay_ms(1000);
                                               LED_RED_OFF;
                                               LED_GREEN_OFF;
                                               break;
                                             }
                                        }  
                                      else
                                        {
                                             Code_Buf[SN]=DEC_To_ASCII(Key_Status0);
                                             SN++;
                                             Time_Wait=0;
                                             //SPI_Send(Code_Buf[SN]);
                                             if(SN>10)
                                              {
                                                     Code_Buf[11]=0x06;//完整10位密碼
                                                     Check_Sum(&Code_Buf[0],&Check_Buf[0]);
                                                     //SPI_Send(Check_Buf[0]);
                                                     //SPI_Send(Check_Buf[1]);
                                                     LED_RED_OUT;
                                                     LED_RED_ON;
                                                     Delay_ms(1000);
                                                     LED_RED_OFF;
                                                     LED_GREEN_OFF;
                                                     break;
                                                 }
                                            }         
                                      }
                                    else
                                      {
                                             Time_Wait++;
                                      }
                                    if(Time_Wait>2500)
                                     {
                                            Code_Buf[SN]=0x06;//密碼輸入超時退出,M64判斷接收的數據是否有10位即可
                                            //SPI_Send(Code_Buf[SN]);
                                            Check_Sum(&Code_Buf[0],&Check_Buf[0]);
                                            //SPI_Send(Check_Buf[0]);
                                            //SPI_Send(Check_Buf[1]);
                                            LED_RED_OUT;
                                            LED_RED_ON;
                                            Delay_ms(2000);
                                            LED_RED_OFF;
                                            LED_GREEN_OFF;
                                            break;
                                      }         
                              }      
                       }
                     else
                       {
                              /*SPI_Send(0x03);//03,30,30,16,37,39,M64 LCD顯示請按存包鍵后存包,按取包鍵后手動輸入
                                                                   數字密碼取包
                             SPI_Send(0x30);
                             SPI_Send(0x30);
                             SPI_Send(0x16);
                             SPI_Send(0x37);
                             SPI_Send(0x39);*/
                        }   
                }
         }         
采用了回轉掃描法取按鍵值,現在測試執行下來,基本功能都很正常,就是郁悶的取包鍵(#)那個功能,第一次按下去,如果5秒鐘沒鍵響應或輸入滿10個密碼數字或按了*或#后都能正常退出WHILE循環,但是第二次再按#后,測試下來發現程序居然直接工作了第一個IF判斷后馬上退出了WHILE循環,紅色LED閃半秒,然后再按#,又正常如初,如果10位密碼數字沒輸入完,按了#中途退出,則再按#進入密碼輸入狀態時無這種現象,郁悶,正在用LED測試大法進行排除,看問題到底是出在哪里?                                                                                             
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:26206 發表于 2014-11-22 18:02 | 只看該作者
學習下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合一区二区三区 | 亚洲成人av| 国产精品一区二区在线 | 免费99视频 | 久久久女 | 九九久久久久久 | 在线黄色网 | 久久com | 国产成人99久久亚洲综合精品 | 国产成人精品免高潮在线观看 | 久久一区二区免费视频 | 国产精品一区一区 | 亚洲国产精品久久 | 久久久久一区二区三区 | 一区二区三区高清 | 午夜伦理影院 | 久久久妇女国产精品影视 | 农村妇女毛片精品久久久 | 黄色大片在线视频 | 天堂中文在线播放 | 99精品国产一区二区三区 | 午夜播放器在线观看 | 日韩视频免费 | caoporon| 韩三级在线观看 | 国产一区二区三区在线 | 欧美成人高清视频 | 久久美国 | 91免费在线 | 一级黄色片在线免费观看 | 9191成人精品久久 | 天天天操操操 | 亚洲在线| 波多野结衣亚洲 | 国产成人精品久久 | 91九色porny首页最多播放 | 精品久久久一区 | 久久久精品在线 | 三级欧美 | 日日天天 | 国产乱码精品一区二区三区五月婷 |