AT89S52单片机之硬件存储结构

机器语言

机器语言是机器指令的集合,机器指令是啥?机器指令展开来讲就是一台机器可以正确执行的命令,具体点就是一串二进制数字,机器(计算机、单片机)只能看懂这玩意,然后把二进制数转化为一串高地电平,机器附带的器件受到驱动,开始运算。比如下图,你给IN=0,灯就亮了。在这里插入图片描述

汇编语言

就是汇编指令的集合。汇编指令和机器指令的区别:汇编指令是机器指令便于记忆的书写方式。
例如,机器指令100010011101100表示把寄存器BX的内容送到AX中,汇编指令就是mox ax,bx。
在这里插入图片描述
用汇编指令写程序,还需要编译器。因为计算机、单片机只能读懂、执行机器语言,所以就需要一个将汇编指令转换成机器指令的玩意,编译器。在这里插入图片描述

存储器

想让单片机的CPU工作,就必须给它提供指令和数据,指令和数据在存储器中工作,就是内存。比如下文说的数据存储器、程序存储器,就是用来存数据和指令的。
存储单元
存储器被划分为若干个存储单元,每个单元是一个字节,单位是Byte(通常用B表示Byte),同时1Byte=8bit,通俗来说就是一个字节有8个二进制数,比如说数据存储器空间就有一部分是位寻址区域,单位都是bit,要用位操作。

C51单片机的内部RAM就是128B,存储单元从0开始编号,所以最大就是127。

AT89S52单片机存储器结构

AT89S52单片机存储器采用哈佛结构,将程序存储器和数据存储器分开。在这里插入图片描述

1.程序存储器空间

片内和片外两部分。
片内4KB Flash ,编程和擦除完全是电气实现。可用通用编程器对其编程,也可在线编程。
当片内4KB Flash 存储器不够用时,可片外扩展,最多可扩展至64KB程序存储器。

2.数据存储器空间

片内与片外两部分。
片内有256B RAM。
片内RAM 不够用时,在片外可扩展至64KB RAM 。

3.特殊功能寄存器SFR

4.位地址空间

共有219个可寻址位,构成了位地址空间。位于片RAM区字节地址20H~2FH(共128位)和特殊功能寄存器区(片内RAM区字节地址80H~FFH区间内,共定义了91个可寻址位)。
CPU对存储器的读写
上面讲到,存储器被划分为很多存储单元,又把这些单元编号,目的是啥?不就是把他们看成一个个地址吗。就像一条街,每个房子都有门牌号。
你派张三去这条街找人,先要知道门牌号。CPU从内存中读数据也是这样,首先要指定存储单元的地址。
另外。在单片机中,不只有存储器这一个器件,比如,I/O、串行口、定时器等。因此CPU在读写数据的时候还要注意,操作对象,操作行为(读或写)。
在这里插入图片描述
那么CPU是通过什么将地址、数据、控制信息传到存储器芯片里的呢?计算机能处理、传输的信息都是电信号,所以是导线传递。计算机中专门有连接CPU和其他芯片的导线,称为总线。

总线(Bus)

AT82S52单片机有三条总线,地址总线、数据总线和控制总线。在这里插入图片描述
地址总线16位,数据总线是8位。在这里插入图片描述

1.地址总线

CPU通过地址总线来指定存储器单元,因此地址总线上能传送多少个不同的信号,CPU就能对多少个存储单元进行寻址。一根导线可以传送的稳定状态就是0和1,16根导线可以传送的16位二进制数据 2 16 2^{16} 216
下图展示了一个具有10根地址线的CPU内存发出地址信息11(0000001011)时10根地址线上传送的二进制信息。
在这里插入图片描述

2.数据总线

数据总线的宽度决定了CPU与外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据(一个字节),16根数据总线一次可以传送两个字节。AT89S52的数据总线为8位,因此是8位单片机,其中,位数指CPU处理的数据的宽度,也就是数据总线的根数。
下图分别展示了8位、16位单片机数据总线上传送数据的情况(向内存中写入数据89D8H)。
在这里插入图片描述
在这里插入图片描述

3.控制总线

在这里插入图片描述

AT89S52补充。

在这里插入图片描述
还记得这张图吗?地址总线是16位,数据总线是8位,它们是怎么来的呢?
首先说地址总线,当AT89S52访问外部存储器及I/O口时,P2口作为高8位地址总线使用,输出高8位地址;当单片机访问外部程序存储器或外部数据存储器时,ALE的负跳变将单片机P0口先发出的低8位地址锁存在P0口外接的地址锁存器。数据总线,ALE信号锁存低8位地址后,P0口再作为8位数据总线使用。

数据存储器空间再说

片内
AT89S52的片内数据存储器(RAM)共有256个单元,字节地址为00H~FFH。地址为80H~FFH为特殊功能寄存器区,与片内的高128B的RAM单元统一编址。在这里插入图片描述
高128B的RAM单元地址与特殊功能寄存器区的字节地址重合,。它们的地址区域是相同的,那么通过地址总线指定地址的时候不会出现重叠吗?不会的,虽然区域地址一样,但是这两个区域的寻址方式是不一样的。
片外
当片内256B的RAM不够用时,需外扩,最多可外扩64KB的RAM。

程序存储器空间再说

片内为8KB的 Flash ,地址为0000H~1FFFH。16位地址线,可外扩的程序存储器空间最大为64KB,地址为0000H~FFFFH。
注意:访问片内的还是片外的程序存储器,由EA引脚电平确定。
EA
=1时,CPU从片内0000H开始取指令,当PC值没有超出0FFFH时,只访问片内Flash 存储器,当PC值超出1FFFH自动转向读片外程序存储器空间2000H~FFFFH 内的程序。
EA*=0时,只能执行片外程序存储器(0000H~FFFFH)中的程序。不理会片内4KB Flash 存储器。

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值