#no_data
#picaxe 40X2
#no_end
#terminal off
symbol vardisplay = b0
symbol sl1 = b1
symbol sl2 = b2
symbol sl3 = b3
symbol sl4 = b4
symbol sl5 = b5
symbol sl6 = b6
symbol speed = b8
symbol mode = b9
symbol time1 = b10
symbol time2 = b11
symbol time3 = b12
symbol time4 = b13
symbol time5 = b26
symbol time6 = b27
symbol buttonvar = b18
symbol tempvar = b19
symbol buttonvar2 = b20
symbol runvar = b21
symbol nodp = b22
symbol displayselect = b23
symbol i2cin = b24
symbol cvarA = b25
symbol blanking = b26
symbol ds1 = b27
symbol ds2 = b28
symbol ds3 = b29
symbol ds4 = b30
symbol loopcounter = b31
eeprom 0,(0,1,0,6,0,0,0,0)
eeprom 8,(10)
table 0,($3F,$06,$5B,$4F,$66,$6D,$7C,$07,$7F,$67,$00,$40,$00,$06,$5B,$4F,$66,$6D,$7C,$07,$7F,$67,$00,$40)
read 8,speed
let dirsA = 000000
let dirsB = 111111
let dirsD = 001111
goto synchronise
main: setfreq em64
settimer t1s_8
disablebod
reconnect
let buttonvar = 1
goto mode4
mode4:
hi2csetup i2cmaster,010000,i2cslow_16,i2cbyte
mode4display:
hi2cin 2,(i2cin)
let cvarA = bcdtobin i2cin
let vardisplay = cvarA dig 1 + 12
readtable varDisplay,pinsB 'Get segment pattern
high D.0
pause speed
low D.0
let cvarA = i2cin & 001111
readtable cvarA,pinsB 'Get segment pattern
pinB.7 = 1 'Set decimal point
high D.1
pause speed
low D.1
hi2cin 1,(i2cin)
let cvarA = bcdtobin i2cin
let varDisplay = cvarA dig 1
readtable varDisplay,pinsB 'Get segment pattern
high D.2
pause speed
low D.2
let cvarA = i2cin & 001111
readtable cvarA,pinsB 'Get segment pattern
pinB.7 = 1 'Set decimal point
high D.3
pause speed
low D.3
hi2cin 0,(i2cin)
let cvarA = bcdtobin i2cin
let varDisplay = cvarA dig 1
readtable varDisplay,pinsB 'Get segment pattern
high A.6
pause speed
low A.6
let varDisplay = i2cin & 001111
readtable varDisplay,pinsB 'Get segment pattern
high A.7
pause speed
low A.7
if buttonvar = 2 then
inc speed
if speed > 16 then
speed = 0
end if
write 8,speed
buttonvar = 1
end if
if pinD.7 = 0 and pinD.6 = 0 and pinD.4 = 0 and pinD.5 = 0 then
buttonvar = 0
let timer = 0
goto mode4display
end if
if pinD.5 = 1 then
if timer > 10 then
goto synchronise
elseif timer > 1 then
speed = speed + 1
if speed = 30 then : speed = 0 : end if
write 8,speed
end if
buttonvar = 3
end if
if pinD.4 = 1 then
hi2cout 0,(0)
end if
if pinD.7 = 1 then
if buttonvar = 0 or timer > 5 then
hi2cin 1,(i2cin)
let buttonvar = 1
let cvarA = bcdtobin i2cin
inc cvarA
if cvarA > 59 then : let cvarA = 0 : end if
let cvarA = bintobcd cvarA
hi2cout 1,(cvarA)
end if
end if
if pinD.6 = 1 then
if buttonvar = 0 or timer > 5 then
hi2cin 2,(i2cin)
let buttonvar = 1
let cvarA = bcdtobin i2cin
inc cvarA
if cvarA > 23 then : let cvarA = 0 : end if
let cvarA = bintobcd cvarA
hi2cout 2,(cvarA)
end if
end if
goto mode4display
synchronise:
pinsB = 128
low A.6
high A.7
low D.1
low D.2
low D.3
low D.4
setfreq m16
getcmd:
serrxd [15000,main],sl1
if sl1 = "t" or sl1 = "T" then
serrxd sl1,sl2,sl3,sl4,sl5,sl6
sl1 = sl1 - 48
sl2 = sl2 - 48
sl3 = sl3 - 48
sl4 = sl4 - 48
sl5 = sl5 - 48
sl6 = sl6 - 48
sl1 = sl1 << 4
sl3 = sl3 << 4
sl5 = sl5 << 4
ds1 = sl1 + sl2
ds2 = sl3 + sl4
ds3 = sl5 + sl6
hi2csetup i2cmaster,010000,i2cslow_64,i2cbyte
hi2cout 0,(ds3,ds2,ds1)
for loopcounter = 0 to 14
lookup loopcounter,("New time saved."),sl2
toggle B.7
sertxd (sl2)
next loopcounter
high B.7
goto main
end if
high B.7
goto getc