時間可調(diào)的定時鬧鐘C51程序
void jia() //加1子函數(shù)
{
if(cnt==2) //判斷key1按下的次數(shù)是否為2
{
miao++; //是,則秒加1
if(miao>59) //判斷秒是否大于59,是,則秒清零
miao=0;
}
if(cnt==3) //以下含義同上
{
fen++;
if(fen>59)
fen=0;
}
if(cnt==4)
{
shi++;
if(shi>23)
shi=0;
}
if(cnt==5)
{
miao2++;
if(miao2>59)
miao2=0;
}
if(cnt==6)
{
fen2++;
if(fen2>59)
fen2=0;
}
if(cnt==7)
{
shi2++;
if(shi2>23)
shi2=0;
}
}
void jian() //減1子函數(shù)
{
if(cnt==2) //判斷key1按下的次數(shù)是否為2,是則秒減1
{
miao--;
if(miao==255) //判斷秒是否減到255,是,則秒清零
miao=59;
}
if(cnt==3)
{
fen--;
if(fen==255)
fen=59;
}
if(cnt==4)
{
shi--;
if(shi==255)
shi=23;
}
if(cnt==5)
{
miao2--;
if(miao2==255)
miao2=59;
}
if(cnt==6)
{
fen2--;
if(fen2==255)
fen2=59;
}
if(cnt==7)
{
shi2--;
if(shi2==255)
shi2=23;
}
}
void clock() //鬧鈴子函數(shù)
{
if(miao2==miao) //顯判斷秒的數(shù)值是否相等
if(fen2==fen) //是,在判斷分是否相等
if(shi2==shi) //是,再判斷時是否相等
{
flag1=0; //是,則標(biāo)志位,flag1清零
while(!(flag1==100)) //判斷flag1是否到100
{
fmq=0; //沒有,則,繼續(xù)驅(qū)動蜂鳴器響,時間約為:5s
shijian(); //調(diào)用時間子函數(shù)
display(); //調(diào)用顯示子函數(shù)
}
fmq=1;//關(guān)閉蜂鳴器
}
}
void main()
{
init();//調(diào)用初始化子函數(shù)
while(1)
{
key_scan(); //調(diào)用鍵盤掃描子函數(shù)
shijian(); //時間子函數(shù)
clock(); //鬧鐘子函數(shù)
//顯示子函數(shù)
if(cnt==0||cnt==1||cnt==2||cnt==3||cnt==4||cnt==8)
{
display();
}
if(cnt==5||cnt==6||cnt==7)
{
display_1();
}
}
}
void time0() interrupt 1 //定時器0
{
TH0=(65536-50000)/256; //初值50ms
TL0=(65536-50000)%256;
flag++; //標(biāo)志位
flag1++;
}
評論