Counter problem


Closed Thread
Results 1 to 7 of 7

Thread: Counter problem

Hybrid View

  1. #1
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Code:
    sec VAR BYTE ' seconds
    mins VAR BYTE ' minutes
    hr VAR BYTE ' hours
    day VAR BYTE ' day
    date VAR BYTE ' date
    mon VAR BYTE ' month
    yr VAR BYTE ' year
     'DEC VARS
    SEC_O   VAR BYTE
    SEC_T   VAR BYTE
    MIN_O   VAR BYTE
    MIN_T   VAR BYTE
    HR_O    VAR BYTE
    HR_T    VAR BYTE
    MON_O   VAR BYTE
    MON_T   VAR BYTE
    DATE_O  VAR BYTE
    DATE_T  VAR BYTE
    YR_O    VAR BYTE
    YR_T    VAR BYTE
    
        '#################################################
    READ_RTC:
    I2CREAD DS_SDA, DS_SCL, RTC, SecReg, [sec,mins,hr,day,date,mon,yr]
    
    SEC_T = sec & $70
    SEC_T = SEC_T>>4
    SEC_O = sec & $0F
    
    MIN_T = mins & $70
    MIN_T = MIN_T>>4
    MIN_O = MINs & $0F
    
    HR_T = hr & $70
    HR_T = HR_T>>4
    HR_O = hr & $0F
    
    MON_T = mon & $70
    MON_T = MON_T>>4
    MON_O = mon & $0F
    
    DATE_T = date & $70
    DATE_T = DATE_T>>4
    DATE_O = date & $0F
    
    YR_T = yr & $70
    YR_T = YR_T>>4
    YR_O = yr & $0F
    Dave
    Always wear safety glasses while programming.

  2. #2
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    Hey dave, thanks for the help. I had written this program with two Subroutine that I found on this site somewhere.. I will test it tonight.
    Code:
    CountDown:
    I2CWRITE SDApin,SCLpin,$D0,$00,[$00,$00,$00,$00,$00,$00,$00,$00] ' Write to DS1307 to start counter at ZERO
    Pause 20
    	while RTCHour != 1
    
    			I2CRead SDApin,SCLpin,$D0,$00,[RTCSec,RTCMin,RTCHour,RTCWDay,RTCDay,RTCMonth,RTCYear,RTCCtrl]  
    			Pause 20
    				'Will get the time from timer chip and do a 60 min count down
    				'Also add interrupt if someone presses start to view the charge/discharge cycle
    				
    				TempVal=RTCSec
    				GoSub BCD_TO_BIN
    				Secs=TempVal
    
    				TempVal=RTCmin
    				GoSub BCD_TO_BIN
    				Mins=TempVal
    
    				Rest_seconds = 59 - Secs
    				Rest_min = 59 - Mins 
    				lcdout $FE,1, "Time: ", dec2 RTCHour, ":", dec2 RTCMin, ":", dec2 RTCSec
    				lcdout $FE,$C0, " Dif: ", dec2 RTCHour, ":", dec2 Rest_min ,":", dec2 Rest_seconds 
    				Pause 150
    	Wend
    return
    
    BCD_TO_BIN:                                    ' Convert the BCD values into BIN
    
         Temp1 = $0F & TempVal                     ' Clear off the top four bits
         Temp1 = Temp1 Dig 0
         Temp2 = TempVal >> 4                       ' Shift down four to read 2 BCD value
         Temp2 = Temp2 Dig 0
         TempVal = Temp2 * 10 + Temp1
    
         Return
    
    BIN_TO_BCD:
    
         Temp1 = TempVal Dig 0                     ' GET THE DEC DIGIT FOR THE FIRST NIBBLE
         Temp2 = TempVal Dig 1                     ' GET THE DEC DIGIT FOR THE FIRST NIBBLE
         Temp2 = Temp2 << 4                          ' MOVE NUMBER OVER TO 2ND NIBBLE
         TempVal = Temp1 ^ Temp2                  ' XOR THEM TOGTHER TO MAKE THE WHOLE BCD NUMBER
        
         Return

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