'{$STAMP BS2} ESC CON 27 'LCD Command clrLCD CON 12 'LCD Clear Screen Command backon CON 14 'LCD Backlight On Command backoff CON 15 hrs VAR Word mins VAR Word x VAR Word y VAR Word value VAR Word ampm VAR Word baud CON 16468 DATA (49) RTCCmd VAR Byte Clk CON 0 Dta CON 1 RTCReset CON 2 Temp VAR Byte Seconds VAR Byte Minutes VAR Byte Hours VAR Byte Date VAR Byte Month VAR Byte Year VAR Byte I VAR Byte SecReg CON %00000 MinReg CON %00001 HrsReg CON %00010 DateReg CON %00011 MonReg CON %00100 YrReg CON %00110 CtrlReg CON %00111 BrstReg CON %11111 AM DATA "AM",0 PM DATA "PM",0 DIRS = %0000000000111111 OUTS = %0000000000000000 '0 EQUALS AM _____ 1 EQUALS PM 'Debug Prgram_____________________________________________________________________ Loop: GOSUB ReadRTCBurst DEBUG HOME, DEC Hours.HIGHNIB, DEC Hours.LOWNIB, ":", DEC Minutes.HIGHNIB DEBUG DEC Minutes.LOWNIB, ":", DEC Seconds.HIGHNIB, DEC Seconds.LOWNIB DEBUG " ", DEC Month.HIGHNIB, DEC Month.LOWNIB, "/" DEBUG DEC Date.HIGHNIB, DEC Date.LOWNIB, "/", DEC Year.HIGHNIB, DEC Year.LOWNIB, CR 'LCD Program______________________________________________________________________________ SEROUT 7,baud,[ESC, "F"] 'Font format? SEROUT 7,baud,[CR,CLRLCD,BACKON] 'clear LCD and turn backlight on SEROUT 7,baud,[DEC 12-(24-(hours.HIGHNIB*10+hours.LOWNIB)//12), ":", DEC Minutes.HIGHNIB] 'displays hours SEROUT 7,baud,[DEC Minutes.LOWNIB, ":", DEC Seconds.HIGHNIB, DEC Seconds.LOWNIB," "] 'displays minutes GOSUB ampmloop 'Check AM/PM SEROUT 7,baud,[" ",DEC Month.HIGHNIB *10 + Month.LOWNIB, "."] 'display month SEROUT 7,baud,[DEC Date.HIGHNIB, DEC Date.LOWNIB, ".", DEC Year.HIGHNIB, DEC Year.LOWNIB,CR] 'displays date and year hrs = 12-(24-(hours.HIGHNIB*10+hours.LOWNIB)//12) 'Converts to 12 hour and stores in single variable mins = minutes.HIGHNIB*10+minutes.LOWNIB 'Stores minutes in single variable SEROUT 7,baud,[DEC hrs,":",DEC mins," "] 'Less complicated time display x = hours.HIGHNIB * 10 + hours.LOWNIB y = x / 12 'My way of determining AM/PM cause I couldnt get out of "value" 'Checks if it is time to turn output 15 on or off______________________________________________ checkhours IF OUT15 = 1 THEN output15off 'If out put is already on then checking it again is pointless IF hrs = 7 AND y = 0 AND Mins = 37 THEN output15on 'turns output 15 on if it is 7:37 PM ' output15off: IF hrs = 7 AND y = 0 AND mins = 38 THEN output15off 'turns ouput 15 off if it is 7:38 PM GOTO loop 'Clock Program_______________________________________________________________________________ AMPMloop: LOOKUP Hours/$12,[AM,PM],ampm GOTO Printit Printit: READ ampm,value IF value = 0 THEN finished SEROUT 7,baud,[value] ampm = ampm + 1 GOTO printit 'dont ask i didnt write this part______________ finished: RETURN 'output 15 on off subroutine______________________________________________________________________ OUTPUT15on: HIGH 15 GOTO loop output15off: LOW 15 GOTO loop 'Clock subroutine_____________________________________________________________________ WriteRTCRAM: HIGH RTCReset SHIFTOUT Dta, Clk, LSBFIRST, [%0\1,RTCCmd\5, %11\2,Temp] LOW RTCReset RETURN WriteRTC: HIGH RTCReset SHIFTOUT Dta, Clk, LSBFIRST, [%0\1, RTCCmd\5, %10\2,Temp] LOW RTCReset RETURN ReadRTCBurst: HIGH RTCReset SHIFTOUT Dta, Clk, LSBFIRST, [%1\1,BrstReg\5, %10\2] SHIFTIN Dta, Clk, LSBPRE, [Seconds,Minutes,Hours,Date,Month,Year,Year] LOW RTCReset RETURN ReadRTCRAM: HIGH RTCReset SHIFTOUT Dta, Clk, LSBFIRST, [%1\1, RTCCmd\5, %11\2] SHIFTIN Dta, Clk, LSBPRE, [Temp] LOW RTCReset RETURN