按鍵按下給低電平 怎么正確使用 k1_flag 來實現k1鍵按下保持低電平同時進入功能菜單
uchar k1_flag = 0;
void keyscan()//菜單鍵按下掃描函數定義
{
k1=1;
k2=1;//
k3=1;//
k4=1;//
//判斷菜單鍵k1是否按下
if(k1==0)
{
delay(5);
if(k1==0)
{
while(!k1);//松手檢測
k1_num++;//記錄菜單鍵k1是第幾次按下,而判斷是調節秒、分還是時。
if(k1_num==1 )//指示調節秒
{
EX0=0;//關閉外部中斷0,使時間走動停止,準備調時間
ds1307_write_date(0xd0,0,0x80|b_second);
lcd_write_com(0x80+0x40+12);//數據指針和光標移動秒出
lcd_write_com(0x0f);//使光標顯示,并光標處字符格符閃爍,用來提示用戶此時可以調節是秒,是分還是時。
}
if(k1_num==2)//指示調節分
{
lcd_write_com(0x80+0x40+9);//數據指針和光標移動分出
}
if(k1_num==3)//指示調節時
{
lcd_write_com(0x80+0x40+6);//數據指針和光標移動時出
}
if(k1_num==4)//退出時間調節菜單
{
k1_num=0;//菜單鍵k0按下清零
lcd_write_com(0x0c);//恢復到時鐘走動狀態,即光標不顯示,不閃爍
//將所調的時間轉換成bcd碼
b_second=dectobcd(second);
b_minute=dectobcd(minute);
b_hour=dectobcd(hour);
//將所調的時間向時鐘寫入
ds1307_write_date(0xd0,2,b_hour);
ds1307_write_date(0xd0,1,b_minute);
ds1307_write_date(0xd0,0,b_second);
EX0=1;//開外部中斷0,時間開始繼續走動
}
}
}
|