What happens if more than one button is pressed at the same time?
Anyway, this might serve as starting point. It compiles but it is not tested.
Code:
Long_Press CON 5000
Short_Press con 100
cnt VAR WORD
b_level VAR BYTE
DataW VAR WORD
Main:
GOSUB ReadButton
IF b_level > 0 THEN
cnt = 0
WHILE b_level > 0
cnt = cnt + 10
if cnt > Long_Press THEN EXIT
PAUSE 10
GOSUB ReadButton
WEND
SEROUT GPIO.2, 2, ["You pressed button ", #b_level, " for ", #cnt, "ms", 13, 10]
endif
Goto Main
ReadButton:
ADCON0.1 = 1
While ADCON0.1 = 1 : Wend
DataW.HighByte = ADRESH
DataW.LowByte = ADRESL
b_level = 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
ENDIF
RETURN
Bookmarks