Calculating Time for clock's preset


Closed Thread
Results 1 to 34 of 34

Hybrid View

  1. #1
    Join Date
    Jun 2008
    Posts
    84


    Did you find this post helpful? Yes | No

    Default

    I got a solution from a friend:
    This will cover all cases for start: (Same will be for end but with End values)

    HH>StartHH ||
    HH=StartHH & MM>StartMM ||
    HH=StartHH & MM=StartMM & SS>=StartSS

    Should Start programs.
    The only problem is wrap around at 23:59:00 -> 00:00:00
    But this will be handled with a special flag to identify change from PM->AM
    Last edited by menta; - 3rd July 2008 at 17:20.

  2. #2
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Lightbulb

    Quote Originally Posted by menta View Post
    I got a solution from a friend:
    HH>StartHH ||
    HH=StartHH & MM>StartMM ||
    HH=StartHH & MM=StartMM & SS>=StartSS
    Looks like that will work (with some parenthesis added).

    This should work for the rest of it ...
    Code:
    TimeCmpFlags  VAR BYTE
      PastStart   VAR TimeCmpFlags.0
      PastStop    VAR TimeCmpFlags.1
      NextDay     VAR TimeCmpFlags.2
      ProgON      VAR TimeCmpFlags.3
    
    
    CheckTimes:
      TimeCmpFlags = 0  ; clear flags first
    
         ; if the Start and Stop times are the same, then Always OFF 
      if (Stop_H=Start_H) AND _       
         (Stop_M=Start_M) AND _
         (Stop_S=Start_S) then AlwaysOFF                      
    
         ; is it past the Start time?
      if (Hours>Start_H) OR _              
         (Hours=Start_H AND Minutes>Start_M) OR _
         (Hours=Start_H AND Minutes=Start_M AND Seconds>=Start_S) then PastStart=1
    
         ; is it past the Stop time?
      if (Hours>Stop_H) OR _                
         (Hours=Stop_H AND Minutes>Stop_M) OR _
         (Hours=Stop_H AND Minutes=Stop_M AND Seconds>=Stop_S) then PastStop=1
    
         ; does the period end the following day?
      if (Stop_H< Start_H) OR _           
         (Stop_H=Start_H AND Stop_M < Start_M) OR _
         (Stop_H=Start_H AND Stop_M=Start_M AND Stop_S < Start_S) then NextDay=1
        
      ;---------------
      if !NextDay then                               ; same day, use AND
          if PastStart AND !PastStop then ProgON = 1
      else                                           ; next day, use OR
          IF PastStart OR !PastStop then ProgON = 1
      endif
        
      AlwaysOFF:
    return
    Added: You should keep in touch with your "Friend". It was a good "Tip".
    Last edited by Darrel Taylor; - 4th July 2008 at 01:57. Reason: Added:
    DT

  3. #3
    Join Date
    Jun 2008
    Posts
    84


    Did you find this post helpful? Yes | No

    Default

    Thanks,
    But, there is still a problem when there are 2 programs with a gap between each other.
    Second one will always try to make it off as the current time is not in its range, while the first one is on

  4. #4
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    2 programs? What?
    DT

  5. #5
    Join Date
    Jun 2008
    Posts
    84


    Did you find this post helpful? Yes | No

    Default

    yeah,
    The device can have several programs
    e.g
    Start 13:00:00 End 13:30:00
    Start 14:00:00 End 14:30:00
    Start 17:00:00 End 17:30:00

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    You need to start telling us those things at the beginning.

    If you change all the Start/Stop/Flag variables to arrays, it should work with multiple programs.
    .
    DT

  7. #7
    Join Date
    Jun 2008
    Posts
    84


    Did you find this post helpful? Yes | No

    Default

    Can you detail more abit about the array ?
    Thanks.

Similar Threads

  1. I don't understand this code!
    By Russ Kincaid in forum mel PIC BASIC Pro
    Replies: 46
    Last Post: - 13th February 2008, 02:55
  2. Measuring time
    By AugustoPedrone in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 30th July 2007, 23:46
  3. Serout2/serin2 Pbp Problem
    By SOMRU in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 11th December 2006, 19:55
  4. Calculating elapsed time, how?
    By Eng4444 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 1st June 2006, 09:00
  5. Timer in real time
    By martarse in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 29th July 2005, 14:24

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts