Hi Thank you for reading...
Using a 16f627
All I want to do is turn a light on at a time and turn it off a time later.... What am I doing wrong here.
Turns on OK but sees to add 4mins to the turn off time... Also randomly turns on !
Help please... Thank you for reading !
Code:
' Alias pins
SDA Var PORTB.1
SCL Var PORTB.2
Light var PORTB.6
' Allocate variables
RTCYear Var Byte
RTCMonth Var Byte
RTCDate Var Byte
RTCDay Var Byte
RTCHour Var Byte
RTCMin Var Byte
RTCSec Var Byte
RTCCtrl Var Byte
'Set initial time
RTCYear = $18
RTCMonth = $09
RTCDate = $18
RTCDay = $03
RTCHour = $00
RTCMin = $00
RTCSec = 0
RTCCtrl = 0
Gosub settime ' Set the time
Goto mainloop ' Skip over subroutines
' Subroutine to write time to RTC
settime:I2CWrite SDA, SCL, $D0, $00, [RTCSec, RTCMin, RTCHour, RTCDay, RTCDate, RTCMonth, RTCYear, RTCCtrl]
Return
' Subroutine to read time from RTC
gettime: I2CRead SDA, SCL, $D0, $00, [RTCSec, RTCMin, RTCHour, RTCDay, RTCDate, RTCMonth, RTCYear, RTCCtrl]
Return
' Main program loop
mainloop: Gosub gettime ' Read the time from the RTC
IF (RTCHour=$00) and (RTCMin=$01) Then Light_On ' Light on
IF (RTCHour=$00) and (RTCMin=$02) Then Light_Off ' Light off
Pause 500 ' Do it about 2 times a min
Goto mainloop ' Do it forever and ever and ever
Light_On: high Light
return
Light_Off: Low light
return
End
Bookmarks