当前位置:文档之家› 查询式键盘9-0

查询式键盘9-0

;P1口--独立式键盘==================

DBUF DATA 030H
BIT_COUNT DATA 040H
TIMER DATA 041H
TIMER1 DATA 042H
DATA_IN DATA 020H
DATA_OUT DATA 021H
CLK BIT P1.6
DAT BIT P1.7


ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV DBUF,#0FH
Loop: CALL DISPLAY
CALL KEY

MOV DBUF,A
AJMP Loop

KEY: MOV P1,#0FFH

MOV A,P1
JNB ACC.0,K00
JNB ACC.1,K01
JNB ACC.2,K02
JNB ACC.3,K03
JNB ACC.4,K04
JNB ACC.5,K05
JNB ACC.6,K06
JNB ACC.7,K07
CJNE A, #0FFH, K10
AJMP KEY
K10: ACALL SHORT_DELAY
MOV A,P1
CJNE A,#0FFH,K01
AJMP KEY
K00: MOV A,#0
RET
K01: MOV A,#1
RET
K02: MOV A,#2
RET
K03: MOV A,#3
RET
K04: MOV A,#4
RET
K05: MOV A,#5
RET
K06: MOV A,#6
RET
K07: MOV A,#7
RET



DISPLAY:
ANL P2,#00H ; CS7279有效
MOV DATA_OUT,#10100100B ; A4H,复位命令
CALL SEND
MOV R0,#10000111B ; 译码方式0,0位显示
MOV DATA_OUT,R0 ; 在第一个数码管上显示
CALL SEND
MOV DATA_OUT,DBUF
CALL SEND
RET

SEND: MOV BIT_COUNT,#8 ; 发送字符子程序
ANL P2,#00H
CALL LONG_DELAY
SEND_LOOP:MOV C,DATA_OUT.7
MOV DAT,C
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
CALL SHORT_DELAY
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,SEND_LOOP
CLR DAT
RET


LONG_DELAY: MOV TIMER,#250 ;延时约200US
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY: MOV TIMER,#100 ;延时约20US
SHORT_LP: DJNZ TIMER,SHORT_LP
RET

END









//

相关主题
文本预览
相关文档 最新文档