|
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一次,啟動(dòng)M64 INT6中斷
}
else if(Key_Status==12)//#取包鍵
{
Code_Buf_Init();
Time_Wait=0;//按鍵間隔時(shí)間5秒以上沒(méi)反應(yīng)退出
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出現(xiàn)則代表直接退出
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;//密碼輸入超時(shí)退出,M64判斷接收的數(shù)據(jù)是否有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顯示請(qǐng)按存包鍵后存包,按取包鍵后手動(dòng)輸入
數(shù)字密碼取包
SPI_Send(0x30);
SPI_Send(0x30);
SPI_Send(0x16);
SPI_Send(0x37);
SPI_Send(0x39);*/
}
}
}
采用了回轉(zhuǎn)掃描法取按鍵值,現(xiàn)在測(cè)試執(zhí)行下來(lái),基本功能都很正常,就是郁悶的取包鍵(#)那個(gè)功能,第一次按下去,如果5秒鐘沒(méi)鍵響應(yīng)或輸入滿10個(gè)密碼數(shù)字或按了*或#后都能正常退出WHILE循環(huán),但是第二次再按#后,測(cè)試下來(lái)發(fā)現(xiàn)程序居然直接工作了第一個(gè)IF判斷后馬上退出了WHILE循環(huán),紅色LED閃半秒,然后再按#,又正常如初,如果10位密碼數(shù)字沒(méi)輸入完,按了#中途退出,則再按#進(jìn)入密碼輸入狀態(tài)時(shí)無(wú)這種現(xiàn)象,郁悶,正在用LED測(cè)試大法進(jìn)行排除,看問(wèn)題到底是出在哪里?
|
|