📄 timer.asm
字号:
.mmregs
.include "init54x.inc"
.def MAIN_START
;STACK .usect "STACK",20h
.data
TIM0 .set 0024h ;定时器0的TIM 寄存器地址
PRD0 .set 0025h ;定时器0的PRD 寄存器地址
TCR0 .set 0026h ;定时器0的TCR 寄存器地址
t0_flag .set 0060h ;定义输出判别标志
SWCR .set 2BH
.def timer0_rev
MAIN_START:
.text
; STM #K_CLKMD,CLKMD
STM #0000h,SWWSR
STM #0164h,PMST
STM #0410h,TCR0 ; TCR TSS=1 ,关断定时器0
STM #09C3h,TIM0 ;TIM0赋初值
STM #09C3h,PRD0 ;PRD0赋初值
ST #0,t0_flag
STM #07EFh,TCR0 ;ON TIM0 IN TCR TSS=0 TRB=1 TDDR=1111
STM #0008h,IFR ;TINT0=1 ,清除未处理完的定时器中断
STM #0008h,IMR ; TINT0=1 ,开放(允许)定时器中断
RSBX INTM ;开放全部中断
; RSBX XF
;jj:
; NOP
; NOP
; NOP
; B jj
; 定时器0中断服务子程序.其功能是:每定时中断一次,改变一次XF的值,使XF高低电平各持续2ms,形成T=4ms.
timer0_rev:
BITF t0_flag,#1 ; if t0_flag=1,then TC=1;else TC=0
BC xf_out,NTC ;TC=0时,执行xf_out程序段
SSBX XF ;TC=1时,XF=1
ST #0,t0_flag ;t0_flag=0,为下次XF变低电平作准备
B wait
xf_out:
RSBX XF ;TC=0,XF=0
ST #1,t0_flag ;t0_flag=1,为下次XF变高电平作准备
wait:
RETE
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -