普中精灵项目电子手表:4写key2

看了示例程序‘

可以将标志符号组成结构体

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)
	}

这样程序比我的方便理解

此外加减可以放到一个标志位

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值