Or something like this :
Code:
citeste_RTC:
I2CREAD SDA,SCL,$d1,$00,[STR DB0\8] ' Read 8 bytes from DS1307
ore = (db0[2] & $F )+((db0[2]>>4)*10) 'formula de conversie Hex to Dec pentru ore,hour
minute = (db0[1] & $F )+((db0[1]>>4)*10) 'formula de conversie Hex to Dec pentru minute,minutes
Secunde = (db0[0] & $F )+((db0[0]>>4)*10) 'formula de conversie Hex to Dec pentru secunde,seconds
if secunde = 15 or secunde = 30 or secunde = 45 then
gosub afisare_data
else
gosub afisare_ceas
endif
Zi = (db0[4] & $F )+((db0[4]>>4)*10) 'formula de conversie Hex to Dec pentru zile,days
Luna = (db0[5] & $F )+((db0[5]>>4)*10) 'formula de conversie Hex to Dec pentru luni,months
An = (db0[6] & $F )+((db0[6]>>4)*10) 'formula de conversie Hex to Dec pentru ani,years
anod1=0
anod2=0
Anod3=0
Anod4=0
anod5=0
anod6=0
goto citeste_rtc
afisare_ceas: 'display clock
Digit=secunde dig 1
gosub convert
PortC=pattern
Anod5=1
pause 1
anod5=0
digit=secunde dig 0
gosub convert
PortC=pattern
Anod6=1
pause 1
anod6=0
Digit=minute dig 1
gosub convert
PortC=pattern
Anod3=1
pause 1
anod3=0
Digit=Minute dig 0
gosub convert
PortC=pattern
Anod4=1
pause 1
anod4=0
digit=ore dig 1
gosub convert
PortC=pattern
Anod1=1
pause 1
anod1=0
digit=ore dig 0
gosub convert
PortC=pattern
Anod2=1
pause 1
anod2=0
return
afisare_data: 'afisare date
Digit=zi dig 1
gosub convert
PortC=pattern
Anod5=1
pause 1
anod5=0
digit=zi dig 0
gosub convert
PortC=pattern
Anod6=1
pause 1
anod6=0
Digit=luna dig 1
gosub convert
PortC=pattern
Anod3=1
pause 1
anod3=0
Digit=luna dig 0
gosub convert
PortC=pattern
Anod4=1
pause 1
anod4=0
digit=an dig 1
gosub convert
PortC=pattern
Anod1=1
pause 1
anod1=0
digit=an dig 0
gosub convert
PortC=pattern
Anod2=1
pause 1
anod2=0
;goto citeste_RTC
return
convert:
lookup digit, [$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],pattern
pattern=pattern^$FF
return
end
Bookmarks