📄 main.asm
字号:
.def start
.def loop
.def Num
.def _y
.def _A
.def _B
.def _C
TIM1 .set 0x2400 ;Timer1 TIM Register Address
PRD1 .set 0x2401 ;Timer1 PRD Register Address
TCR1 .set 0x2402 ;Timer1 TCR Register Address
PRSC1 .set 0x2403 ;Timer1 PRSC Register Address
sp_stack_len .set 200
ssp_stack_len .set 200
sp_stack .usect "stack",sp_stack_len
ssp_stack .usect "stack",ssp_stack_len
.data
_A: .word 0x678D ;A=1.618
_B: .word 0xC000 ;B=-1
_C: .word 0x25A1 ;C=0.588
Num .usect "B_DARAM", 1 ;Suffix of Array
_y .usect "B_DARAM",101 ;Result Array
;Length = 101
.sect "AsmStart"
start:
BCLR C54CM
.C54CM_off
BCLR ARMS
.ARMS_off
;Initialization of Stack
AMOV #(sp_stack + sp_stack_len),XSP
MOV #(ssp_stack + ssp_stack_len),SSP
;Initialization of Interrupt
BSET INTM
MOV #0x04FF,mmap(IVPD)
MOV #0x04FF,mmap(IVPH)
MOV #0xFFFF,mmap(IER0) ;enable nothing
MOV #0xFFFF,mmap(IER1) ;only enable Timer1 Interrupt
;Initialization of Timer1
;assume that DSP work clock is 160MHz
MOV #0x000F,PORT(#PRSC1)
MOV #0x03E7,PORT(#PRD1)
MOV #0x0C38,PORT(#TCR1)
MOV #0x0828,PORT(#TCR1)
;Set FRCT =1, in order to do fraction multiply
BSET FRCT
BCLR M40
;Initialization of y(0), y(1)
MOV #_y,AR0
MOV #0x0000,*AR0 ;y(0)=0
MOV *(#_C),T0
MOV T0,AC1
MOV #1,T0
MOV AC1<<T0,*AR0(1) ;y(1)=C
MOV #0x0002,*(#Num) ;Num=2
BCLR INTM
loop: NOP
NOP
NOP
B loop
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -