看了示例程序‘
可以将标志符号组成结构体
typedef struct{
u8 Timeflag;//Çл»ÄÖÖÓÉèÖÃ/ʱ¼äÉèÖÃ/Õý³£ÏÔʾ
u8 Dateflag;//Çл»Ê±·ÖÃë»òÄêÔÂÈÕ½çÃæ
u8 Bitflag; //Çл»ÐÞ¸Äʱ¼ä
u8 addadd; //ÐÞ¸Äʱ¼äʱ¼Ó»ò¼õ
}TypeFlag;
extern TypeFlag Myflag;
这样所有标志符号都都能方便管理
将key函数改写为
switch(key)/*Ëĸö¶ÀÁ¢°´¼üµÄÅжÏ*/
{
case KEY1_PRESS://ÉèÖÃʱ¼ä++(K1)
Myflag.addadd=1;
break;
case KEY2_PRESS://ÉèÖÃʱ¼ä--(K2)
Myflag.addadd=2;
break;
case KEY3_PRESS://(K3)
if(Myflag.Bitflag<=1)
{
Myflag.Bitflag=7;
}
else
{
Myflag.Bitflag-=3;
}
break;
case KEY4_PRESS://È·ÈÏÉèÖÃʱ¼ä(K4)
if(Myflag.Timeflag==1)
{
RTC_Set(MyTime.w_year,MyTime.w_month,MyTime.w_date,MyTime.hour,MyTime.min,MyTime.sec); //ÉèÖÃʱ¼ä
}
else if(Myflag.Timeflag==2)
{
RTC_Alarm_Set(MyTime.w_year,MyTime.w_month,MyTime.w_date,MyTime.hour,MyTime.min,MyTime.sec);//ÉèÖÃÄÖÖÓ
tim=MyTime.sec;
}
Myflag.Timeflag=0;
break;
}
其中
MyTime为设置时间的结构体,定义为
typedef struct{
/*´æ´¢µ±Ç°Ê±¼ä*/
u8 hour;
u8 min;
u8 sec;
u16 w_year;
u8 w_month;
u8 w_date;
u8 week;
/*½øÈ붨ÄÖÖÓ»òÕßÐÞ¸Äʱ¼ä½çÃæÒªÓõ½*/
u8 shi;
u8 fen;
u8 miao;
u16 nian;
u16 yue;
u16 ri;
}TypeTime;
extern TypeTime MyTime;
key矩阵函数为
switch(keynum)/*16¸ö¾ØÕó°´¼üµÄÅжÏ*/
{
case 1:Myflag.Bitflag=0;break;//Ñ¡ÔñµÚÒ»¸öλ
case 2:Myflag.Bitflag=1;break;
case 3:Myflag.Bitflag=2;break;
case 4:Myflag.Bitflag=3;break;
case 5:Myflag.Bitflag=4;break;
case 6:Myflag.Bitflag=5;break;
case 7:Myflag.Bitflag=6;break;
case 8:Myflag.Bitflag=7;break;
case 9: break;
case 10:break;
case 11:break;
case 12:break;
case 13:Myflag.Timeflag=0;break;//Õý³£Ê±¼ä½çÃæ(S13)
case 14:Myflag.Timeflag=1;break;//ÉèÖÃʱ¼ä½çÃæ(S14)
case 15:Myflag.Timeflag=2;break;//ÄÖÖÓʱ¼ä½çÃæ(S15)
case 16:
Myflag.Dateflag=!Myflag.Dateflag;
Myflag.Bitflag=7;
break;//Ñ¡ÔñÏÔʾʱ·ÖÃë½çÃæ»òÕßÄêÔÂÈÕ½çÃæ(S16)
}
这样程序比我的方便理解
此外加减可以放到一个标志位