100 ' I2C RTC based On PCF8563 Secs,Mins,Hours,Day,Date,Month,Year
200 DIM RTCbuff(255)
220 i2caddr = &h51 ' PCF8563 I2C address
250 I2CEN 100,100 ' Enable I2C
260 I2CRCV i2caddr, 0, 7, RTCbuff(0), 1, 2
265 I2CDIS
270 BCDTEMP = RTCBuff(0) AND &H7F ' Mask unwanted bits
280 GOSUB 1000
290 sec$ = STR$(decimal)
295 BCDTEMP = RTCBuff(1) AND &H7F ' Mask unwanted bits
300 GOSUB 1000
305 min$ = STR$(decimal)
310 BCDTEMP = RTCBuff(2) AND &H3f ' Mask unwanted bits
315 GOSUB 1000
320 hours$ = STR$(decimal)
325 BCDTEMP = RTCBuff(3) AND &H3f ' Mask unwanted bits
330 GOSUB 1000
340 day$ = STR$(decimal)
350 BCDTEMP = RTCBuff(5) AND &h1F ' Mask unwanted bits
360 GOSUB 1000
370 month$ = STR$(decimal)
380 bcdtemp = rtcbuff(6)
390 GOSUB 1000
400 year$ = STR$(decimal + 2000 )
440 t$ = hours$+":"+min$+":"+sec$
442 D$ = day$+"/"+month$+"/"+year$
445 TIME$ = T$
446 DATE$ = D$
450 ? "Time has been set to ";T$
460 ?"Date has been set to ";D$
500 END

1000 ' Convert to Decimal
1010 Decimal = FIX(BCDTemp / 16) * 10
1020 Decimal = Decimal + (BCDTEMP AND &hF)
1030 RETURN
