源程序,如果有用,算是春节没白干
bit time_over_test(void) { uchar i; char *date_p; date_p=&last_time.minute; i=90; do {if(date_same_test(&last_time.minute,&date.minute))//比较时间是否相同 {return(0);} //时间相同则返回未超时标志 if(i==60)//过去时间连加30分钟后,指针切换为当前时间,连加60分钟,前30分钟为补时同步 {date_p=&date.minute;} (*date_p)++; //分钟+=1 date_compute(date_p); //重新计算分钟变更后的日历 }while(--i); return(1); }
//---比较两个日期时间是否相等,相等则返回=1,不相等则返回=0----- bit date_same_test(char *date_p1,char *date_p2) {uchar i; i=5; do{if(*date_p1++!=*date_p2++) {return(0);} }while(--i); return(1); } //---进行日历计算,入口参数指向分钟,指针加指向小时,以次类推---------------------- void date_compute(char *date_p) {//FSR=date_p; uchar i=*(date_p+3);//缓存月份 uchar j=*(date_p+4)&0x03; if(j==0&&i==2) {j=1;} else{j=0;} i=days_month+j; if(*date_p>=60) {*(date_p++)-=60;//分钟累加,指针指向小时 if(++(*date_p)>=24)//小时>24? {*(date_p++)=0; //hour 清零指针指向天 (*date_p)++; //天+=1 if(*date_p>i)//天>当月天数? {*(date_p++)=1; //天=1号 (*date_p)++; //月份+=1 if(*date_p>12) //月份>12? {*(date_p++)=1; //月份=1; (*date_p)++; //年+=1 } } } } } |
|