电子产品世界 » 论坛首页 » 嵌入式开发 » DSP系统 » DSP十天速成-----汇编部分


共25条 1/3 1 2 3 跳转至

DSP十天速成-----汇编部分

专家
2009-08-01 12:35:50    评分
汇编DSP十天速成.pdf

实验一 新手上路
初学者编写的第一个程序通常是控制XF 引脚的变化,然后用示波器测量XF 脚波形或观察与相接的LED。
这个程序也常常用来测度一下DSP 能否正常工作。
实验1.1 最简单的程序:控制XF 引脚周期性变化
实验目的:通过简单的程序了解DSP 程序的结构,熟悉CCS 开发环境。
*************************************************************
*最简单的程序:TestXF1.asm
*循环对XF 位置1 和清0,用示波器可以在XF 脚检测到电平高低周期性变化
*常用于检测DSP 是否工作。
*************************************************************
.mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标记
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF 置1
RPT #999 ;重复执行1000 次空指令产生延时
NOP
RSBX XF ;XF 清0
RPT #999 ;重复执行1000 次空指令产生延时
NOP
B CodeStart ;跳转到程序开头循环执行
.end
NOP 指令执行时间为一个时钟周期,设DSP 工作频率是50MHz,可以估算出XF 引脚电平的变化频率约为:5
0M/2000=25kHz
在没有示波器的情况下,就要将程序1.1 稍作改进,增加延时,用一个延时子程序将XF 脚电平变化频率降
到肉眼可分辨的程度,就可以用LED 来显示电平的变化



关键词: 十天     速成     -----     汇编     部分     程序    

专家
2009-08-01 12:37:29    评分
2楼
实验1.2 子程序调用
实验目的:学习子程序的调用
*************************************************************
*TestXF2.asm
*对TestXF1.asm 稍作改进,用延时子程序设置较长的延时,
*可以用试验板上的LED 看到XF 引脚电平的变化
*************************************************************
.mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标记
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF 置1
CALL Delay ;调用延时程序
RSBX XF ;XF 清0
CALL Delay ;调用延时程序
B CodeStart ;跳转到程序开头循环执行
**************************************************************
*延时子程序:Delay
*用两级减一计数器来延时。调整AR1 和AR2 的大小LED 闪烁的频率不同
**************************************************************
Delay:
STM #999,AR1 ;循环次数1000
LOOP1: STM #4999, AR2 ;循环次数5000
LOOP2: BANZ LOOP2,*AR2- ;如果AR2 不等于0,AR2 减1,再判断
BANZ LOOP1,*AR1- ;如果AR1 不等于0,AR1 减1,跳转到LOOP1
RET
.end
**************************************************************
*注意这种延时方法并不精确,需要精确定时必须用定时器。
*按此法延时的近似公式为:4*(AR2+1)*(AR1+1)*时钟周期
*当DSP 工作在50MHz(时钟周期20ns),AR1=999, AR2=4999 时
*延时约为400ms,则LED 闪烁的周期为800ms,频率1.25Hz
**************************************************************
设计指导:
1.源代码书写格式
源代码的书写有一定的格式,初学者往往容易忽视。简单归纳如下:
1.每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序
标签时的名称。指令区位于标号区之后,以空格或TAB 格开。如果没有标号,也必须在指令前面加上空格
或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。
另外还有专门的注释行,以*打头,必须顶格开始。
2.一般区分大小写,除非加编译参数忽略大小写。
3.标点符号有时不注意会打成中文全角字符导致错误。
书写格式的要求在很多DSP 书里都没有提,初学者往往只把书上的代码输入进去,编译时得到错误的提示,
而不知所措。其中最容易犯的错误指令顶格写,不过一般经提示后不会犯第二次。
有些格式CCS 并没有做要求,但注意养成良好的代码书写风格,增加代码的可读性。以上两个例子的书写
风格可作参考,但不是硬性规定:
1.标号区占3 个TAB 的间隔,即12 个字符
2.指令中的指令码占两个TAB 间隔,然后是操作数。
3.每一行的尾注能对齐的尽量对齐
4.标明一段程序功能的注释以*号打头顶格写,如果功能说明的注释较多,用分格线框起来。
此外其它编程语言的编程风格也可以借用过来,比如标示符命名规则、程序说明的要求等。如果项目组有
规定,则按规定执行。
本书的代码尽量保持一定的风格,不过读者可以发现前面的代码注释较多,后面随着学习的深入,一般不
会对每一条指令加注释,只注明程序段的功能。另外代码贴到word 里后,格式有些错位,无法一一纠正。
2.链接配置文件
一个完整的DSP 程序至少包含三个部分:程序代码、中断向量表、链接配置文件(*.cmd)。这里介绍一下链
接配置文件文件,对本次试验影响不大的中断向量表将在后文介绍。
连接配置文件的确定了程序链接成最终可执行代码时的选项,其中有很多条目,实现不同方面的选项,其
中最常用的也是必须的有两条:1.存贮器的分配
2.标明程序入口。以本次实验为例,下面的简单的链接配置文件就够用了:
/* TestXF.cmd */
-e CodeStart /*程序入口,必须在程序中定义相应的标号*/
MEMORY {
page 0:
PRAM: org=0100h len=0F00h /*定义程序存贮区,起始0100H,长度0F00H*/
}
SECTIONS{
.text:>PRAM page 0 /*将.text 段映射到page0 的param 区*/
}
由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配置文件。作为本手册通用的
链接配置文件如下,可以满足本书大部分程序的需要。在未特别指明的情况下使用这个通用的链接配置文
件:
/* 5402.cmd */
-e CodeStart /*程序入口,必须在程序中定义相应的标号*/
-m map.map /*生成存储器映射报告文件 */
MEMORY {
PAGE 0:
VECT: org=0080h len=0080h /*中断向量表*/
PARAM: org=100h len=0F00h /*代码区*/
PAGE 1:
DARAM: org=1000h len=1000h /*数据区*/
}
SECTIONS {
.text :> PARAM PAGE 0 /*代码段*/
.vectors :> VECT PAGE 0 /*中断向量表*/
STACK :> DARAM PAGE 1 /*堆栈*/
.bss :> DARAM PAGE 1 /*未命名段*/
.data :> DARAM PAGE 1 /*数据段*/
}
更多参考:
1.关于代码书写格式:SPRU102: TMS320C54x Assembly Language Tools User's Guide,3.5
Source Statement Format
2.关于链接配置文件:SPRU102: TMS320C54x Assembly Language Tools User's Guide,7.5
Linker Command Files,7.7 The MEMORY Directive,7.8 The SECTIONS Directive

专家
2009-08-14 10:01:52    评分
3楼
DSP十天速成

菜鸟
2009-08-31 04:43:53    评分
4楼
正想学dsp,不知如何入门,看后帮助不小。谢谢。

菜鸟
2009-09-06 09:24:28    评分
5楼
关注了,刚学,想入门,来看看

菜鸟
2009-09-06 09:33:47    评分
6楼
这个貌似跟以前发的帖子是一样的,不过这个格式要好很多,以前的那个格式比较凌乱,这个看起来会舒服很多。

菜鸟
2009-09-29 09:10:33    评分
7楼
多谢分享,下载了看看再说

菜鸟
2009-10-04 16:36:11    评分
8楼
多谢分享,下载了.

助工
2009-10-20 21:45:40    评分
9楼
十天速成,看看.

菜鸟
2009-11-07 16:50:12    评分
10楼
我是新手怎么下载不了啊,总是跳转到登录去

共25条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]