|
//s1加鍵,s2減鍵,s3設(shè)置鍵,knum是設(shè)置鍵按下的次數(shù)
//現(xiàn)在加,減調(diào)節(jié)都正常;
//現(xiàn)在想在按下設(shè)置鍵,對(duì)時(shí)后過(guò)幾秒鐘使時(shí)鐘自行啟動(dòng)走;
//后面寫(xiě)了一段程序,按下設(shè)置鍵不做任何操作過(guò)10秒啟動(dòng)時(shí)鐘走時(shí),
//現(xiàn)在問(wèn)題是按下設(shè)置鍵,按加、減鍵調(diào)時(shí),如果從1加到59,時(shí)間沒(méi)對(duì)好就啟動(dòng)時(shí)鐘走時(shí)了,怎么做才能使時(shí)間對(duì)好后過(guò)幾秒自動(dòng)啟動(dòng)走時(shí)呢?
void keyscan() //按鍵掃描函數(shù)
{
if(s3==0) //選擇按鍵按下
{
delay(10); //延時(shí)
if(s3==0)
{
while(!s3) //松手檢測(cè),這句后面不能加分號(hào),不然按鍵按下所以數(shù)碼管會(huì)滅,松手后才亮
display(shi,fen,miao); //加上這句,按鍵按下對(duì)應(yīng)的位置就會(huì)閃
knum++;
if(knum==1) //分閃爍
{
write_1302(0x8e,0x00); //寫(xiě)保護(hù)取消
write_1302(write_miao,0x80); // 寫(xiě)秒80,時(shí)鐘停止走時(shí);
}
if(knum==3) //時(shí)鐘啟動(dòng)
{
knum=0;
write_1302(write_miao,0x00);
write_1302(0x8e,0x80); //保護(hù)啟動(dòng)
}
}
}
if(knum==1) //分鐘調(diào)節(jié)
{
if(s1==0) //加
{
delay(10);
if(s1==0)
{
while(!s1)
display(shi,fen,miao); //加上這句,按鍵按下就會(huì)閃
fen++;
fen=fen/10*16+fen%10; //轉(zhuǎn)為16進(jìn)制
if(fen==0x60)
fen=0x00;
write_1302(write_fen,fen); //寫(xiě)入1302
read_sf(); //讀出時(shí)間,然后顯示
}
}
if(s2==0)
{
delay(10);
if(s2==0)
{
while(!s2)
display(shi,fen,miao); //加上這句,按鍵按下就會(huì)閃
fen--;
fen=fen/10*16+fen%10; //轉(zhuǎn)為16進(jìn)制
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); //加上這句,按鍵按下就會(huì)閃
shi++;
shi=shi/10*16+shi%10; //轉(zhuǎn)為16進(jìn)制
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); //加上這句,按鍵按下就會(huì)閃
shi--;
shi=shi/10*16+shi%10; //轉(zhuǎn)為16進(jìn)制
if(shi==-1)
shi=0x23;
write_1302(write_shi,shi);
read_sf();
}
}
}
if(knum!=0 ) //在設(shè)置狀態(tài)下,x秒鐘不做任何操作,則自動(dòng)退出設(shè)置狀態(tài),時(shí)鐘啟動(dòng),走時(shí)。
{
if( (s1!=0)&&(s2!=0) )
{
TR1=1; //啟動(dòng)定時(shí)器
if(zs==10)
{
zs=0;
knum=0; //設(shè)置按鍵次數(shù)清零
TR1=0; //關(guān)閉定時(shí)器
write_1302(write_miao,0x00); //寫(xiě)秒0,時(shí)鐘啟動(dòng),走時(shí)。
write_1302(0x8e,0x80); //保護(hù)啟動(dòng)
}
}
}
}
void temer2() interrupt 3 //50毫秒中斷
{
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
ss1++;
if(ss1==20) //到1秒
{
ss1=0;
zs++;
}
}
|
|