DSP汇编编程

DSP汇编编程,第1张

.global start 定义全局标号

.sect ".resect"

B start

.text

.bss x,1 三个变量各为一个字(16位,非初始化段)

.bss y,1

.bss z,1

.textstart:

ldp #0 ;因下面诸变量使用直接寻址,装载DP值

splk #5,x ;变量赋初值,x=5

splk #6,y ; y=2

lacc x ;将x的值装载至累加器

add y ;累加器加上y的值

sacl z ;将累加器结果(32位)的低16位存放到变量z

ldp #4 ;直接寻址,装载DP值,页指针指向片内数据区DARAM B0

splk #1,1 绝对地址201H开始的四个单元存1,2,3,4

splk #2,2

splk #3,3

splk #4,4以下使用间接寻址将201H开始的4个悄型单元的启老猜数

转存到300H开始的4个单元 lar ar0,#201h 源起始地址存在辅助寄存器0

lar ar1,#300h ;目的起始地址存在辅助寄存器1

lar ar2,#3 循环计数值为移动数-1

mar *,ar0 设置当前辅助寄存器为ar0loop1:;开始循环搬移数据

lacc *+,ar1 ;将当前辅助寄存器(ar0);所

;指向的数据内存单元的值装载到acc,

ar0加1,设置当前辅助寄存器为ar1

sacl *+,ar2 acc低16位存放到当前辅助寄存;器(ar1)指定的单元

ar1加1,设置当前辅助寄存器为ar2

banz loop1,ar0 当前辅助寄存器(ar2)如果不等于0则当前辅助寄 存器(ar2)减含神1,转loop1xh: B xh 空循环

.end

//(2) 主程序

// 该程序用于实验演示模板上的8个LED的循环显示

#include "register.h"

int temp,i

main()// 初始化子程序

{

asm(" setc SXM")// 抑制符号位扩展

asm(" clrc OVM")//答模 累加器中结果正常溢出

asm(" clrc CNF")// B0被配置为数据存储空间

asm(" setc INTM")// 禁止所有中断

SCSR1=0x81FE// CLKIN=10M,CLKOUT=4*CLKIN=40M

WDCR=0x0E8// 不使能看门狗,因为SCSR2中的WDOVERRIDE

// 即WD?の桓次缓蟮娜笔≈滴?,故可以用

// 软件禁止看门狗

IMR=0x0000 // 禁止所有中断

IFR=0x0FFFF// 清除全部中断标志,"写1清0"皮举饥

MCRA=MCRA&0x00EF // IOPA4,IOPA6,IOPB端口配置为一般的I/O功能, TMS320LF240x的

// 端口均为8位,MCRA为16位因此控制了IOPA,

// 和IOPB的设置

while(1)

{

PBDATDIR=0x0FFe0 // IOPB端口设置为输出方式燃返

PFDATDIR=0x0404

PFDATDIR=0x0FFF0 // IOPF2 设置为输出方式,且IOPF2=1

}

}

// 直接返回中断服务程序

void interrupt nothing( )

{

return

}

//这是一个可用的程序,供你参考


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12357593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存