Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
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.



List of 16 messages in thread
TopicAuthorDate
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      

Back to Subject List