当前位置:文档之家› 东北大学DSP实验

东北大学DSP实验

.title "io" ;title伪指令。

双引号括起来的源程序名。

伪指令小写。

.global _c_int00 ;global伪指令,将变量_c_int00说明为外部符号。

;外部符号:在一个模块中定义而在另一模块中引用的符号称为外部符号。

.mmregs ;将TMS320各寄存器名定义为全局符号,这样就可以直接引用寄存器(符号)。

;mmregs 定义存储器映射寄存器的符号名称。

FG_ADDR .set 1002H ;set伪指令。

将一个值分配给一个符号。

1002HI/O口地址定义。

DA TA .set 60h ;double ram data
.sect ".vectors" ;sect定义初始化命名段。

段名必须用双引号括起,建立包含代码和数据的自定义断。

;".vectors"定义向量表,紧跟其后的是复位向量和中断向量。

reset: B _c_int00 ; B 无条件跳转指令。

将变量_c_int00说明为外部变量,程序入口地址1000。

NOP ;空指令。

等待一个机器周期。

NOP
.space 31*4*16 ;space 伪指令。

在当前段内保留一个指定数目的位数,并用0填充, 保留31*4个字单元。

DELAY .macro sec_tenth ;macro 宏指令开始。

DELAY宏名。

sec_tenth形式参数。

延时sec_tenth/10 秒
STM sec_tenth-1,AR5 ;STM存储指令。

AR0~AR7 寄存器辅助。

loop1? STM #09h,AR6
loop0? STM #19999,AR7 ;STM存储指令。

AR0~AR7 辅助寄存器。

BANZ $,*AR7-
BANZ loop0?,*AR6- ;AR6-不为0时转移。

BANZ loop1?,*AR5-
.endm ;Endm 宏指令结束。

.text ;text 段是源程序正文。

经汇编后,紧跟.text 后的是可执行程序代码。

_c_int00: ;
LD #0h,DP ;LD装入指令。

设置数据页指针,DP=0H,则数据存储器地址为0000H~007FH。

STM #3000h,SP ;STM存储指令。

把累加器的低端存放到存储器映射寄存器中。

SP设置堆栈指针
RSBX INTM ;RSBX清除指令。

INTM中断方式位=0,允许可屏蔽中断。

INTM中断方式位=1,禁止可屏蔽中断。

STM #07FFFh,SWWSR ;SWWSR可编程软件等待状态寄存器。

作用:高速内存与
慢速外设的协调连接,提供一个方便的接口。

SSBX XF ;SSBX置位指令。

XF外部标志输出引脚=1,XF=0,呈高阻状态。

ST #1007h,CLKMD ;ST存储指令。

16bit长立即数。

工作在20MHz
RPT #0FFh ;RPT循环指令。

把循环次数0FFH装入循环计数器(RC)。

NOP
STM #0ffffh,IFR ;IFR中断标志寄存器。

把IFR每位写1的用途,就是清除所有被挂起的中断。

ORM #000h,IMR ;IMR中断屏蔽寄存器。

把IMR每位置0屏蔽该中断。

RSBX SXM ;RSBX清零指令。

SXMS是状态寄存器ST1中第8位,当SXM=0,不扩展符号;当SXM=1,扩展符号。

ST #8100H,DA TA ;ST存储指令。

16bit长立即数。

8100H=1000 0001 0000 0000b WRDENG: ST #100H,DATA ;0100H=0000 0001 0000 0000b.
PORTW DATA,FG_ADDR
DELAY #10
ST #200H,DATA ; 0200H=0000 0010 0000 0000b
PORTW DATA,FG_ADDR
DELAY #10
ST #400H,DATA ;0400H=0000 0100 0000 0000b.
PORTW DATA,FG_ADDR
DELAY #10
ST #800H,DATA ;0800H=0000 1000 0000 0000b.
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #1000H,DA TA ;1000H=0001 0000 0000 0000b.
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #2000H,DA TA ;2000h=0010 0000 0000 0000b.
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #4000H,DA TA ;4000H=0100 0000 0000 0000b.
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
STM #8000H,DATA ;8000H=1000 0000 0000 0000b. PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
;;;
ST #8000H,DA TA
PORTW DATA,FG_ADDR
DELAY #10
ST #4000H,DA TA
PORTW DATA,FG_ADDR
DELAY #10
ST #2000H,DA TA
PORTW DATA,FG_ADDR
DELAY #10
ST #1000H,DA TA
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #800H,DATA
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #400H,DATA
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #200H,DATA
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
STM #100H,DA TA
PORTW DATA,FG_ADDR
DELAY #10
RPT #10
NOP
ST #8100H,DA TA
B WRDENG ;B无条件跳转指令。

aaa nop
b aaa
.end ;汇编语言结束。

相关主题