实验二存储器寻址及IO操作实验.docx

上传人:b****2 文档编号:1437828 上传时间:2022-10-22 格式:DOCX 页数:19 大小:31.92KB
下载 相关 举报
实验二存储器寻址及IO操作实验.docx_第1页
第1页 / 共19页
实验二存储器寻址及IO操作实验.docx_第2页
第2页 / 共19页
实验二存储器寻址及IO操作实验.docx_第3页
第3页 / 共19页
实验二存储器寻址及IO操作实验.docx_第4页
第4页 / 共19页
实验二存储器寻址及IO操作实验.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

实验二存储器寻址及IO操作实验.docx

《实验二存储器寻址及IO操作实验.docx》由会员分享,可在线阅读,更多相关《实验二存储器寻址及IO操作实验.docx(19页珍藏版)》请在冰豆网上搜索。

实验二存储器寻址及IO操作实验.docx

实验二存储器寻址及IO操作实验

实验二存储器寻址及I/O操作实验

一、实验目的

1)掌握TMS320VC5402的存储器空间分配

2)熟悉TMS320C54x的各种存储器操作指令

3)掌握各种寻址方式

4)掌握I/O口操作方法

二、实验设备

1)微机一套,DSP硬件开发器一套,DSP实验箱一套

2)程序及链接命令文件见:

D:

\EXPER\EXP2目录下的.asm和.cmd文件

三、开关设置

将开关K9拨到右边,即仿真器选择连接右边的CPU2。

四、实验步骤:

做过了实验一,相信各位同学对于CCS的基本操作已经了解,故在此不再赘述。

1)打开CCS,新建项目文件,添加源程序和链接命令文件,编译程序,加载目标代码文件。

2)打开各个观察窗口,请注意,本实验需要打开三个内存窗口:

Data页的0x2000(.data段)起始处、Data页的0x3100(.stack段)之前、以及Program页的0x1f00起始处

3)按照实验一的步骤设置断点,观察方法也基本相同,下面仅对各个小段程序进行简要说明:

bk1:

立即数寻址方式

bk2:

绝对地址寻址方式

bk3:

绝对地址寻址方式

bk4:

累加器寻址方式

bk5:

直接寻址方式(DP为基准)

bk6:

直接寻址方式(SP为基准)

bk7:

间接寻址方式

bk8:

存储器映射寄存器寻址方式

bk9:

堆栈寻址方式

bk10:

将程序存储器0x1000为起始地址的100个字复制到数据存储器的0x3100为起始地址的空间中

3)全速执行程序,并调整K1~K8开关,观察输出对应的发光管LED1~8是否点亮。

五、实验报告

1)写出各个BK1到BK10的每一小段都使用了那些寻址方式?

注意一条指令可以含有多种寻址方式。

2)写出BK1到BK9每段发生变化的存储器单元的内容,以及BK10实现的功能。

3)自己编写一段程序插入到BK11段后面,使数存单元2000H和~2007H清零,将2100H开始的连续100个单元清零分别初始化为0,2,4…198.

4)读TESTIO段,说明为何程序连续运行后,开关K1~K8的状态会改变LED1~8的显示。

六、源程序及链接命令文件

*************************************************

*FileName:

*

*Description:

数据存储器和程序存储器及I/O实验*

*Writeby:

lanrunze*

*Date:

2004-2-10*

*Update:

2006-10-30*

*************************************************

*输入端口IO地址为8000H使用74ls244作为八个开关K1~K8的输入缓冲

*输出端口IO地址为8001H使用74ls273作为八个发光二极管LED1~LED8的输出锁存

*注意观察存储器或者累加器变化时,由于内部存在流水线原因,

*因此要多执行几个周期才能观察到变化

.title"ex2.asm";源程序名称

.globalreset,_c_int00;定义全局变量

.mmregs;使用预定义的存储器映像寄存器

DAT0.set00H;定义数存直接寻址方式的低7位地址

DAT1.set01H

DAT2.set02H

DAT3.set03H

DDAT0.set2004H;定义数存绝对寻址方式的16位地址

DDAT1.set2005H

DDAT2.set2006H

DDAT3.set2007H

PDAT0.set1f00H;定义程存绝对寻址方式的16位地址

PDAT1.set1f01H

PDAT2.set1f02H

PDAT3.set1f03H

Stack_Length.set100H;堆栈长度

.sect".vectors";定义中断向量段,用于存储中断向量表

reset:

B_c_int00;复位中断向量入口地址

NOP

NOP

.space4*16*31;为其它中断向量保留空间

STK:

.usect"STACK",Stack_Length;定义堆栈段

.text;程序段

_c_int00:

;默认程序入口

LD#40h,DP;置数据页为2000h~207Fh

STM#STK+Stack_Length,SP;置堆栈指针

SSBXINTM;禁止中断

STM#07FFFh,SWWSR;置外部等待时间

ldmPMST,A;修改IPTR段

and#0x3f,A;去掉IPTR

or#0x3f80,A;IPTR位等于3F80

stlma,PMST;写入IPTR

bk1:

ST#1234h,DAT0;1234为立即数寻址DAT0为直接寻址省略@符号

ST#5678h,*(DDAT1);*(DDAT1)为绝对寻址DDAT1是符号常数

NOP

NOP

NOP

bk2:

MVDKDAT0,DDAT0;绝对地址(dmad)寻址0X2004单元

MVKDDDAT1,DAT1;

NOP

NOP

NOP

bk3:

MVDPDAT0,PDAT0;绝对地址(pmad)寻址

MVDPDAT1,PDAT1;

NOP

NOP

NOP

bk4:

LD#PDAT1,A;累加器寻址

READADAT2;读取程存0X1F01中的数值送到数存

NOP

NOP

NOP

bk5:

ST#3210h,DAT3;直接寻址(DP指针)

NOP

NOP

NOP

bk6:

SSBXCPL

NOP

NOP

NOP

ST#9876h,DAT3;直接寻址(SP指针)

NOP

NOP

NOP

RSBXCPL

NOP

NOP

NOP

bk7:

STM#DDAT3,AR0;间接寻址

ST#8765h,*AR0

NOP

NOP

NOP

bk8:

STM#8888h,T;存储器映射寄存器寻址

NOP

NOP

NOP

bk9:

PSHMT;堆栈寻址

NOP

STM#0h,T

NOP

POPMT

NOP

NOP

NOP

bk10:

STM#2100h,AR0;程序存储器到数据存储器的复制

RPT#99;单指令重复100次

MVPD1000H,*AR0-;在该指令重复的过程中程存地址自动增加

NOP

NOP

NOP

bk11:

NOP;自己添加程序段,

(1)将数据存储空间2000H到2007H清零

;

(2)将2100h开始的连续100个单元分别初始化为0,2,4,6,8...,198

bk11:

STM#2000h,ar1

ld#0,A

RPT#9

STLA,*AR1+

NOP

NOP

STM#2000h,AR0

RPT#7(下一条语句循环n+1次)

ST#0000h,*AR0+

NOP

NOP

NOP

NOP

ST#0000H,*(2100H)

LD#0,A

STM#98h,BRC(循环计数器)改完程序后要重新编译下载。

STM#2101h,AR2

RPTBTestIO-1

ADD#2,A,A

STLA,*AR2+

NOP

NOP

NOP

NOP

TestIO:

;为了便于观察按键与显示LED的关系,可将程序连续执行

.bssKey_Value,1;定义变量用于保存按键数值

stm#Key_Value,ar1;

portr8000h,*ar1;读端口8000H并存入数存单元

nop

nop

portw*ar1,8001h;将数存单元内容送到8001H端口

nop

nop

bk12:

B_c_int00;为了观察循环执行程序

.end

2、链接器命令文件exp2.cmd

MEMORY

{

PAGE0:

VECS:

origin=0x3f80,length=0x80

PROG:

origin=0x1000,length=0x1000

PAGE1:

DATA:

origin=0x2000,length=0x1000

STACK:

origin=0x3000,length=0x780

}

SECTIONS

{

.vectors:

{}>VECSPAGE0

.text:

{}>PROGPAGE0

.data:

{}>DATAPAGE1

STACK:

{}>STACKPAGE1

}

第4章附录

附录1:

TMS320C5402CPU及外设存储器寄存器映射表

0

IMR

中断屏蔽寄存器

1

IFR

中断标志寄存器

2-5

-

测试保留

6

ST0

状态寄存器0

7

ST1

状态寄存器1

8

AL

累加器A低字(15-0比特)

9

AH

累加器A高字(31-16比特)

A

AG

累加器A保护位(39-32比特)

B

BL

累加器B低字(15-0比特)

C

BH

累加器B高字(31-16比特)

D

BG

累加器B保护位(39-32比特)

E

T

暂存寄存器

F

TRN

传送寄存器

10-17

AR0-AR7

辅助寄存器ARnn=0~7

18

SP

堆栈指针

19

BK

循环缓存区大小寄存器

1A

BRC

块重复计数器

1B

RSA

块重复开始地址

1C

REA

块重复结束地址

1D

PMST

状态寄存器

1E

XPC

程存扩展寻址寄存器

1E-1F

保留

20

McBSP0_DRR2

带缓存串口0数据接收寄存器2

21

McBSP0_DRR1

带缓存串口0数据接收寄存器1

22

McBSP0_DXR2

带缓存串口0数据发送寄存器2

23

McBSP0_DXR1

带缓存串口0数据发送寄存器1

24

TIM

定时器计数器

25

PRD

定时器周期寄存器

26

TCR

定时器控制寄存器

27

保留

28

SWWSR

等待状态产生寄存器

29

BSCR

Bank-switching控制寄存器

2A

保留

2B

SWCR

扩展等待控制寄存器

2C

HPIC

主机接口控制寄存器

2D-2F

保留

30

TIM1

定时器计数器

31

PRD1

定时器周期寄存器

32

TCR1

定时器控制寄存器

33-37

保留

38

McBSP0_SPSA

多缓冲串口0子地址寄存器

39

McBSP0_SPSD

多缓冲串口0子数据寄存器

3A-3B

保留

3C

GPIOCR

GPI/O引脚控制寄存器

3D

GPIOSR

GPI/O引脚状态寄存器

3E-3F

保留

40

McBSP1_DRR2

带缓存串口1数据接收寄存器

41

McBSP1_DRR1

带缓存串口1数据发送寄存器

42

McBSP1_DXR2

带缓存串口1控制寄存器

43

McBSP1_DXR1

带缓存串口1控制扩展寄存器

44-47

保留

48

McBSP1_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1