📄 mod2.asm
字号:
;-----------------------------------------
; ;TIME 99S
;-----------------------------------------
Disp_Num EQU 22H ; 显示数
;-----------------------------------------
ORG 0000H
LJMP Start
ORG 000BH
LJMP Time0
ORG 0030H
;-----------------------------------------
Start:
MOV SP,#60H
MOV TMOD,#01H ; T0定时模式1 为16位
MOV TH0,#0bH ; 定时时间为62.5MS
MOV TL0,#0dbH
MOV R7,#16 ; 62.5ms*16 = 1000ms
SETB ET0 ; 允许T0中断
SETB EA ; 允许中断
MOV Disp_Num,#0ffh ;初始
;-----------------------------------------
Main:
JB P3.6,Disp ;P3.6有否按下 有则转到disp
SETB TR0 ; 启动记数
Disp:
MOV A,Disp_Num ;送初值
CALL Display ;调用显示
JMP Main ;返主程序
;-----------------------------------------
Display:
MOV dptr,#Char_Tab ;送表入dptr
MOV B,#16 ;送数给B
DIV AB
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6 ; 亮第一个
CALL DELAY ; 延时
SETB P2.6 ; 灭第一个
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CLR P2.7 ; 亮第二个
CALL DELAY ; 延时
SETB P2.7 ; 灭第二个
RET
;-----------------------------------------
DELAY:
MOV R6,#0
DJNZ R6,$
RET
;-----------------------------------------
Time0:
PUSH ACC ;入堆栈保存
PUSH B
PUSH PSW
MOV TH0,#0BH ; 定时时间为62.5MS
MOV TL0,#0DBH
DJNZ R7,EXIT ; <1S EXIT
MOV R7,#16 ; 62.5ms*16 = 1000ms
DEC Disp_Num
EXIT:
POP PSW ;出堆栈
POP B
POP ACC
RETI
;-----------------------------------------
Char_Tab:
; 76543210
; fahgdecb
DB 11001111B ; 0
DB 00000011B ; 1
DB 01011101B ; 2
DB 01011011B ; 3
DB 10010011B ; 4
DB 11011010B ; 5
DB 11011110B ; 6
DB 01000011B ; 7
DB 11011111B ; 8
DB 11011011B ; 9
DB 11010111B ; A
DB 10011110B ; b
DB 11001100B ; C
DB 00011111B ; d
DB 11011100B ; E
DB 11010100B ; F
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -