' Hours Counter Main Code
' Version 1.09
' Before Loading Ensure Engine Number and Clock Number are Correct In Cell_7_9
'
{ ;Symbols
symbol varA = b0 ' cam count
symbol OilP = b1 ' Oil Pressure
symbol RPM = w1 ' RPM Count
symbol varB = b2 ' RPM count
symbol varC = b3 ' RPM count
symbol Secs = b4 ' Secs
symbol Mins = b5 ' Mins
symbol Hrs = b6 ' Hrs
symbol VIn = b7 ' Voltage Level
symbol DIn = b8 ' Digital In Value
symbol varD = b9 ' display Oil P
symbol varE = b10 ' display Oil P
symbol varF = b11 ' display Oil P
symbol varG = b12 ' display RPM
symbol varH = b13 ' display RPM
symbol varI = b14 ' display RPM
symbol varJ = b15 ' display RPM
symbol varK = b16 ' display RPM
symbol varL = b17 ' display Secs
symbol varM = b18 ' display Secs
symbol varN = b19 ' display Secs
symbol varO = b20 ' display Mins
symbol varP = b21 ' display Mins
symbol varQ = b22 ' display Mins
symbol varR = b23 ' display Hrs
symbol varS = b24 ' display Hrs
symbol varT = b25 ' display Hrs
symbol Msecs = b26 ' Msecs
symbol OilPBar = w14 ' Oil Pressure Bar Calc
symbol OilPBar1 = b28 ' Oil Pressure Bar Calc
symbol OilPBar2 = b29 ' Oil Pressure Bar Calc
symbol VarU = b30 ' display Oil P
symbol VarV = b31 ' display Oil p
symbol SecsC = b32 ' Secs Check
symbol MinsC = b33 ' Mins Check
symbol HrsC = b34 ' Hrs Check
symbol varTEMPWORD1 = w25 ' cam count
symbol varTEMPBYTE1 = b50 ' cam count
symbol varTEMPBYTE2 = b51 ' cam count
symbol varTEMPWORD2 = w26
symbol varTEMPBYTE3 = b52
symbol varTEMPBYTE4 = b53
symbol varTEMPWORD3 = w27
symbol varTEMPBYTE5 = b54
symbol varTEMPBYTE6 = b55
}
main:
let dirsA = 16
let dirsB = 255
let dirsC = 0
wait 1
Cell_7_2:
Readadc A.2, VIn ' check voltage
If VIn > 120 then
goto Cell_7_3
Else
goto Cell_7_2
Endif
Cell_7_3:
READ 0, Secs
READ 8, Mins
READ 16, Hrs ' read from memory
Cell_7_4:
Readadc C.6, DIn ' Digital In
If DIn < 60 then
goto Cell_7_5 ' counts
Else
If DIn >= 60 And DIn < 80 then
pause 1000
goto Cell_7_7 ' Digital In Position 1
Else
If DIn >= 80 And DIn < 155 then
pause 1000
goto Cell_7_8 ' Digital In Position 2
Else
If DIn >= 155 And DIn < 200 then
pause 1000
goto Cell_7_9 ' Digital In Position 3
Else
If DIn >= 200 And DIn <= 255 then
pause 1000
goto Cell_7_10 ' Digital In Position 4
Else
Endif
Endif
Endif
Endif
Endif
Cell_7_5:
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
goto Cell_7_6
Endif
Cell_7_6: ' counts
count C.0, 600 , varTEMPWORD1 ' cam count
let varA = varTEMPWORD1 max 255
let RPM = varA * 10 * 2 * 60 / 3 ' RPM calc
Readadc A.0, OilP ' Oil Pressure
Readadc C.6, DIn ' Digital In
If Din >= 60 then
goto Cell_7_4
Else
Endif
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
Endif
' count conditions
If RPM >= 2000 OR OilP > 70 then
let Msecs = Msecs + 1
If Msecs = 2 then
let Msecs = 0
Secs = Secs + 1
If Secs = 60 then
let Secs = 0
Mins = Mins + 1
If Mins = 60 then
let Mins = 0
Hrs = Hrs + 1
Else
Endif
Else
Endif
Else
Endif
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
Endif
pauseus 5000 ' 5000
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
Endif
pauseus 5000 ' 10000
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
Endif
pauseus 5000 ' 15000
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
Endif
pauseus 3630 ' 18630
Else
READ 0, SecsC
READ 8, MinsC
READ 16, HrsC ' read from memory to check
If SecsC = Secs then
If MinsC = Mins then
If HrsC = Hrs then
goto Cell_7_6
Else goto Cell_7_11
End IF
Else goto Cell_7_11
End IF
Else goto Cell_7_11
End IF
goto Cell_7_5
EndIf
goto Cell_7_5
Cell_7_7: ' Digital In Postion 1
do {
Readadc C.6, DIn ' Digital In
wait 1
loop while DIn >= 60 And DIn < 80
pause 30
goto Cell_7_4
Cell_7_8: ' Digital In Position 2
serout A.4, N2400, (254, 1)
serout A.4, N2400, (254, 128, " Counter ")
serout A.4, N2400, (254, 192, " EHC ")
pause 2000
serout A.4, N2400, (254, 192, " Hrs:Mins:Secs ")
do {
bintoascii Secs, VarL, varM, varN
bintoascii Mins, varO, varP, varQ
bintoascii Hrs, varR, varS, varT
serout A.4, N2400, (254, 148, " ", varR, varS, varT, ":",varP, varQ, ":",varM, varN," ")
Readadc C.6, DIn ' Digital In
loop while DIn >= 80 And DIn < 155
serout A.4, N2400, (254,1)
pause 30
goto Cell_7_4
Cell_7_9: ' Digital In Position 3
serout A.4, N2400, (254, 1)
serout A.4, N2400, (254, 128, " Counter ")
serout A.4, N2400, (254, 192, " EHC Serial Check ")
pause 2000
serout A.4, N2400, (254, 192, " EHC Serial Numbers ")
serout A.4, N2400, (254, 148, " ")
serout A.4, N2400, (254, 212, " EHC-031 V1.09 ")
do {
Readadc C.6, DIn ' Digital In
loop while DIn >= 155 And DIn < 200
serout A.4, N2400, (254,1)
pause 30
goto Cell_7_4
Cell_7_10: ' Digital In Position 4
serout A.4, N2400, (254, 1)
serout A.4, N2400, (254, 128, " Counter ")
serout A.4, N2400, (254, 192, " EHC Test Mode ")
pause 2000
serout A.4, N2400, (254, 1)
serout A.4, N2400, (254, 128, " Hrs:Mins:Secs ")
serout A.4, N2400, (254, 148, " RPM Oil P ")
bintoascii Secs, varL, varM, varN
bintoascii Mins, varO, varP, varQ
bintoascii Hrs, varR, varS, varT
bintoascii RPM, varG, varH, varI, varJ, varK
bintoascii OilPBar, varD, varE, varF, b30, b31
serout A.4, N2400, (254, 192, " ", varR, varS, varT, ": ", varP, varQ, " :", varM, varN," ")
serout A.4, N2400, (254, 212, " ", varG, varH, varI, varJ, varK, " ", varF, ".", b30, b31, " ")
do {
Cell_7_10_1:
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
goto Cell_7_10_2
Endif
Cell_7_10_2: ' counts
count C.0, 400 , varTEMPWORD1 ' cam count
let varA = varTEMPWORD1 max 255
let RPM = varA * 5 * 2 * 60 ' RPM calc
Readadc A.0, OilP ' Oil Pressure
' count conditions
If RPM >= 1800 OR OilP > 70 then
let Msecs = Msecs + 1
If Msecs = 2 then
let Msecs = 0
Secs = Secs + 1
If Secs = 60 then
let Secs = 0
Mins = Mins + 1
If Mins = 60 then
let Mins = 0
Hrs = Hrs + 1
Else
Endif
Else
Endif
Else
Endif
Readadc A.2, VIn ' check voltage
If VIn < 120 then
goto Cell_7_11
Else
Endif
pauseus 2978
Else
goto Cell_7_10_3
EndIf
goto Cell_7_10_3
Cell_7_10_3:
let W14 = OilP * 545 - 28259 / 100 ' Oil P calc
bintoascii Secs, varL, varM, varN
bintoascii Mins, varO, varP, varQ
bintoascii Hrs, varR, varS, varT
bintoascii RPM, varG, varH, varI, varJ, varK
bintoascii OilPBar, varD, varE, varF, b30, b31
serout A.4, N2400, (254, 192, " ", varR, varS, varT, ": ", varP, varQ, " :", varM, varN," ")
serout A.4, N2400, (254, 212, " ", varG, varH, varI, varJ, varK, " ", varF, ".", b30, b31, " ")
Readadc C.6, DIn ' Digital In
loop while DIn >= 200 And DIn <= 255
serout A.4, N2400, (254,1)
pause 30
goto Cell_7_11
Cell_7_11: ' write to memory
WRITE 0, Secs
WRITE 8, Mins
WRITE 16, Hrs
goto Cell_7_2
#no_data 'reduce download time