📄 7279键盘显示.asm
字号:
;//* 功能:按键码为1~15个键值移动显示
;//****************************************************
BIT_COUNT DATA 07FH
TIMER DATA 07EH
TIMER1 DATA 07DH
TEN DATA 07CH
DATA_IN DATA 020H
DATA_OUT DATA 021H
KEY BIT P1.3 ;7279的KEY连接于P1.3
CLK BIT P1.6 ;7279的CLK连接于P1.6
DAT BIT P1.7 ;7279的DATA连接于P1.7
CS BIT P2.7 ;7279的CS连接于P2.7
ORG 000H
JMP START
ORG 100H
START: MOV SP,#2FH ;定义堆栈
MOV P1,#11011011B ;I/O口初始化
MOV TIMER,#50
START_DELAY: MOV TIMER1,#255
START_DELAY1:DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV DATA_OUT,#10100100B ;发复位指令
CALL SEND
SETB CS ;复位CS为高电平
MAIN: JB KEY,MAIN ;检测是否有键按下
MOV DATA_OUT,#00010101B ;有键按下,发送读键盘指令
CALL SEND ;调用发送子程序
CALL RECEIVE ;调用接受子程序
SETB CS
MOV B,#10
MOV A,DATA_IN
DIV AB
MOV TEN,A
MOV DATA_OUT,#10100001B
CALL SEND
MOV DATA_OUT,#10100001B
CALL SEND
MOV DATA_OUT,#10000001B
CALL SEND
MOV DATA_OUT,TEN
CALL SEND
MOV DATA_OUT,#10000000B
CALL SEND
MOV DATA_OUT,B
CALL SEND
SETB CS
WAIT: JNB KEY,WAIT
JMP MAIN
;*******************************************
; 发送子程序
;*******************************************
SEND: MOV BIT_COUNT,#8
CLR CS
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
;*******************************************
; 接收子程序
;*******************************************
RECEIVE: MOV BIT_COUNT,#8
SETB DAT
CALL LONG_DELAY
RECEIVE_LOOP: SETB CLK
CALL SHORT_DELAY
MOV A,DATA_IN
RL A
MOV DATA_IN,A
MOV C,DAT
MOV DATA_IN.0,C
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,RECEIVE_LOOP
CLR DAT
RET
;*******************************************
; 延时子程序
;*******************************************
LONG_DELAY: MOV TIMER,#80
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY:MOV TIMER,#6
SHORT_LP: DJNZ TIMER,SHORT_LP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -