📄 demo_key.asm
字号:
MOVC A,@A+DPTR
MOV P0,A
INC R3
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
CJNE R3,#11H,M82
MOV P2,#0FFH
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
JMP MOD8
;---------P9 LED_DEMO1------------------
MOD9: MOV A,MD
LCALL DISP0
LCALL DELAY
LCALL DELAY
LCALL DELAY
JB P3.0,$
M91:MOV A,#0EFH
MOV R0,#08H
M92:MOV P1,A
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
RL A
DJNZ R0,M92
JMP M91
;---------P10 LED_DEMO2----------------
MOD10:MOV A,MD
LCALL DISP0
LCALL DELAY
LCALL DELAY
LCALL DELAY
JB P3.0,$
MA1:MOV A,#7FH
MOV R0,#08H
MA2:MOV P1,A
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
RR A
DJNZ R0,MA2
JMP MA1
;---------P11 LED_DEMO3----------
MOD11:MOV A,MD
LCALL DISP0
LCALL DELAY
LCALL DELAY
LCALL DELAY
JB P3.0,$
MOV P1,#0FFH
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#0e7h
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#0dbH
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#0bdh
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#7eH
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#00h
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#7eh
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#0bdH
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#0dbh
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#0e7H
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#00h
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
LCALL DELAY
LCALL DELAY
mov p1,#00h
LCALL DELAY
LCALL DELAY
LCALL DELAY
JMP MOD11
;----------P12 KEY_DEMO------------
MOD12:MOV A,MD
LCALL DISP0
LCALL DELAY
LCALL DELAY
LCALL DELAY
m12: lcall key_r
cjne a,#00h,bp
setb p2.7
jmp m12
bp: clr p2.7
lcall delay
jmp m12
;----------P13 ADD_DEMO---------
MOD13:MOV A,MD
LCALL DISP0
LCALL DELAY
LCALL DELAY
LCALL DELAY
JB P3.0,$
MOV R0,#00H
M131:MOV A,R0
PUSH ACC
ANL A,#0F0H
SWAP A
MOV DPTR,#LED_CODE
MOVC A,@A+DPTR
MOV P0,A
POP ACC
ANL A,#0FH
MOVC A,@A+DPTR
MOV P2,A
M132:JB P3.0,$
LCALL DELAY
JB P3.0,M132
JNB P1.0,$
INC R0
JMP M131
;---------P14 DEC_DEMO-----------
MOD14:MOV A,MD
LCALL DISP0
LCALL DELAY
LCALL DELAY
LCALL DELAY
JB P3.0,$
MOV R0,#0FFH
M141:MOV A,R0
PUSH ACC
ANL A,#0F0H
SWAP A
MOV DPTR,#LED_CODE
MOVC A,@A+DPTR
MOV P0,A
POP ACC
ANL A,#0FH
MOVC A,@A+DPTR
MOV P2,A
M142:JB P3.0,$
LCALL DELAY
JB P3.0,M142
JNB P3.0,$
DEC R0
JMP M141
;---------P15,key_DEMO-----------
MOD15:;MOV A,MD
;LCALL DISP0
;MOV P0,#0FFH
setb rs1
clr rs0
LCALL DELAa
MOV SND_BUF,#10100100B ;7289清除指令
LCALL SEND
SETB CS
MOV SND_BUF,#10111111B ;测试LED
LCALL SEND
SETB CS
LCALL DELAa
MOV SND_BUF,#10100100B ;7289清除指令
LCALL SEND
SETB CS
MOV R0,#00H
MOV R1,#8 ;8-1位显示'7-0'
MOV SND_BUF,#11001000B
DIS7_0:MOV R7,SND_BUF
LCALL SEND
INC R7
MOV SND_BUF,R0
LCALL SEND
INC R0
MOV SND_BUF,R7
DJNZ R1,DIS7_0
SETB CS
LCALL DELAa
MOV R0,#08H
MOV R1,#8 ;8-1位显示'F-8'
MOV SND_BUF,#11001000B
DISF_8:MOV R7,SND_BUF
LCALL SEND
INC R7
MOV SND_BUF,R0
LCALL SEND
INC R0
MOV SND_BUF,R7
DJNZ R1,DISF_8
SETB CS
LCALL DELAa
SETB ET0
MOV TH0,#00H
MOV TL0,#0FH
;SETB TR0
K_DEMO:JB KEY,$ ;键盘演示,读键
MOV SND_BUF,#00010101B ;读键值
LCALL SEND
LCALL RECIV
SETB CS
MOV SND_BUF,#10100100B ;清屏指令
LCALL SEND
SETB CS
MOV SND_BUF,#10010111B ;D8显示‘P’
LCALL SEND
MOV SND_BUF,#01100111B ;'P'
LCALL SEND
SETB CS
MOV SND_BUF,#10001000B ;‘P’闪烁
LCALL SEND
MOV SND_BUF,#01111111B
LCALL SEND
SETB CS
MOV SND_BUF,#10010000B ;D1显示‘H.’
LCALL SEND
MOV SND_BUF,#10110111B ;'H.'
LCALL SEND
SETB CS
MOV SND_BUF,#11001001B ;D2显示键值低半位
LCALL SEND
MOV SND_BUF,REC_BUF
LCALL SEND
SETB CS
MOV SND_BUF,#11001010B ;D3显示键值高半位
LCALL SEND
MOV A,REC_BUF
ANL A,#0F0H
SWAP A
MOV SND_BUF,A
LCALL SEND
SETB CS
JNB KEY,$
AJMP K_DEMO
SEND: MOV BIT_N,#8
CLR CS
LCALL DEL50
S_LP: MOV A,SND_BUF
RLC A
MOV SND_BUF,A
MOV DIO,C
NOP
NOP
SETB CLK
LCALL DEL10
CLR CLK
LCALL DEL10
DJNZ BIT_N,S_LP
CLR DIO
RET
RECIV:MOV BIT_N,#8
SETB DIO
R_LP: SETB CLK
LCALL DEL10
MOV C,DIO
MOV A,REC_BUF
RLC A
MOV REC_BUF,A
CLR CLK
LCALL DEL10
DJNZ BIT_N,R_LP
CLR DIO
RET
DEL50:MOV DEL,#50
DJNZ DEL,$
RET
DEL10:MOV DEL,#10
DJNZ DEL,$
RET
DELAa:MOV 4AH,#20
DEL1S:MOV 4BH,#0FFH
D1S1:MOV 4CH,#0FFH
DJNZ 4CH,$
DJNZ 4BH,D1S1
DJNZ 4AH,DEL1S
RET
;---------timer0------------
TIMER0:mov th0,#00h
mov tl0,#0fh
push acc
push psw
setb rs0
setb rs1
inc R3
cjne R3,#30,end_t0
MOV R3,#00H
INC R0
MOV P1,R0
CJNE R0,#15,DIP
MOV R0,#00H
DIP: MOV R1,#8 ;8-0位显示'f-0'
MOV SND_BUF,#11001000B
DISF_0:PUSH SND_BUF
LCALL SEND
MOV SND_BUF,R0
LCALL SEND
POP SND_BUF
MOV A,SND_BUF
INC A
MOV SND_BUF,A
DJNZ R1,DISF_0
SETB CS
end_t0:pop psw
pop acc
reti
;----------------rx----------
rx_int: push acc
push psw
jnb ri,end_rx
clr ri
mov a,sbuf
mov sbuf,a
jnb ti,$
clr ti
end_rx: pop psw
pop acc
reti
DISP0: PUSH ACC
MOV P0,#8CH ;"P"
MOV DPTR,#LED_CODE
MOVC A,@A+DPTR
MOV P2,A
POP ACC
RET
DISP1:;DA A
PUSH ACC
ANL A,#0FH
MOV DPTR,#LED_CODE
MOVC A,@A+DPTR
MOV P2,A
POP ACC
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
RET
DELay: MOV 3ah,#0F0H
DL1: MOV 3bh,#0F0H
DJNZ 3bh,$
DJNZ 3ah,DL1
RET
;--------------------------------------------
KEY_r: MOV A,P3 ;jianpian
ANL A,#0FH
MOV KEY_NUM,A
LCALL DELAY
MOV A,P3
ANL A,#0FH
CJNE A,KEY_NUM,KEY_r
CPL A
ANL A,#0FH
MOV KEY_NUM,A
RET
ORG 0A00H
LED_CODE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;"0-F"
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -