
Сообщение от
aprisobal
Подскажите плз короткую и быструю процедуру опроса клавишх
Медленная и здоровая, зато с подавление дребезга и ещё с кое-чем.
0ой бит - кнопка нажата-не нажата
7ой - ставится сразу после нажатия на 1 промежуток между опросами, потом снова 0.
Код:
KEYS ;YIELDING KEYS
KMSK EQU 3
LD HL,KEYAD
LD BC,#7FFE ;SPACE
IN D,(C)
CALL ANTID
LD B,#BF ;ENTER
IN D,(C)
CALL ANTID
LD B,#F7
IN D,(C)
CALL ANTID ;1
CALL ANTID
CALL ANTID
CALL ANTID
CALL ANTID ;5
RET
ANTID
XOR A
RRC D
RRA
XOR (HL)
JP P,NONEWKEY
;STATE CHANGED
XOR (HL)
AND #80
JR KEYDONE
NONEWKEY
INC A
AND KMSK
JR NZ,NOKEY ;CTR INCREMENTS
;HERE CTR FINISHED, NEWKEY!
BIT 7,(HL)
INC HL
JR Z,PRESSED
;NOT PRESSED - CLR KEY
CLRKEY
LD (HL),0
JR ENDKEY
PRESSED
BIT 0,(HL)
JR NZ,PRSD_ALR
;FIRST PRESSED
LD (HL),#81
JR ENDKEY
PRSD_ALR
RES 7,(HL)
ENDKEY
DEC HL
LD A,KMSK
NOKEY
XOR (HL)
AND KMSK
XOR (HL)
KEYDONE
LD (HL),A
INC HL
INC HL
RET
KEYAD
db 0
KSPC db 0
db 0
KENT db 0
db 0
K1 db 0
db 0
K2 db 0
db 0
K3 db 0
db 0
K4 db 0
db 0
K5 db 0