📄 timer1.asm
字号:
;*****************************************************************************
; Function: timer1.asm
; Version : 1.00
; Description: timer
;
; Copyright Texas instruments Inc, 2000
;*****************************************************************************
.mmregs
* Maximum Frequency Timer Clock Setup
*
.data
Timer1 .word 808030h ; Timer1 global control address
TCTRL_RST .word 303h
TCTRL_GO .word 3C3h
;****************************************
;FUNC=1. TCLK配置为输入输出引脚
;I/0=1 , TCLK配置为通用输出引脚
;C/P=1,选择时钟模式,信号TSTAT标志和外部输出有50%周期
;CLKSRC=1,内部时钟,频率为H1/2用来计数递增。INV位对内部时钟源无影响
;INV=0,不反相
;****************************************
TCNT .word 0 ; Timer counter value
TPRD .word 2 ; Timer-period value
;*****************************************************************************
.def _timer1
.text
_timer1:
;PUSH FP ;保护旧FP
;LDI SP,FP ;设置新FP
;ADDI 2,SP ;分配局部帧
PUSH ST ;保护ST
PUSH R0 ;保护R0的低32位
PUSHF R0 ;保护R0的高32位
PUSH R1 ;保护R1的低32位
PUSHF R1 ;保护R1的高32位
PUSH R2 ;保护R2的低32位
PUSHF R2 ;保护R2的高32位
PUSH R3 ;保护R3的低32位
PUSHF R3 ;保护R3的高32位
PUSH R6 ;保护R6的低32位
PUSHF R6 ;保护R6的高32位
PUSH AR0 ;
PUSH AR1 ;
PUSH AR2 ;
PUSH AR3 ;
PUSH AR4 ;
;以上为保护寄存器
;********************************************************
LDP Timer1
LDI @Timer1,AR0 ; Load data page pointer
LDI 0,R0
STI R0,*AR0 ; Halt timer
LDI @TCTRL_RST,R0 ; Configure timer
STI R0,*AR0
LDI @TCNT,R0
STI R0,*+AR0(4) ; Load timer counter
LDI @TPRD,R0
STI R0,*+AR0(8) ; Load timer period
LDI @TCTRL_GO,R0
STI R0,*AR0 ; Start timer
;********************************************************
;结束,恢复堆栈
POP AR4 ;
POP AR3 ;
POP AR2 ;
POP AR1 ;
POP AR0 ;
POPF R6 ;
POP R6 ;
POPF R3 ;
POP R3 ;
POPF R2 ;
POP R2 ;
POPF R1 ;
POP R1 ;
POPF R0 ;
POP R0 ;
POP ST ;
;SUBI 2,SP ;
;POP FP ;
RETI ;函数返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -