這是我做時鐘的按鍵程序,你可以參考一下。主要是選擇按鍵的次數要用一個變量來表示,比如knum=0,knum=2。
void keyscan() //按鍵掃描函數
{
if(s3==0) //選擇按鍵按下
{
delay(10);
if(s3==0)
{
while(!s3)
display(shi,fen,miao); //加上這句,按鍵按下就不會閃
knum++;
if(knum==1) //分閃爍
{
write_1302(0x8e,0x00); //保護取消
write_1302(write_miao,0x80);
}
if(knum==3) //時鐘啟動
{
knum=0;
write_1302(write_miao,0x00);
write_1302(0x8e,0x80); //保護啟動
}
}
}
if(knum==1) //分鐘調節
{
if(s1==0) //加
{
delay(10);
if(s1==0)
{
while(!s1)
display(shi,fen,miao); //加上這句,按鍵按下就不會閃
fen++;
fen=fen/10*16+fen%10; //轉為16進制
if(fen==0x60)
fen=0x00;
write_1302(write_fen,fen); //寫入1302
read_sf(); //讀出時間,然后顯示
}
}
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2)
display(shi,fen,miao); //加上這句,按鍵按下就不會閃
fen--;
fen=fen/10*16+fen%10; //轉為16進制
if(fen==-1)
fen=0x59;
write_1302(write_fen,fen);
read_sf();
}
}
}
if(knum==2)
{
if(s1==0)
{
delay(10);
if(s1==0)
{
while(!s1)
display(shi,fen,miao); //加上這句,按鍵按下就不會閃
shi++;
shi=shi/10*16+shi%10; //轉為16進制
if(shi==0x24)
shi=0x00;
write_1302(write_shi,shi);
read_sf();
}
}
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2)
display(shi,fen,miao); //加上這句,按鍵按下就不會閃
shi--;
shi=shi/10*16+shi%10; //轉為16進制
if(shi==-1)
shi=0x23;
write_1302(write_shi,shi);
read_sf();
}
}
}
} |