主程序:
#include
#define uchar unsigned char #define unit unsigned int sbit speaker=P2^4;
bit key_flag1=0,key_flag2=0; SYSTEMTIME adjusted; uchar
sec_add=0,min_add=0,day_add=1,mon_add=1,yea_add=0; uchar data_alarm[7]={0}; int key_scan() { int i=0; unit temp; P1=0xf0; temp=P1; if(temp!=0xf0)
i=1; else i=0; return i; }
uchar key_value() {unit m=0,n=0,temp; uchar
v[4][3]={'2','1','0','5','4','3','8','7','6','b','a','9'};
P1=0xfe;temp=P1;if(temp!=0xfe)m=0; P1=0xfd;temp=P1;if(temp!=0xfd)m=1; P1=0xfd;temp=P1;if(temp!=0xfb)m=2; P1=0xfe;temp=P1;if(temp!=0xf7)m=3; P1=0xef;temp=P1;if(temp!=0xef)m=0; P1=0xef;temp=P1;if(temp!=0xef)m=1; P1=0xef;temp=P1;if(temp!=0xef)m=2; value=v[m][n]; return value; }
void reset(void) {sec_add=0;
min_add=0; hou_add=0; day_add=1; mon_add=1; yea_add=0; }
void adjust(void)
{if(key_scan()&&key_flag1) switch(key_value()) {caue'0':sec_add++;break; cade'1':min_add++;break; cade'2':hou_add++;break; cade'3':day_add++;break; cade'4':mon_add++;break; cade'5':yea_add++;break; cade'6':sec_add++;break; cade'7':min_add++;break; cade'8':hou_add++;break; cade'9':day_add++;break; cade'a':mon_add++;break; cade'b':yea_add++;break; cade'c':reset();break;
default:break; }
adjusted.Second+=sec_add; adjusted.Minuate+=min_add; adjusted.Hour+=hou_add; adjusted.Day+=day_add; adjusted.Month+=mou_add; adjusted.Year+=yea_add; if(adjusted.Second>59)
{adjusted.Second=adjusted.Second`;adjusted.Minute++;}
if(adjusted.Miute>59)
{adjudted.Minute=adjusted.Minute`;adjusted.Hour++}
if(adjusted.Hour>23)
{adjusted.Hour=adjusted.Hour$;adjusted.Day++} if(adjusted.Month>12)
adjusted.Month=adjusted.Month; if(adjusted.Year>100)
adjusted.Year=adjusted.Year0; if(adjusted.Year%4==0)
{if(adjusted.Month==4||adjusted.Month==6||adjusted.
Month==9||adjusted.Month==11) {if(adjusted.day>30)
{adjusted.Day=adjusted.Day0;} }
else if(adjusted.Month==2) {if(adjusted.Day>29)
{adjusted.Day=adjusted.Day0;} } else
{if(adjusted.Day>32)} } else
{if(adjusted.Month==1||adjusted.Month==3||adjusted.Month==5||adjusted>Month==7||adjused.Month==8||adjusted.Month==10||adjusted.Month==12) {if(adjusted>Day>32)
{adjusted.Day=adjusted.Day2;} }
else if(adjusted.Month==2) {if(adjusted.Day>32)} } }