ORG 0000H
用7SEG-MPX6-CA六位数码管显示 晶振=12MHZ,缓冲单元=30H,31H,32H,一个加一键减一键!没用31,32.
MOV R7,#89H
MOV DPTR,#TAB
MOV 32H,#00H;设定
MOV 31H,#00H;设定
MOV 30H,#10H;设定 STA:MOV R0,#30H
mov p2,#80h
S:MOV A,@R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
MOV A,P2
RL A
MOV P2,A
LCALL YS
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
MOV A,P2
RL A
MOV P2,A
LCALL YS
JB ACC.5,STA
INC R0
JNB P1.2,QQ
JNB P1.1,PP
DJNZ R7,S
MOV A,30H
CJNE A,#00H,KG
CLR P1.0;不能放在子程序中,主循环
AJMP S
KG:SETB P1.0
AJMP QQ
PP:MOV R3,#0F9H
Z:MOV R4,#0FFH
X:NOP
DJNZ R4,X
DJNZ R3,Z;去抖动
MOV A,30H
ANL A,#0FH
CJNE A,#09h,D
MOV A,30H
swap a
anl a,#0fh
CJNE A,#09H,F
MOV 30H,#99H
AJMP S
D:INC 30h
AJMP S
F: INC A
SWAP A
mov 30h,a
AJMP S
QQ:MOV R3,#0F9H
ZX:MOV R4,#0FFH
XZ:NOP
DJNZ R4,XZ
DJNZ R3,ZX;去抖动
MOV A,30H
ANL A,#0FH
CJNE A,#00h,K
MOV A,30H
swap a
anl a,#0Fh
CJNE A,#00H,U
MOV 30H,#00H
AJMP S
K:DEC 30h
AJMP S
U: DEC A
SWAP A
ADD A,#09H
MOV 30H,A
AJMP S
ys:mov r3,#02h
l:mov r4,089h
lo:nop
djnz r4,lo
djnz r3,l
ret
TAB: db 02h,09fh,024h,00dh,99h,049h,040h,01fh,000h,009h
END
|