⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 在Ti的c55平台下实现定时器的程序
💻 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 + -