📄 t0.asm
字号:
;实验名称:定时中断0
; 功能:利用定时器,产生秒计数器,使数码管从00.0计到99.9
; 作者:http://www.mcuprog.com
; 05-02-01
;***********************************************************
E BIT P3.5 ;LCD口线的定义
RW BIT P3.6
RS BIT P3.7
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: CLR E ;取消LCD对LED的影响
CLR RW
SETB RS
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.7 ;把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 P.06 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
; H G F E D C B A
;LED字段码表
LEDCODE: DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 99H ;4
DB 92H ;5
DB 82H ;6
DB 0F8H ;7
DB 80H ;8
DB 90H ;9
DB 88H ;A
DB 83H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 86H ;E
DB 8EH ;F
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -