??? 07/21/04 12:37 Read: times |
#74569 - RE: function mktime(....) Responding to: ???'s previous message |
If you want to write the 8051 version of mktime(), you may consider writing some table driven code, which will reduce the complexity of your arithmetic routines.
YEAR_IN_SECONDS: ;(Little Endian) DB 080H, 043H, 06DH, 038H ;Sat Jan 01 00:00:00 2000 DB 080H, 0C8H, 04FH, 03AH ;Mon Jan 01 00:00:00 2001 DB 000H, 0FCH, 030H, 03CH ;Tue Jan 01 00:00:00 2002 DB 080H, 02FH, 012H, 03EH ;Wed Jan 01 00:00:00 2003 DB 000H, 063H, 0F3H, 03FH ;Thu Jan 01 00:00:00 2004<--- DB 000H, 0E8H, 0D5H, 041H ;Sat Jan 01 00:00:00 2005 DB 080H, 01BH, 0B7H, 043H ;Sun Jan 01 00:00:00 2006 DB 000H, 04FH, 098H, 045H ;Mon Jan 01 00:00:00 2007 DB 080H, 082H, 079H, 047H ;Tue Jan 01 00:00:00 2008 DB 080H, 007H, 05CH, 049H ;Thu Jan 01 00:00:00 2009 DB 000H, 03BH, 03DH, 04BH ;Fri Jan 01 00:00:00 2010 MONTH_IN_SECONDS: ;Non-Leap Year DB 000H, 000H, 000H, 000H ;Jan DB 080H, 0DEH, 028H, 000H ;Feb DB 080H, 0C8H, 04DH, 000H ;Mar DB 000H, 0A7H, 076H, 000H ;Apr DB 000H, 034H, 09EH, 000H ;May DB 080H, 012H, 0C7H, 000H ;June DB 080H, 09FH, 0EEH, 000H ;July DB 000H, 07EH, 017H, 001H ;Aug DB 080H, 05CH, 040H, 001H ;Sept DB 080H, 0E9H, 067H, 001H ;Oct DB 000H, 0C8H, 090H, 001H ;Nov DB 000H, 055H, 0B8H, 001H ;Dec LEAP_YEAR_MONTH_IN_SECONDS: ;Leap Year DB 000H, 000H, 000H, 000H ;Jan DB 080H, 0DEH, 028H, 000H ;Feb DB 000H, 01AH, 04FH, 000H ;Mar DB 080H, 0F8H, 077H, 000H ;Apr DB 080H, 085H, 09FH, 000H ;May DB 000H, 064H, 0C8H, 000H ;June DB 000H, 0F1H, 0EFH, 000H ;July<---- DB 080H, 0CFH, 018H, 001H ;Aug DB 000H, 0AEH, 041H, 001H ;Sept DB 000H, 03BH, 069H, 001H ;Oct DB 080H, 019H, 092H, 001H ;Nov DB 080H, 0A6H, 0B9H, 001H ;Dec DAY_IN_SECONDS: DB 000H, 000H, 000H, 000H ;01 DB 080H, 051H, 001H, 000H ;02 DB 000H, 0A3H, 002H, 000H ;03 DB 080H, 0F4H, 003H, 000H ;04 DB 000H, 046H, 005H, 000H ;05 DB 080H, 097H, 006H, 000H ;06 DB 000H, 0E9H, 007H, 000H ;07 DB 080H, 03AH, 009H, 000H ;08 DB 000H, 08CH, 00AH, 000H ;09 DB 080H, 0DDH, 00BH, 000H ;10 DB 000H, 02FH, 00DH, 000H ;11 DB 080H, 080H, 00EH, 000H ;12 DB 000H, 0D2H, 00FH, 000H ;13 DB 080H, 023H, 011H, 000H ;14 DB 000H, 075H, 012H, 000H ;15 DB 080H, 0C6H, 013H, 000H ;16 DB 000H, 018H, 015H, 000H ;17 DB 080H, 069H, 016H, 000H ;18 DB 000H, 0BBH, 017H, 000H ;19 DB 080H, 00CH, 019H, 000H ;20 <----- DB 000H, 05EH, 01AH, 000H ;21 DB 080H, 0AFH, 01BH, 000H ;22 DB 000H, 001H, 01DH, 000H ;23 DB 080H, 052H, 01EH, 000H ;24 DB 000H, 0A4H, 01FH, 000H ;25 DB 080H, 0F5H, 020H, 000H ;26 DB 000H, 047H, 022H, 000H ;27 DB 080H, 098H, 023H, 000H ;28 DB 000H, 0EAH, 024H, 000H ;29 DB 080H, 03BH, 026H, 000H ;30 DB 000H, 08DH, 027H, 000H ;31 Example: 00:00:00 July 7th, 2004 0x3FF36300 + 0x00EFF100 + 0x00190C80 = 0x40FC6080 You may add 3600 seconds (typically) if Daylight Saving Time adjustment is needed. |
Topic | Author | Date |
function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
Epoch significance - Steve | 01/01/70 00:00 | |
RE: Epoch significance - Steve | 01/01/70 00:00 | |
RE: Epoch significance - Steve | 01/01/70 00:00 | |
RE: Epoch significance - Steve | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
RE: function mktime(....) | 01/01/70 00:00 | |
Nice to know - Paul Vermeer![]() | 01/01/70 00:00 |