| ??? 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 |



