单片机原理西工大Word文档下载推荐.docx
- 文档编号:19122840
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:49
- 大小:1.31MB
单片机原理西工大Word文档下载推荐.docx
《单片机原理西工大Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机原理西工大Word文档下载推荐.docx(49页珍藏版)》请在冰豆网上搜索。
2.由单片机构成的最小系统有哪几部分构成?
3.DSP是哪三个英文词的缩写?
中文意义是什么?
4.哈佛结构计算机与冯·
诺伊曼结构计算机有什么差别?
5.微控制器与微处理器有什么不同?
6.TMS320LF24xA系列单片机有几套总线?
分别起什么作用?
总线中数据线和地址线分别有多少条?
最大可以访问多少存储单元?
每个存储单元由多少位组成?
7.什么是操作码?
什么是操作数?
8.实现一条指令的功能要经过哪四个阶段?
CPU为什么要采用流水线结构?
图9CPU结构图
2.寻址方式(上)
数据的存取
计算机中要处理的数据总是存放在存储单元中。
读取Read(也称为载入Load)是将数据从存储单元取到CPU的寄存器中,或是与CPU的寄存器进行运算。
写入Write(也称为保存Store)是将数据从CPU的寄存器放回到存储单元。
三种寻址方式
立即数寻址方式(ImmediateAddressingMode):
操作数是常数,只能读取,存放在指令字中。
直接寻址方式(DirectAddressingMode):
操作数是存储单元,可读写,地址在指令字中。
间接寻址方式(IndirectAddressingMode):
操作数是存储单元,可读写,地址在辅助寄存器中。
负数的表示
16位二进制补码
无符号数0x0000~0xFFFF(0~65535)
有符号正数0x0000~0x7FFF(0~32767)
有符号负数0x8000~0xFFFF(-32768~-1)
负数的三种表示(以-1为例)
原码表示0x8001
反码表示0xFFFE
补码表示0xFFFF
0x0000的反码是0xFFFF,补码=反码+1
符号扩展
二进制补码(以-7为例)
4位表示为0x9,解释为0x9-0x10
8位表示为0xF9,解释为0xF9-0x100
规律:
最高位(符号位)向上扩展
-128
…
-8
-7
-1
1
6
7
8
127
4位
9
F
8位
80
F8
F9
FF
00
01
06
07
08
7F
数的表示范围、溢出的概念
例:
4位二进制补码的表示范围是-8到7,7加1或-8减1会发生溢出。
而8位二进制补码的表示范围增大到-128到127,此时7加1或-8减1并不会发生溢出。
状态与控制寄存器ST0与ST1,每次全部列出,遇到一个介绍一个,先介绍SXM
15
14
13
12
11
10
5
4
3
2
ST0
ARP
OV
OVM
INTM
DP
ST1
ARB
CNF
TC
SXM
C
XF
PM
立即数寻址
在立即数寻址方式中,指令字包含指令要操作的常数。
在汇编指令中用#表示后面的数或标识符是一个立即数。
有两种类型的立即数寻址方式:
短立即数寻址和长立即数寻址。
使用短立即数寻址的指令有8位、9位或13位常数作为操作数。
短立即数指令是单指令字,常数嵌入这个字中。
累加器低半字装载指令:
LACL
#k
将8位常数k装入累加器低16位,不管SXM为0或1,不作符号扩展。
#18
;
指令编码B912
#12h
不论SXM为0或1,ACC为0x00000012
汇编语句格式:
标号、操作符、操作数、注释
[标号:
]
操作符
操作数
[;
注释]
标号可缺省,此时行首必须是空格或制表符。
“;
”至行末为注释,注释可缺省。
行首是*则为全行注释。
本例LACL为操作符,表示装载累加器低半部;
#18为操作数,表示常数18。
使用长立即数寻址的指令有一个16位的常数作为操作数,需要两个指令字。
常数作为第二个指令字传送。
这个16位值可以用作绝对值常数,也可以作为二进制补码值。
累加器装载指令:
LACC
#lk
将16位常数lk装入累加器。
当SXM为0时,为无符号数,高位补0;
当SXM为1时,为有符号数,高位符号扩展。
#1234h
指令编码BF821234
不论SXM为0或1,ACC为0x00001234
#8765h
指令编码BF828765
当SXM为0时,ACC为0x00008765
当SXM为1时,ACC为0xFFFF8765
直接寻址
直接寻址方式中,数据存储器按128字的块寻址,这些块称为数据页(DataPage)。
全部64K数据存储器由512个数据页构成,编号为0到511。
当前数据页由状态寄存器ST0中的9位数据页指针(DP)的值确定。
数据页装载指令:
LDP
#addr
将常量addr装载到ST0的DP。
除了数据页,处理器还必须知道这个页中正引用的特定的字,这由7位偏移量确定。
偏移量由IR寄存器中7个最低有效位(LSB)提供,指令寄存器(IR)保存下条要执行指令的操作码。
使用直接寻址的指令结构如图10所示,操作数的16位地址按图11构成。
8MSBs
dma
图10使用直接寻址的指令结构
图11直接寻址时的地址构成
不必在每条使用直接寻址的指令前设置数据页。
如果在一块代码中所有的指令都访问同样的数据页,可以简单地在块之前装入DP。
可是,如果在一块代码中访问不同的数据页,要确保每当访问新的数据页时改变DP。
将地址dma对应的存储单元中存放的16位数据装入累加器低16位,高16位补零,不管SXM为0或1,不作符号扩展。
将地址00FFh处的内容装ACC。
#(0FFh>
>
7)
将1装入DP
地址范围0x0080~0x00FF
0FFh
指令编码697F,编译器自动取低7位
使用符号常量,常用于访问存储器映射的I/O地址,如串行通讯口SCI的接收缓存地址0x7057,可以用符号SCIRXBUF表示。
SCIRXBUF
.set
7057h
SCIReceiverDataBufferRegister
#(SCIRXBUF>
将高9位0x0E0装入DP
编译器自动取低7位
读取SCI已接收到的内容
伪指令:
定义符号常量
标识符
值
用“标识符”表示“值”,本例SCIRXBUF表示7075h,是串行通信口的接收缓存寄存器。
用符号表示常量是一个好的编程习惯,增强程序的可读性,也便于修改常量。
使用变量
.data
以下内容放入data节
x
.int
1234h
建立变量x并赋初值0x1234
.text
以下内容放入text节
#x
编译器自动取高9位
.end
指定数据节
这条伪指令以下的内容在编译时将放在预先定义的名为“data”的节中,在链接时分配存放数据的地址。
定义16位整型变量并赋初值
初值
定义名为“标识符”的16位整型变量并赋“初值”。
指定代码节
这条伪指令以下的内容在编译时将放在预先定义的名为“text”的节中,在链接时分配存放代码的地址。
结束汇编源程序
安装与使用CCS
双击Setup按提示操作即可,安装完成后首次使用前需进行配置,将“C2xxSimulator”拖到左栏就可以在PC机上模拟C2xx系列单片机了。
简介:
项目文件、汇编源文件、包含文件、链接命令文件
目标程序、CPU状态
图12配置CCS
1.有哪三种寻址方式?
2.指令LACL#10与LACL10有什么区别?
各为什么寻址方式?
含义是什么?
3.指令LACC#1234h和LACC#0ABCDh执行后累加器ACC中为何值?
与SXM的状态有关吗?
4.要用直接寻址将地址0x0378处的值装入累加器,DP中应装入什么值?
指令中包含这个地址的哪几位?
3.寻址方式(下)
间接寻址
八个辅助寄存器(AR0-AR7)提供了灵活而强有力的间接寻址,64K数据空间的任何位置都可以用辅助寄存器中的16位地址访问。
状态寄存器ST0的辅助寄存器指针(ARP)位域指定当前辅助寄存器(即当前AR)。
在指令的处理过程中,当前辅助寄存器的内容用作所访问的数据存储器的地址。
指定当前AR指令:
MAR
*,ARn
指定ARn为当前AR,使ST0中的ARP成为n(0至7),同时ARP的原值保存到ST1的ARB位域。
AR装载指令:
LAR
ARn,#Addr
将常量Addr装载到辅助寄存器ARn。
*
将当前AR中的地址指向的存储单元的16位数据装入累加器低16位,高16位补零。
将地址00FFh处的变量x的内容装ACL。
AR2,#0FFh
将0x00FF装载到AR2
*,AR2
指定AR2为当前AR
指令编码6980
使用变量或符号常量
AR2,#x
将x所代表的地址装载到AR2
如果指令需要从数据存储器读,则ARAU将这个地址传给数据读地址总线(DRAB);
如果指令需要向数据存储器写,则它将这个地址传给数据写地址总线(DWAB)。
移动指针
在指令使用了数据值之后,当前辅助寄存器的内容可以由ARAU增加或减少,ARAU实现无符号16位算术。
无增量或减量
*+
*-
加1/减1
*0+
*0-
按指标量AR0增加/减少
*BR0+
*BR0-
使用反向进位按指标量AR0增加/减少,用于FFT
从前向后访问数组
1,2,3,4
intx[]={1,2,3,4};
假设x的地址是0x0100
将x的首地址装载到AR2为0x0100
ACC为0x00000001,AR2为0x0101
ACC为0x00000002,AR2为0x0102
从后向前访问数组
AR2,#(x+4-1)
将x的末地址装载到AR2为0x0103
ACC为0x00000004,AR2为0x0102
ACC为0x00000003,AR2为0x0101
跳过数组中一段
AR0,#2
ACC为0x00000001,AR2为0x0102
ACC为0x00000003,AR2为0x0104
二进制逆序
AR0,#4
AR2,#0
AR2为0x0004
AR2为0x0002,向低位进位
AR2为0x0006
AR2为0x0001
指定下个辅助寄存器
除了更新当前辅助寄存器,一些指令也可以指定下个辅助寄存器,即下个AR。
当指令执行完后,这个寄存器将成为当前辅助寄存器。
允许指定下个辅助寄存器的指令将新值装入ARP。
当ARP装入这个值时,ARP的前一个值装入辅助寄存器指针缓存(ARB)。
任何支持间接寻址操作数的指令都可以修改辅助寄存器(除了以立即数为操作数或无操作数的指令外,所有指令都可以用间接寻址。
)
支持间接寻址的指令结构如图13所示。
ARU
N
NAR
位
缩写
说明
15:
指定指令类型,还包含数据移位的信息。
指示直接/间接,0/1=直接/间接
6:
辅助寄存器更新码。
确定当前辅助寄存器是否增减、如何增减。
指示下个辅助寄存器,0/1=ARP内容不变/变化。
2:
下个辅助寄存器值。
000
无增减
001
减1
从当前AR值减1。
010
加1
向当前AR值加1。
011
保留
*BR0
100
减指标量,减法采用反向借位
从当前AR值减去AR0的值,减法采用反向进位传递。
101
减指标量
从当前AR值减去AR0的值。
110
加指标量
向当前AR值加上AR0的值。
111
加指标量,加法采用反向进位
向当前AR值加上AR0的值,加法采用反向进位传递。
图13使用间接寻址的指令结构
指定下个AR
AR2,#100h
AR3,#200h
*+,AR3
AR2为0x0101,AR3仍为0x0200
ARP为3,ARB为2
快速傅立叶变换
时域信号经过傅立叶变换可以分解为一系列余弦信号,这些余弦信号的幅值和相位就是傅立叶变换的结果,幅值随频率的分布称为频谱。
图14时域信号
图15频域分解
图16信号合成
图17幅频特性
图18相频特性
时间序列
的傅立叶变换为:
其中:
表示顺时钟旋转
圆周的单位矢量。
当N是2的幂次时,例如
时:
二进制正序
图19变换基
图20蝶形计算
1.下列程序执行后,ARP、ARB、AR2和AR3的值分别是什么?
累加器装入的值来自哪个地址?
LARAR2,#100h
LARAR3,#200h
MAR*,AR2
LACL*+,AR3
4.累加器和辅助寄存器操作
小数的表示
定点处理器不仅可以实现整数运算,还可以实现小数运算。
小数点的位置由程序员指定,在输入、输出时相应调整。
表116位无符号定点数
格式
0x0001
0x7FFF
0x8000
0xFFFF
Q0
1*20
(215-1)*20
215*20
(216-1)*20
整数
Q1
1*2-1
(215-1)*2-1
215*2-1
(216-1)*2-1
1位小数
……
Q15
1*2-15
(215-1)*2-15
215*2-15
(216-1)*2-15
15位小数
Q16
1*2-16
(215-1)*2-16
215*2-16
(216-1)*2-16
16位小数
表216位有符号定点数
-215*20
-1*20
-215*2-1
-1*2-1
-215*2-15
-1*2-15
在累加器中指定小数点的位置,比如Q16。
各种格式的16位定点数在进入累加器时经过移位可以实现对齐。
装载累加器
累加器、临时寄存器、输入/输出定标器在CPU结构简图中的位置,说明定标器实现移位功能。
介绍桶形移位器(BarrelShifter),与移位链相比较,说明其优越性。
图21不移位、不作符号扩展
图22左移2位、不作符号扩展
图23左移2位、作符号扩展
助记符
周期
编码
附加字
dma[,SHFT]
ind[,SHFT[,ARn]]
0001SHFTIAAAAAAA
dma,16
ind,16[,ARn]
01101010IAAAAAAA
将存储单元的16位数据左移0至16位装入累加器,按SXM确定是否符号扩展。
#lk[,SHFT]
101111111000SHFT
(lk)
将长立即数左移0至15位装入累加器,按SXM确定是否符号扩展。
LACT
ind[,ARn]
01101011IAAAAAAA
将存储单元的16位数据按TREG低4位指定左移0至15位装入累加器,按SXM确定是否符号扩展。
可用于实现装载浮点数。
01101001IAAAAAAA
将存储单元的16位数据装入累加器低16位,高16位补零。
10111001KKKKKKKK
将短立即数装入累加器低16位,高16位补零。
累加器高半字装载并圆整指令:
ZALR
01101000IAAAAAAA
将存储单元的16位数据装入累加器高16位,低16位为0x8000。
累加器内容表示Q16定点数,相当于加上0.5。
保存累加器
累加器低半字保存指令:
SACL
dma[,SHF]
ind[,SHF[,ARn]]
10010SHFIAAAAAAA
将累加器内容左移0至7位后取其低16位保存到存储单元。
移位时高位丢弃,低位补零。
累加器自身保持不变
累加器高半字保存指令:
SACH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 西工大