日本的手持pda源码.wince下使用,完全开源

源代码在线查看: rtc.c

软件大小: 193 K
上传用户: a22aa11a
关键词: wince pda 日本 手持
下载地址: 免注册下载 普通下载 VIP

相关代码

																#include 								#include "defs.h"				#include "mem.h"				#include "rtc.h"								struct rtc rtc;								static int syncrtc = 1;								void rtc_latch(byte b)				{					if ((rtc.latch ^ b) & b & 1)					{						rtc.regs[0] = rtc.s;						rtc.regs[1] = rtc.m;						rtc.regs[2] = rtc.h;						rtc.regs[3] = rtc.d;						rtc.regs[4] = (rtc.d>>9) | (rtc.stop						rtc.regs[5] = 0xff;						rtc.regs[6] = 0xff;						rtc.regs[7] = 0xff;					}					rtc.latch = b;				}								void rtc_write(byte b)				{					/* printf("write %02X: %02X (%d)\n", rtc.sel, b, b); */					if (!(rtc.sel & 8)) return;					switch (rtc.sel & 7)					{					case 0:						rtc.s = rtc.regs[0] = b;						while (rtc.s >= 60) rtc.s -= 60;						break;					case 1:						rtc.m = rtc.regs[1] = b;						while (rtc.m >= 60) rtc.m -= 60;						break;					case 2:						rtc.h = rtc.regs[2] = b;						while (rtc.h >= 24) rtc.h -= 24;						break;					case 3:						rtc.regs[3] = b;						rtc.d = (rtc.d & 0x100) | b;						break;					case 4:						rtc.regs[4] = b;						rtc.d = (rtc.d & 0xff) | ((b&1)						rtc.stop = (b>>6)&1;						rtc.carry = (b>>7)&1;						break;					}				}								void rtc_tick()				{					if (rtc.stop) return;					if (++rtc.t == 60)					{						if (++rtc.s == 60)						{							if (++rtc.m == 60)							{								if (++rtc.h == 24)								{									if (++rtc.d == 365)									{										rtc.d = 0;										rtc.carry = 1;									}									rtc.h = 0;								}								rtc.m = 0;							}							rtc.s = 0;						}						rtc.t = 0;					}				}								void rtc_save_internal(FILE *f)				{					fprintf(f, "%d %d %d %02d %02d %02d %02d\n%d\n",						rtc.carry, rtc.stop, rtc.d, rtc.h, rtc.m, rtc.s, rtc.t,						time(0));				}								void rtc_load_internal(FILE *f)				{					int rt = 0;					fscanf(						f, "%d %d %d %02d %02d %02d %02d\n%d\n",						&rtc.carry, &rtc.stop, &rtc.d,						&rtc.h, &rtc.m, &rtc.s, &rtc.t, &rt);					while (rtc.t >= 60) rtc.t -= 60;					while (rtc.s >= 60) rtc.s -= 60;					while (rtc.m >= 60) rtc.m -= 60;					while (rtc.h >= 24) rtc.h -= 24;					while (rtc.d >= 365) rtc.d -= 365;					rtc.stop &= 1;					rtc.carry &= 1;					if (rt) rt = (time(0) - rt) * 60;					if (syncrtc) while (rt-- > 0) rtc_tick();				}																																																							

相关资源