文档介绍:电气工程实践课——DSP工程实践授课教案
实践项目名称
输入输出端口的控制
二、实践目的
复习上节课学习的寻址方式
学习寄存器的基本设置
学习输入输出端口的控制
三、实践所需的条件
仿真器,开发板
四、实践需要注意的问题
IFR IMR SCSR1 MCRA MCRB PADATDIR PCDATDIR等寄存器的基本设置
输入输出端口的控制不能反向
五、实践具体操作步骤
讲解立即数寻址、间接寻址、寄存器寻址
(1)立即数寻址
这种寻址方式最简单,立即数包含在指令中。立即数包括短立即数和长立即数;短立即数为3、5、8、9Bit;长立即数为16位。立即数包含在单字节和双字节指令中,短立即数为3、5、8、9Bit包含在单字节指令中,16-Bit指令包含在双字节指令中。
例1:RPT #99 ;将下一条指令执行100次(短立即数寻址)
例2:ADD #16384,2 ;将16384左移2位后加到累加器中(长立即数寻址)
(2)直接寻址
在直接寻址中,指令代码包含了数据存储器地址的低7位。这7-bit位作为偏移地址与数据页指针相结合共同形成16-bit数据存储器实际地址。如下图所示。
例3:LDP #4;数据页指针指向存贮空间的第4页
ADD 9h,;中
(3)寄存器寻址
我们可以使用系统提供的8个辅助寄存器AR0~AR7实现灵活的间接寻址,通过间接寻址方式可以寻址数据存储器的64K 中任何一个寄存器单元。间接寻址方式主要有以下几种:
例3:
助记符
例子
注释(ARP=AR1) AR1=0305h (0305h)=0202h
*
ADD *
ACC =ACC+*AR1 ;ACC=ACC+0202
*+
ADD *+
ACC =ACC+*AR1;AR1 =AR1+1
*-
ADD *-
ACC =ACC+*AR1;AR1 =AR1-1
*0+
ADD *0+
ACC =ACC+*AR1;AR1 =AR1+AR0
*0-
ADD *0-
ACC =ACC+*AR1;AR1 =AR1- AR0
例4:
当前AR为AR0 AR0=0327h (0327)=0123h ACC=2h (指令执行前)
ADD *+,0,AR1
ACC=0125 h AR0=0327h (0327)=0123h 当前AR为AR1 (指令执行后)
通过事例程序熟悉各种各种寻址方式,如下:
.include “”
.def _c_int0
.data
DP_B01:
data0 .word 0
data1 .word 1
data2 .word 2
data3 .word 3
data4 .word 4
data5 .word 5
data6 .word 6
data7 .word 7
.text
_c_int0:CALL SYSINIT
LDP #DP_B01 直接寻址
data0
ADD #1
SACL data1 ;ACC的低16位送DATA1=1
NOP
MAR *, AR1
LAR AR1,#data3 ;data3的地址装在AR1中
data2 ;
ADD * ;把当前辅助寄存器中的数字作为地址,中的想加中。5
SACL data3 ;ACC中的低16位数字5放在data3中。
NOP
#10 ;
LAR AR1,#data4 ;把data4的地址放在AR1中
ADD *+ ;中的10想加,=14 ,当前辅助寄存器AR1中的数字+1
SACL data5 ;ACC低16位放在data5=14
NOP
#10 ;
LAR AR1,#data6 ;data6的地址放在AR1中
LAR AR0,#2 ;2放在AR0
ADD *0+ ;AR1中的数字作为地址,此地址中的数字6 ,把AR1的值和AR0的值想加放在AR1中
SACL data7 ;ACC中的数字放在data7
(ACC中的数字为16)
NOP
LOOP: NOP
B LOOP
SYSINIT:SETC INTM
CLRC SXM ;抑制所有的符号扩展
CLRC OVM ;加器正常溢出
F ;口RAM B0为数据存储区
LDP #0E0H
SPLK #0200H,SCSR1 ;置时钟频率为2倍频
SPLK #6FH,WDCR
LDP #0
SPLK #0000H,IMR
SPLK #0FFFFH,IFR
RET
.END
六、实践预期结果(目标)
掌握DSP的指令系统
七、思考题
据例子说明立即数寻址、直接寻址、寄存器寻址的却别分别是什么?