📄 258.asm
字号:
xa bit p2.0
xb bit p2.1
xc bit p2.2
ale bit p2.3
st bit p2.4
oe bit p2.5
eoc bit p3.7
lamp bit p3.5
speak bit p3.6
ORG 00H
LJMP START
ORG 0BH
LJMP T0X
ORG 30H
start: mov sp,70h
CLR A ;
MOV P2,A ;P2口置0
MOV R0,#20H ;内存循环清0(20H-2BH)
MOV R2,#0CH ;
LOOPMEM: MOV @R0,A ;
INC R0 ;
DJNZ R2,LOOPMEM ;
MOV A,#0FFH ;
MOV P0,A ;P0、P1、P3端口置1
MOV P1,A ;
MOV P3,A ;
MOV TMOD,#01H
MOV TH0,#high(65536-4000)
MOV TL0,#low(65536-4000)
setb tr0
setb et0
SETB EA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main: nop
nop
nop
nop
nop
call testst
WAIT: JNB EOC,WAIT0
SETB OE
MOV 20h,P0
CLR OE
wait0:ajmp main
testst: clr tr0
clr et0
clr xc
setb xb
setb xa
setb ale
nop
nop
clr xc
setb xb
setb xa
clr ale
CLR ST
nop
nop
SETB ST
nop
nop
nop
CLR ST
setb tr0
setb et0
ret
bcd: MOV A,20h
MOV B,#100
DIV AB
MOV 2ah,A
MOV A,B
MOV B,#10
DIV AB
MOV 29h,A
MOV 28h,B
mov 2bh,#3
ret
DISP: call bcd
MOV R1,#28H ;赋显示数据单元首址
MOV R5,#0FEH ;扫描字
PLAY: MOV P1,#0FFH ;关显示
MOV A,R5 ;取扫描字
ANL P3,A ;开显示
MOV A,@R1 ;取显示数据
MOV DPTR,#TAB ;取段码表首址
MOVC A,@A+DPTR ;查显示数据对应段码
MOV P1,A ;段码放入P1口
LCALL DL1MS ;显示1MS
INC R1 ;指向下一地址
MOV A,P3 ;取P3口扫描字
JNB ACC.3,ENDOUT ;四位显示完转ENDOUT结束
RL A ;扫描字循环左移
MOV R5,A ;扫描字放入R5暂存
MOV P3,#0FFH ;显示暂停
AJMP PLAY ;转PLAY循环
ENDOUT: MOV P3,#0FFH ;显示结束,端口置1
MOV P1,#0FFH
ret
T0X: NOP
clr tr0
clr et0
MOV TH0,#high(65536-4000)
MOV TL0,#low(65536-4000)
mov r4,#80
round:call disp
djnz r4,round
setb tr0
setb et0
reti
;LED数码显示管用共阳段码表,分别对应0-9,最后一个是"熄灭符"
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
;
; 1MS延时子程序,LED显示用
DL1MS: MOV R6,#20 ;
DL1: MOV R7,#25
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -