欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2722|回復: 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測試大法進行排除,看問題到底是出在哪里?                                                                                             
回復

使用道具 舉報

ID:26206 發表于 2014-11-22 18:02 | 顯示全部樓層
學習下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表