Main:
apasat=0
adcvalue=0
GOSUB ReadButton
IF b_level > 0 THEN
cnt = 0
WHILE b_level > 0
cnt = cnt + 10
if cnt > Long_Press THEN
actiune = 1
EXIT
endif
PAUSE 5
GOSUB ReadButton
WEND
b_level = 0
if b_act = 1 then gosub comenzi ; if button pressed is OK, no error
ENDIF
Goto Main
ReadButton:
ADCON0.1 = 1
While ADCON0.1 = 1 : Wend
DataW.HighByte = ADRESH
DataW.LowByte = ADRESL
b_level = 0
actiune = 0
IF DataW < 805 then
if DataW > 50 AND DataW < 160 THEN b_level = 1
if DataW > 180 AND DataW < 270 THEN b_level = 2
if DataW > 290 AND DataW < 380 THEN b_level = 3
if DataW > 400 AND DataW < 500 THEN b_level = 4
if DataW > 540 AND DataW < 650 THEN b_level = 5
if DataW > 690 AND DataW < 800 THEN b_level = 6
apasat = b_level
adcvalue=DataW
if apasat=last_b_level then ; procedure for cheking pressed button
b_cnt=b_cnt+1
pauseus 200
if b_cnt > 10 then b_act = 1 ; button pressed is OK
endif
last_b_level=apasat
ENDIF
RETURN
;================================================= ===========================
comenzi:
SEROUT GPIO.2, 2, ["You pressed button ", #apasat, " for ", #cnt, " ms", " ACTIUNE: ", #actiune, " ok ? ", #b_act, 13, 10]
;IF b_level=1 THEN gosub comand1
;IF b_level=2 THEN gosub comand2
;IF b_level=3 THEN gosub comand3
;IF b_level=4 THEN
; if actiune = 1 then
; gosub comand1
; else
; gosub comand 4
; endif
;ENDIF
;IF b_level=5 THEN gosub comand5
;IF b_level=6 THEN gosub comand6
last_b_level=0
b_cnt=0
Return
Bookmarks