📄 timer4.asm
字号:
;**************************************************
; 平凡单片机工作室
; http://www.mcustudio.com
; (c) Copyright 2003 Pingfan's McuStudio
; All rights Reserved
;timer4.asm
;作者:周坚
;功能描述:两个灯同时闪烁,一个是0.25S闪一次,一个是0.5S闪一次,介绍项目中需要多个定时器的解决方法
;本例可用DSB-1A型单片机实验板验证
;本例可用ledkey.dll实验仿真板验证,但LED的闪烁速度与你的计算机性能有关
;如果闪烁速度过快,可适当调整第一、二行后的数值,按比例扩大,如调到50、100,
;**************************************************
TM1 EQU 5
TM2 EQU 10
ORG 0000H
AJMP START
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处
ORG 30H
START:
MOV P1,#0FFH ;关所有的灯
MOV R6,#00H ;软件计数器预清0
MOV R7,#00H
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#3CH
MOV TL0,#0B0H ;即数15536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许
SETB TR0 ;定时/计数器0开始运行
LOOP:
AJMP LOOP ;真正工作时,这里可写任意程序
TIME0: ;定时器0的中断处理程序
INC R6
INC R7 ;两个计数器都加1
MOV A,R6
CJNE A,#TM1,T_NEXT ;30H单元中的值到了5了吗?
T_L1:
CPL P1.0 ;到了,取反P10
MOV R6,#0 ;清软件计数器
T_NEXT:
MOV A,R7
CJNE A,#TM2,T_RET;31h单元中的值到10了吗?
T_L2:
CPL P1.1
MOV R7,#0 ;到了,取反P11,清计数器,返回
T_RET:
MOV TH0,#3CH
MOV TL0,#0B0H ;重置定时常数
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -