📄 kb4x4_1.inc
字号:
;---------------------------------------------------------------;
; ;
;#INCLUDE <KB4X4.INC> ;
; ;
;; externally defined pins (in main program) ;
; ;
;PORT4X4 EQU PORTD ; 0~3=I/P, 4~7=O/P ;
;TRIS4X4 EQU TRISD ; set direction of port ;
; ;
;===============================================================;
;; ;
;; result is stored in KYBUF (defined in main program) ;
;; KYBUF=0x10 if there is no key pressed ;
;; ;
;...............................................................;
;
; 4X4 KEYBOARD SCANNER
;
; C1=0/4/8/C=PORT4X4,0
; C2=1/5/9/D=PORT4X4,1
; C3=2/6/A/E=PORT4X4,2
; C4=3/7/B/F=PORT4X4.3
; R1=0/1/2/3=PORT4X4,4
; R2=4/5/6/7=PORT4X4,5
; R3=8/9/A/B=PORT4X4,6
; R4=C/D/E/F=PORT4X4,7
;
;
CBLOCK
KYBUF
ENDC
KB4X4:
MOVLW H'FF' ;
MOVWF PORT4X4 ; turn off all pins
;
BANKSEL TRIS4X4 ; TRIS4X4 is in bank1
MOVLW B'00001111' ; b0~3=input, b4~7=output
MOVWF TRIS4X4 ;
BANKSEL PORT4X4 ; PORT4X4 is in bank0
;
MOVLW B'11101111' ; select RAW1 (0~3)
MOVWF PORT4X4
MOVLW H'10' ; preset KYBUF to be 0X10
BTFSS PORT4X4,0 ; key 0 ?
MOVLW 0X0F
BTFSS PORT4X4,1 ; key 1 ?
MOVLW 0X0E
BTFSS PORT4X4,2 ; key 2 ?
MOVLW 0X0D
BTFSS PORT4X4,3 ; key 3 ?
MOVLW 0X0C
MOVWF KYBUF ; store result
BTFSS KYBUF,4
GOTO KB4X4_1
;
BSF PORT4X4,4 ; turn off RAW1
BCF PORT4X4,5 ; turn on RAW2(4~7)
CALL KB4X4_DLY
;
BTFSS PORT4X4,0 ; key 4 ?
MOVLW 0X0B
BTFSS PORT4X4,1 ; key 5 ?
MOVLW 0X03
BTFSS PORT4X4,2 ; key 6 ?
MOVLW 0X06
BTFSS PORT4X4,3 ; key 7 ?
MOVLW 9
MOVWF KYBUF ; store result
BTFSS KYBUF,4
GOTO KB4X4_1
;
BSF PORT4X4,5 ; turn off RAW2
BCF PORT4X4,6 ; turn on RAW3(8~B)
CALL KB4X4_DLY
;
BTFSS PORT4X4,0 ; key 8 ?
MOVLW 0X0A
BTFSS PORT4X4,1 ; key 9 ?
MOVLW 2
BTFSS PORT4X4,2 ; key A ?
MOVLW H'5'
BTFSS PORT4X4,3 ; key B ?
MOVLW H'8'
MOVWF KYBUF ; store result
BTFSS KYBUF,4
GOTO KB4X4_1
;
BSF PORT4X4,6 ; turn off RAW3
BCF PORT4X4,7 ; turn on RAW4(C~F)
CALL KB4X4_DLY
;
BTFSS PORT4X4,0 ; key C ?
MOVLW H'0'
BTFSS PORT4X4,1 ; key D ?
MOVLW H'1'
BTFSS PORT4X4,2 ; key E ?
MOVLW H'4'
BTFSS PORT4X4,3 ; key F ?
MOVLW H'7'
MOVWF KYBUF ; store result
;
KB4X4_1:
BSF PORT4X4,7
RETURN
;
KB4X4_DLY: ; used for 16MHz CPU
NOP
NOP
NOP
RETURN
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -