堆栈的使用方法2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
堆栈的使用方法
学院:教育信息与技术学院专业:信息工程班级:0802 姓名:江伟学号:2008116020220
一:实验任务
掌握堆栈的使用方法
二:实验工具
计算机、DSP 实验箱。
三:实验内容
1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。
2、新建一个项目:点击Project-New,将项目命名为example3,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。
3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example3),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM 为保存类型),我们在这里将保存名字命名为example3.asm 。
4、在项目中添加源文件:在新建了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击example3.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的example3.asm 文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击example3.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
.title "example3.asm"
.mmregs
size .set 100
stack .usect "STK",size ;堆栈的设置
.bss length,10H
.def _c_int00;start
.text
_c_int00: B start;
start: STM #0,SWWSR ;插入0 个等待状态
STM #stack+size,SP ;设置堆栈的指针
LD #-8531,A
STM #size,AR1
MVMM SP,AR7
loop: STL A,*AR7-
BANZ loop,*AR1-
.end
6、编写链接配置文件:
参照实验一,需要更改的地方如下:
7、编写中断向量表文件
参照实验一,可不作修改。
8、对项目进行编译和链接:
把example3.asm、vectors.asm、example3.cmd 依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。
9、装载可执行文件:
要让程序代码在DSP 内部运行必需将生成的*.OUT
文件装载到DSP 内部,装载方法是点击:File-Load
Programe 再选择生成的example3.out 文件就可以将程
序装载到DSP 的内部存储器中。
10、运行程序并查看结果:
a)首先打开欲查看的数据空间:点击View-Memory,
弹出“Memory Window Options”对话框,把欲查看的
地址改为0x0090
b)点击OK 按钮,然后点击Debug-Run 让程序在DSP
内部运行,最后点击Debug-Halt,再观察“Memory ”
四:实验现象
实验步骤比较复杂,按照步骤,完成的比较好
定时器中断实验
学院:教育信息与技术学院专业:信息工程班级:0802 姓名:江伟学号:2008116020220
一:实验任务
1、掌握DSP 中断技术,学会对DSP 中断的处理方法。
2、掌握中断对于程序流程的控制,理解DSP 对于中断的响应时序。
3、掌握汇编语言编写中断的基本方法。
二:实验工具
计算机、DSP实验箱。
三:实验内容
利用定时器中断制作方波发生器,通过XF 引脚控制LED 发光来检测方波的周期。
五、实验步骤
1、新建一个项目:testxf.pjt;
2、在项目中编辑以下汇编语言文件:
有时定时的长度不能满足需要,比如F=50Mhz时,定时最大是:
20ns*2^4*2^16=20ms。如果需要更长的定时,就要在定时器中断子程序中再加一个计数器,直到产生一定次数的定时中断后再执行相应的操作。如下程序可以产生1Hz 的方波:
;==============================================
; fangbo.asm
; 利用定时器Timer0 在XF 脚产生周期1s 的的方波
;==============================================
.title "fangbo.asm"
.mmregs
.def _c_int00 ;程序入口
.def TINT0_ISR ;Timer0中断服务程序
STACK .usect "STACK",10H ;分配堆栈空间
;设定定时器0 控制寄存器的内容
K_TCR_SOFT .set 0B<<11 ;TCR第11位soft=0
K_TCR_FREE .set 0B<<10 ;TCR第10位free=0
K_TCR_PSC .set 0B<<6 ;TCR第9-6位,可设跟TDDR 一样,也可不设自动加载
K_TCR_TRB .set 1B<<5 ;TCR第5位TRB=1此位置1,PSC会自动加载的
K_TCR_TSS .set 0B<<4 ;TCR第4位TSS=0
K_TCR_TDDR .set 0100B<<0 ;TCR第3-0位TDDR=0100B
K_TCR .set
K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR
K_TCR_STOP .set 1B<<4 ;TSS=1时计数器停止
.data
DATA_DP:
XF_Flag: .word 1 ;当前XF的输出电平标志,如果XF_Flag=1,则XF=1
;================================================
;主程序: