单片机数据、地址、指令、控制总线结构

数据、地址、指令:之所以将这三者放在一同,是因为这三者的实质都是相同的──数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。

指令:具体可参考文章

由单片机芯片的设计者规则的一种数字,它与咱们常用的指令助记符有着严厉的一一对应联系,不能由单片机的开发者更改。

地址:

是寻觅单片机内部、外部的存储单元、输入输出口的根据,内部单元的地址值已由芯片设计者规则好,不行更改,外部的单元能由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的履行进程)。

通俗解释:

地址是存储单元的编号,如果把存储单元看成一排排的房子,地址就是房子的门牌号,c语言里地址即指针。

有点像澡堂里放衣服的箱子,需要拿衣服的时候,按照箱子的编号去拿衣服。但是有时候直接告诉你箱子号码,你过去,打开箱子,拿到了衣服——直接寻址;找到一个箱子,打开却发现是一把钥匙,钥匙上写着另一个箱子的号码。你拿着钥匙过去打开那个箱子拿出衣服来——间接寻址

8位单片机256的存储器,就像是一座256户16层16个单元,每个单元每层是1户,1户有八个房间的大楼,
存储器容量就是户数=256。
存储器地址就是门牌号,如5AH就是5单元10楼,H是十六进制的意思
每一户里的八个房间就是8个位
八个房间的名字就是位地址

单片机的几种寻址方式

此内容转自文章,如有侵权请联系作者删除
https://blog.csdn.net/baidu_37503452/article/details/83016841
寻址就是寻找指令中操作数或操作数所在的地址。所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。通常指源操作数的寻址方式。

MCS-51系列单片机寻址方式共有七种:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。

1、寄存器寻址

寄存器寻址是指操作数存放在某一寄存器中,指令中给出寄存器名,就能得到操作数。寄存器可以使用寄存器组R0~R7中某一个或其它寄存器(A,B,DPTR等)。

例如:

MOV A,R0 ;(R0 )→A

MOV P1,A ;(A)→P1

ADD A, R0 ;(A)+(R0) →A

在这里插入图片描述

2、直接寻址

在指令中直接给出操作数所在的存储单元的地址,称为直接寻址方式。在8051中,使用直接寻址方式可访问片内RAM的128个单元以及所有的特殊功能寄存器(SFR),对于特殊功能寄存器,既可以使用他们的地址,也可以使用他们的名字。

例如:

MOV A, 3AH ;(3AH) →A

又如:

MOV A, P1 ;(P1口) →A

也可写为:

MOV A, 90H ; 90H是P1口的地址。
在这里插入图片描述

在这里插入图片描述

3、立即数寻址

指令操作码后面紧跟的是一字节或两字节操作数,用 # 号表示,以区别直接地址。例如:

MOV A, #3AH ;3AH→A

MCS-51系列单片机有一条指令,要求操作码后面紧跟的是两个字节立即数,即

MOV DPTR, #DATA16

4、寄存器间接寻址

寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数.

例如: MOV R1,#30H ;(R1)← 立即数30H

MOV @R1,#0FH ;(30H)←立即数0FH

MOV A,@R1 ;(A)←((30H))=#0FH

注意:

“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。

例如,指令MOV A,@R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中,如图所示。

在这里插入图片描述

5、变址寻址 ,也称为: 基址寄存器+变址寄存器间接寻址

以16位的地址指针寄存器DPTR或 16位的PC寄存器为基址寄存器,以累加器 A 为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。用变址寻址方式只能访问程序存储器,访问的范围为64KB,当然,这种访问只能从ROM中读取数据而不能写入。

例如: MOVC A, @A+DPTR 😭(A)+ (DPTR))→A

设:A中已存有#30H,DPTR中已存有#1000H

MOVC A,@A+DPTR;(A)←((A)+(DPTR))

操作:将30H+1000H=1030H单元中的数放进累加器A

在这里插入图片描述

6、相对寻址

相对寻址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。这里所说得PC的当前值是执行完相对转移指令后的PC值,一般将相对转移指令操作码所在的地址称为源地址,转移后的地址称为目的地址。于是有:目的地址=源地址+2(相对转移指令字节数)+rel

51单片机指令系统中相对转移指令既有双字节的,也有三字节的。

在这里插入图片描述

7、位寻址

采用位寻址方式的指令,操作数是8位二进制数中的某一位。指令中给出的是位地址,是片内RAM某个单元中的某一位的地址。位地址在指令中用bit表示。

例: CLR P1.0 ;(P1.0) ← 0

SETB ACC.7 ;(ACC.7)← 1

CPL C 😭 C )← NOT( C )

位地址常用下列三种方式表示;

(1)直接使用位地址表示。对于20H2FH的16个单元共128位,位地址分布是00H7FH。

(2)对于特殊功能寄存器,可以直接用寄存器名字加位数表示,如PSW.3、ACC.5等。

(3)对于定义了位名字的特殊位,可以直接用其位名表示,例如:CY、AC等。

寻址方式及对应存储器空间
在这里插入图片描述

寻址方式中常用符号注释

(1) Rn(n=0~7) 当前选中的工作寄存器R0~R7 。

(2) Ri(i=0,1) 当前选中的工作寄存器组中,可作为间址寄存器

的两个工作寄存器R0、R1。

(3) #data 8位立即数。

(4) # data16 16位立即数。

(5) direct 8位片内RAM单元(包括SFR)的直接地址。

(6) addr11 11位目的地址,用于ACALL和AJMP指令中。

(7) addr16 16位目的地址,用于LCALL和LJMP指令中。

(8) rel 补码形成的8位地址偏移量。

(9) bit 片内直接寻址位地址。

(10)@ 间接寻址方式中,表示间址寄存器的符号。

(11)/ 位操作指令中,表示对该位先取反再参与操作,但

不影响该位原值。

(12)(X) 表示X中的内容。

(13)((X)) 由X指出的地址单元中的内容。

(14) → 指令操作流程,将箭头左边的内容送入箭头右边的单元。
首先,地址的作用只有一个,就是用来寻址

补充

51单片机的的片内寄存器都是可以字节寻址的。
字节地址就是用来寻址一个字节的内容,和位地址相对应,位地址就只能寻址一个位(bit)。在单片机指令中寻址任何一个字节都需要字节地址,寻址任何一个位都需要位地址。所谓的IP、IE不过是我们给这个寄存器取了另外一个名字而已。如:MOV
IP,#00H和
MOV B8H,#00H
这两条语句是一样的效果。另外,从这些寄存器的使用上来说,IP、IE等特殊功能寄存器既可以字节寻址也可以位寻址,是同样的效果。比如:SETBPX0;和MOV IP,#01H;是一样的,都是将IP的第0位即PX0置1。不同的是,字节寻址的时候是8位一起操作的,会对其它的位赋值,有时不想改变其它位的值,就用位寻址。
所以,字节地址是用来寻址字节的,位地址是用来寻址位的。就这样。另外,IP也好,IE也好,也都是寄存器,要访问它们也需要地址(访问字节用字节地址,访问位用位地址),不同的是它们用来对处理器进行配置,我们给它们取了一些特定的名字而已。

数据:

这是由微处理机处理的目标,在各种不相同的使用电路中各不相同,一般来说,被处理的数据可能有这么几种状况:

  • 地址(如MOV DPTR,#1000H),即地址1000H送入DPTR。
  • 方法字或操控字(如MOV TMOD,#3),3便是操控字。
  • 常数(如MOV TH0,#10H)10H即守时常数。
  • 实践输出值(如P1口接彩灯,要灯全亮,则履行指令:MOV P1,#0FFH,要灯全暗,则履行指令:MOV P1,#00H)这儿0FFH和00H都是实践输出值。又如用于LED的字形码,也是实践输出的值。

总线概述

计算机系统是以微处理器为核心的,各器件要与微处理器相连,且必须协调工作,所以在微处理机中引入了总线的概念,各器件共同享用总线,任何时候只能有一个器件发送数据(可以有多个器件同时接收数据) 。

计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。

单片机的三总线结构

51系列单片机具有完善的总线接口时序,可以扩展控制对象,其直接寻址能力达到64k( 2的16次方) 。在总线模式下,不同的对象共享总线,独立编址、分时复用总线,CPU 通过地址选择访问的对象,完成与各对象之间的信息传递。
在这里插入图片描述

数据总线

51单片机的数据总线为P0口,P0口为双向数据通道,CPU从P0 口送出和读回数据。

控制总线

51系列单片机的控制总线包括读控制信号P3.7和写控制信号P3.6等,二者分别作为总线模式下数据读和数据写的使能信号。

地址总线

单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。地址总线(Address Bus)是一种计算机总线,是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址。

51系列单片机的地址总线为16位。

为了节约芯片引脚,采用P0口复用方式,除了作为数据总线外,在ALE信号时序匹配下,通过外置的数据锁存器,在总线访问前半周期从P0口送出低8位地址,后半周期从P0 口送出8位数据。

高8位地址则通过P2口送出。

地址总线驱动:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不熬夜,早点睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值