📄 timer.asm
字号:
ORG 00H
TICK EQU 10000 ;10000×100us=1s
T100us EQU 256-100 ;100us时间常数(12M)
C100us EQU 30H ;100us计数单元
LEDBUF EQU 40H
LED BIT P1.0
LJMP START ;跳至主程序
ORG 000BH ;中断子程序起始地址
T0INT: PUSH PSW ;状态保护
MOV A,C100us+1
JNZ GOON
DEC C100us ;秒计数值减1
GOON: DEC C100us+1
MOV A,C100us
ORL A,C100us+1
JNZ EXIT ;100us计数器不为0,返回
MOV C100us,#HIGH(TICK) ;100us计数器为0,重置计数器
MOV C100us+1,#LOW(TICK)
CPL LEDBUF ;取反LED
EXIT: POP PSW
RETI
START: MOV TMOD,#02H ;方式2,定时器
MOV TH0,#T100us ;置定时器初值
MOV TL0,#T100us
MOV IE,#10000010B ;EA=1,IT0=1
SETB TR0 ;开始定时
CLR LEDBUF
CLR LED
MOV C100us,#HIGH(TICK) ;设置10000次计数值
MOV C100us+1,#LOW(TICK)
LOOP: MOV C,LEDBUF
MOV LED,C
LJMP LOOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -