dsp汇编编程及应用举例(编辑修改稿)内容摘要:

10000,AR4 ;将辅助寄存器 AR4 设为 10000 loop3: RPT 10000 ;重复执行下一指令 10000+ 1 次 NOP ;等待 BANZ loop3,*AR4 ;循环 AR4 值 10000+ 1 次 loop2: MPY @y,A ;将 y T,其值存入 A 寄存 器 STL A,@y ;将 A 的值存入 y 地址中 PORTW @y,PA0 ;输出 y 地址值到输出口 STM 10000,AR5 ;将辅助寄存器 AR5 设为 10000 loop4: RPT 10000 ;实现第 8 个灯跳转到第 1 个灯时的时间延迟 NOP BANZ loop4,*AR5 BANZ loop2,*AR1 BANZ loop1,*AR2 end: B end .end 数据寻址方式: C54x 共有 7 种数据寻址方式,如表所示: 寻址方式 用途 举例 指令含义 立即寻址 主要用于初始化 LD # 10, A 将立即数 10 传送至累加器 A 绝对寻址 利用 16 位地址寻址存储单元 STL A, *(y) 将累加器 A 的低 16位存放到变量 y 所在的存储单元中 累加器寻址 把累加器的内容作为地址 READYA x 按累加器 A作为地址读程序存储器,并存入变量 x 所在的数据存储器单元 直接寻址 利用数据页指针和堆栈指针寻址 LD @x,A (DP+x 的低 7 位地址 )—— A 间接寻址 利用辅助寄存器作为地址指针 LD *AR1,A ((AR1)) —— A 存储器映象寄存器寻址 快速寻址存储器映象寄存器 LDM ST1, B ( ST1) —— B 堆栈寻址 压入 /弹出数据存储器和 MMR(存储器映象寄存器) PSHM AG ( SP)- 1—— SP ,( AG) —— TOS ‘ C54x 寻址存储器有两种基本的数据形式: 16 位数和 32 位数。 大多数指令能够寻址16 位数,但是,只有双精度和长字指令才能寻址 32 位数。 在 32 位寻址时,先处理高有效字,然后处理低有效字。 如果寻址的第 1 个字处在偶地址,那么第 2 个字就处在下一个(较高的)地址;如果第 1 个字处在奇 地址,那么第 2 个字就处在前一个(较低的)地址。 循环操作: BANZ 在程序设计时,经常需要重复执行某一段程序。 利用 BANZ(当辅助寄存器部位 0时转移)指令执行循环技术和操作是十分方便的。 如果要重复执行 n 次,则重复指令中应规定计数值为 n- 1 次。 重复操作: C54x 有 3 条重复操作指令: RPT(重复下条指令)、 RPTZ(累加器清 0 并重复下条指令)以及 RPTB(块重复指令)。 重复指令 RPT 或 RPTZ 允许重复执行紧随其后的那一条指令。 如果要重复执行 n 次,则重复指令中应规定计数值为 n- 1 次。 2. 3 程序三 编程目的:实现 DSP 分时输入与输出功能 程序功能:先从一个 I/O 口读入一数据并将其存入某地址,再从该地址将数据输出到另一个I/O 口 .title .mmregs PA0 .set 0 PA1 .set 1 STACK .usect STACK,10h .bss y,1 .text start: PORTR PA1,@y ;从 I/O 口读入数据并储存到 y 所在的地址 LD @y,A ;将 y 中的 数据写入累加器 A 中(便于观察 y 中数值的变化情况)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。