⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mykeyboard.txt

📁 键盘扫描程序,适用于PIC单片机的键盘扫描, 适合初学PIC单片机的人学习及借鉴
💻 TXT
字号:
	LIST	P=16F877
	INCLUDE	"P16F877.INC"
;--------------------------------
INITIAL
VALUE	EQU	21H
TEMP	EQU	22H
TEMP1	EQU	23H
DATA1	EQU	30H
DATA2	EQU	31H
	ORG	00H
	GOTO	MAIN
	ORG	05H
MAIN	
	NOP
	BANKSEL	TRISD
	MOVLW	00H
	MOVWF	TRISD
	MOVLW	0FFH
	MOVWF	TRISB
	MOVLW	00H
	MOVWF	TRISC
	BANKSEL	PORTD
START
	NOP
	CALL	KEYSCAN	
	CALL	KEYDELAY
        CALL	KEYSCAN
	CALL	KEYSEE
	MOVF	VALUE,0

	MOVWF	PORTC
	
	GOTO	START
;----------------------------------
KEYSCAN	
	NOP
	
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	BTFSS	STATUS,Z
	RETURN
	GOTO	KEYSCAN
;-----------------------------

KEYSEE
ROW1
	MOVLW	B'01111111'
	MOVWF	PORTD
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	BTFSC	STATUS,Z
	GOTO	ROW2
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	MOVWF	TEMP
	CALL	KEYOUT
	CLRW
	BTFSC	TEMP,0
	ADDLW	4
	BTFSC	TEMP,1
	ADDLW	3
	BTFSC	TEMP,2
	ADDLW	2
	BTFSC	TEMP,3
	ADDLW	1
	ANDLW	0FH
	BTFSS	STATUS,Z
	GOTO	NEXT
ROW2
	MOVLW	B'10111111'
	MOVWF	PORTD
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	BTFSC	STATUS,Z
	GOTO	ROW3
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	MOVWF	TEMP
	CALL	KEYOUT
	CLRW
	BTFSC	TEMP,0
	ADDLW	8
	BTFSC	TEMP,1
	ADDLW	7
	BTFSC	TEMP,2
	ADDLW	6
	BTFSC	TEMP,3
	ADDLW	5

	GOTO	NEXT
ROW3
	MOVLW	B'11011111'
	MOVWF	PORTD
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	BTFSC	STATUS,Z
	GOTO	ROW4
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	MOVWF	TEMP
	CALL	KEYOUT
	CLRW
	BTFSC	TEMP,0
	ADDLW	0BH
	BTFSC	TEMP,1
	ADDLW	0AH
	BTFSC	TEMP,2
	ADDLW	00H
	BTFSC	TEMP,3
	ADDLW	09H

	GOTO	NEXT
ROW4
	MOVLW	B'11101111'
	MOVWF	PORTD
	MOVF	PORTB,0
	ANDLW	0FH
	XORLW	0FH
	MOVWF	TEMP
	CALL	KEYOUT
	CLRW
	BTFSC	TEMP,0
	ADDLW	0FH
	BTFSC	TEMP,1
	ADDLW	0EH
	BTFSC	TEMP,2
	ADDLW	0DH
	BTFSC	TEMP,3
	ADDLW	0CH
NEXT	CALL    KEYTRANSLATE
	MOVWF	VALUE
	RETURN
;--------------------------------
KEYTRANSLATE
	ADDWF	PCL,F
KEYTABLE
	RETLW	30H
	RETLW	31H
	RETLW	32H
	RETLW	33H
	RETLW	34H
	RETLW	35H
	RETLW	36H
	RETLW	37H
	RETLW	38H
	RETLW	39H
	RETLW	41H
	RETLW	42H
	RETLW	43H
	RETLW	44H
	RETLW	45H
	RETLW	46H

;--------------------------------
KEYOUT
    	CLRF  PORTD
    	MOVF PORTB,0  
    	ANDLW 0fh
    	XORLW 0fh
    	BTFSS STATUS,Z
    	GOTO  KEYOUT

    	CALL  KEYDELAY
    	MOVF PORTB,0
    	ANDLW 0fh
    	XORLW 0fh
    	BTFSS STATUS,Z
   	GOTO  KEYOUT
	RETURN
;-------------------
KEYDELAY	                              
	MOVLW	D'14'
	MOVWF	DATA1
LOOP1
	MOVLW	D'251'
	MOVWF	DATA2
LOOP2
	DECFSZ	DATA2,1
	GOTO	LOOP2
	DECFSZ	DATA1,1
	GOTO	LOOP1
	RETURN
;-----------------------------------
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -