关于单片机的地址总线和数据总线
1. 一般来说内存容量是指地址总线还是数据总线
一般都是看地址总线来判断寻址能力,数据总线是宽度,寻址是按字的地址,也就是字节的首地址,如下图
2. 单片机所说的8位,16位,32位指的是什么,是地址总线的长度还是数据总线
在单片机中,通常所说的"8位","16位","32位"指的是数据总线的宽度,即一次可以传输的数据位数。这决定了单片机一次可以处理的数据量大小。例如,一个"8位"单片机指的是其数据总线宽度为8位,可以一次传输8位的数据;而一个"16位"单片机指的是其数据总线宽度为16位,可以一次传输16位的数据,依此类推。地址总线的宽度则用来指定内存地址,与数据总线的宽度是不同的概念。一次性处理的数据总线的长度叫做字长。
3. 8位单片机的512KB地址和16位单片机的512KB地址有什么区别 (重点关注)
所谓的空间是寻址空间 8位单片机只能运行8位程序,32位的单片机只能运行32位的程序,64位的单片机只能运行64位程序
在这两种单片机中,"512KB地址"指的是单片机可以寻址的内存空间大小,。在8位单片机和16位单片机中,"512KB地址"指的都是512千字节的内存地址空间。只是16位单片机不能寻址到每个字节。
4. 数据总线的长度叫字长吗
是的,数据总线的宽度通常被称为"字长"。字长指的是一次可以传输的数据位数,也就是数据总线的宽度。根据不同的计算机架构和处理器,字长可以是8位、16位、32位、64位等不同的长度。字长的大小直接影响了计算机的数据处理能力和性能。
8051程序存储器和数据存储器
在8051单片机中,程序存储器和数据存储器是两种不同的存储器类型:
-
程序存储器:在8051单片机中,程序存储器通常指的是存储程序指令的存储器,也称为代码存储器或ROM(只读存储器)。程序存储器用于存储8051单片机的程序代码,包括指令和常量数据。在8051单片机中,程序存储器通常是内置的ROM,用于存储程序代码,而且通常不可修改。
-
数据存储器:数据存储器用于存储程序执行过程中产生的数据,包括变量、中间结果和用户数据。在8051单片机中,数据存储器通常指的是RAM(随机存储器),用于存储程序执行过程中的数据。8051单片机通常包含内置的RAM用于存储数据,而且RAM中的数据可以被程序读取、写入和修改。
总的来说,程序存储器用于存储程序代码,而数据存储器用于存储程序执行过程中的数据。在8051单片机中,程序存储器通常是ROM,数据存储器通常是RAM。这两种存储器在单片机的运行过程中起着不同的作用。
内存一个地址对应一个字节还是一个存储单元?(最困惑的问题)
https://www.zhihu.com/question/421675295
由于不同机器对于字长的定义不一致(可能是16bit,32bit或者其他),但是对于字节的长度都定义为8bit。所以实际上很少使用连续的字地址对字进行编码,通常会使用连续的字节地址对字节进行编码,使用该字的低位(或高位)的字节地址作为字地址
经典结构体字节计算题
先看下面定义的两个结构体:
struct { char a; short b; char c; }S1;
struct { char a; char b; short c; }S2;
分别用程序测试得出 sizeof(S1)=6 , sizeof(S2)=4。
注意: 为什么 仅仅改变了结构体成员的顺序,结果不一样?
解:
(1)首先找出成员变量中最大的字节,可见对于 S1 和 S2 最大是 short ,占 2 个字节;
(2)所以以后都已2个字节为准,也就是说最多只要2个字节,其他填充占位,注意下图一个格子表示一个字节;
(3)所以先画2个格子,以后看成员顺序,逐次增加,每次一2为增加基准
对于 S1 来说,顺序是 char->short->char :
所以对于 S1 结构体大小为 2*3=6,至于为什么第二个 char,多的那个字节不丢到,就是遵循第三个原则,就是结构体大小结果要为成员中最大字节的整数倍。
S1=2*3=6
对于 S2 嘛,也画个图,但是顺序是 char->char->short:
S2=2*2=4
** 进一步证明了只能按字寻址
地址不是连续的,一般取字地址位字节地址的高位或者低位地址,看大端还是小端
实例
8051程序存储器和数据存储器大小怎么算的
在 8051 微控制器中,程序存储器和数据存储器的大小是固定的,不需要额外计算。以下是 8051 微控制器的存储器大小:
-
程序存储器(Code Memory):8051 微控制器的程序存储器大小为 4KB(4096 字节),可以存储程序的指令代码。
-
数据存储器(Data Memory):8051 微控制器的数据存储器分为两部分,分别是内部 RAM 和特殊功能寄存器(SFR)。内部 RAM 大小为 128 字节,用于存储程序运行时的数据;特殊功能寄存器用于控制各种功能和外设。
因此,8051 微控制器的程序存储器和数据存储器的大小是固定的,分别为 4KB 的程序存储器和 128 字节的数据存储器。
8051 微控制器的程序存储器大小为 4KB,这是因为 8051 微控制器使用的是 8位的存储单元(每个存储单元能够存储一个字节),并且程序存储器的地址总线宽度为 12 位。
计算程序存储器大小的方法如下:
-
8051 微控制器的地址总线宽度为 12 位,即能够寻址 $2^{12}$ 个地址。
-
每个地址可以访问一个字节的数据,因为 8051 是 8 位的微控制器。
-
因此,程序存储器的大小为 $2^{12}$ 字节,即 4KB($2^{12}$ 字节 = 4KB)。
这样,通过地址总线宽度和存储单元的位数,我们可以计算出 8051 微控制器的程序存储器大小为 4KB。