📄 t0.asm
字号:
;实验名称:定时中断0
; 功能:利用定时器,产生秒计数器,使数码管从00.0计到99.9
; 作者:http://www.mcuprog.com
; 05-02-01
;***********************************************************
JS100MS EQU 32H ;计数器0.1S
JSGW EQU 30H ;计数器的个位
JSSW EQU 31H ;计数器的十位
T0_100MS EQU 33H ;产生1S
LEDSM EQU 34H ;现在扫到第几个LED
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME0_1
ORG 0050H
MAIN:
MOV JS100MS,#00H ;上电时从00.0开始
MOV JSSW,#00H ;
MOV JSGW,#00H ;
MOV T0_100MS,#14H ;5MS*20=100MS
MOV LEDSM,#01H
MOV TH0,#0EEH ;16位的定时器,定时5MS
MOV TL0,#00H
MOV TMOD,#01H
SETB TR0
MOV IE,#82H ;定时器0中断
SJMP $
ORG 0100H
TIME0_1: MOV TH0,#0EEH
MOV TL0,#00H
DJNZ T0_100MS,TODISP
MOV T0_100MS,#14H
INC JS100MS
MOV A,JS100MS
CJNE A,#0AH,TODISP
MOV JS100MS,#00H
INC JSGW
MOV A,JSGW
CJNE A,#0AH,TODISP
MOV JSGW,#00H
INC JSSW
MOV A,JSSW
CJNE A,#0AH,TODISP
MOV JSSW,#00H ;溢出99.9则回到00.0
TODISP: MOV P0,#0FFH ;在位选时关显示
INC LEDSM
MOV A,LEDSM
CJNE A,#04H,TODISP1
MOV LEDSM,#01H ;扫完第三个又从第一个开始
TODISP1: MOV A,LEDSM
CJNE A,#01H,TODISP2
MOV P2,#0DFH
MOV A,JS100MS
MOV DPTR,#LEDCODE
MOVC A,@A+DPTR
AJMP TOP0
TODISP2: CJNE A,#02H,TODISP3
MOV P2,#0EFH
MOV A,JSGW
MOV DPTR,#LEDCODE
MOVC A,@A+DPTR
CLR ACC.2 ;把H点点亮
AJMP TOP0
TODISP3: MOV P2,#0F7H
MOV A,JSSW
MOV DPTR,#LEDCODE
MOVC A,@A+DPTR
TOP0: MOV P0,A
RETI
;8字LED的连接方法
;P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0
;G, F A E B H C D
;LED字段码表
LEDCODE: DB 84H ;0
DB 0F5H ;1
DB 46H ;2
DB 54H ;3
DB 35H ;4
DB 1CH ;5
DB 0CH ;6
DB 0D5H ;7
DB 04H ;8
DB 14H ;9
DB 05H ;A
DB 2CH ;B
DB 8EH ;C
DB 64H ;D
DB 0EH ;E
DB 0FH ;F
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -