#include"..\lib\8000.h" void WriteRTC(int addr, int data); int MaxDay[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int IsLeapYear(int year) { if(year%4) return 0; if(year%100) return 1; if(year%400) return 0; return 1; } int SetDate(int year,int month,int day) { unsigned days,i; if(month>12 || month<1) return DateError; if(day>31 || day<1) return DateError; if(year>2080 || year<2000) return DateError; days=365*(year-2000)+5; for(i=1;i2000) days+=(year-1997)/4; if(month>2){ if(IsLeapYear(year)){ days++; } } Print("Days=%u\n\r",days); days=(days%7)+1; year%=100; _asm mov ax,year _asm aam _asm shl ah,4 _asm or al,ah _asm xor ah,ah _asm mov year,ax WriteRTC(6,year); _asm mov ax,month _asm aam _asm shl ah,4 _asm or al,ah _asm xor ah,ah _asm mov month,ax WriteRTC(4,month); _asm mov ax,day _asm aam _asm shl ah,4 _asm or al,ah _asm xor ah,ah _asm mov day,ax WriteRTC(3,day); WriteRTC(5,days); return NoError; } void SetWeekDay(int day) { if(day>=1 && day<=7) WriteRTC(5,day); }