- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章DSP软件开发课件
2)块重复操作指令: RPTB 块重复次数控制:使用块重复计数器BRC,使用STM命令设置BRC大小 循环开始地址:RSA,即RPTB指令的下一条指令。 循环结束地址:REA,由RPTB指令中的操作数指定 例子,P115 [例4.14] *3)循环嵌套(了解) (P116) RPTB指令中可以嵌套RPT指令 ▼数据块传送程序:复制功能 4种类型: 1)程序存储器--数据存储器 2条指令:MVPD, MVDP 2)数据存储器--数据存储器 3条指令:MVDK, MVKD, MVDD 3)数据存储器--MMR 3条指令:MVMD, MVDM,MVMM 4)程序存储器(累加器寻址)--数据存储器 2条指令:READA,WRITEA 例子:P117 [例4.15] ▼算术运算类 类型 单字运算 长字运算 整数运算 小数运算(定点DSP都采用小数乘法进行乘法运算) 定点运算 浮点运算 有符号数和无符号数 符号位:最高位表示符号位,0为正数,1为负数 原码=补码取反+1 单字运算 例子,P119 [例4.16] 小数表示方法 (P124) 2的补码表示小数 使用32768(=215)乘以十进制小数绝对值后,再取反+1得到补码,然后将其结果的十进制整数部分转换为16进制数 2个带符号小数相乘时,得到2个符号位,必须移去一个符号位,所以要使FRCT=1,可以使用指令 SSBX FRCT 实现 例子,P124 第三部分 DSP高级C语言程序设计P285 DSP设计流程 C源文件 C编译器 汇编 源文件 汇编器 汇编 源文件 COFF 目标文件 链接器 可执行的 COFF文件 宏源文件 存档器 宏库 存档器 目标 文件库 建库工具 运行时 支持库 EPROM 编程器 交叉引用 列表器 调试工具 TMS320C54x 绝对地址 列表器 HEX代码 转换工具 汇编语言程序的编辑、汇编和链接过程 示意图 汇编器 调试程序 链接器 文本编辑器 .asm 源文件 .obj 目标文件 .out 输出文件 . cmd 链接命 令文件 . lst 列表文件 . map 存储器 映像文件 十六进制 转换程序 HEX500 - o - m - l TMS320C54x 开发工具(C编译器) 支持标准C/C++语言; 增加了新的语法内容: 如:增加了新的关键词、函数、库,用于描述DSP硬件 C语言开发的优点 1)便于阅读,维护,交流,如: control_word_4ch(led0,on); 上面的函数是点亮0号led指示灯。 2) 编程更为容易,不是特别精通汇编语言的开发人员也可以编写; 3)便于移植到C55、C2000、C6000等DSP系统; TMS320C54x C编译器支持的关键词 const 关键词 用来控制数据对象的存储分配,const定义的常数被分配在ROM中,关键词volatile定义的数据分配在RAM中。 例如定义ROM常数表 const int digits[ ]={0,1,2,3,4,5,6,7,8,9} 2. ioport 关键词 用来访问TMS320C54x器件的I/O端口空间 格式: ioport type port hex_num ioport指示这是一个端口变量的关键词 type(类型)必须是char(字符)、short(短整数)、int(整数)或无符号的变量。 port hex_num指端口编号。hex_num变量为十六进制的数。 例:声明I/O端口为无符号端口10h,将a写到端口10h,然后将端口10h读进b: ioport unsigned port10; /*访问I/O端口10h的变量*/ int func( ) { … port10=a; /*将a写到端口10h*/ … b=port10; /*将端口10h读进b*/ … } 端口变量的使用对赋值没有限制。端口变量可像其他变量一样用在表达式中。 a=port10+b; /*读端口10h,加上b,结果赋给a*/ prot10+=a; /*读端口10h,加上a,结果写到端口10h*/ 3. interrupt 关键词 用来指定某函数作为中断函数。 interrupt void int_handler() { unsigned int flags; … } 4. C_int00 表示C/C++ 主函数main( )的入口地址。 汇编语言与C/C++混
文档评论(0)