版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。51单片机结构:
思维结构很重要:
由上图可知,51单片机的存储器分为俩大部分:程序存储器ROM和数据存储器RAM,这一点有别与计算机
程序存储器ROM:
1、程序存储器ROM顾名思义,存放程序的地方,程序指令指导单片机完成设定的功能
2、51单片机专门设置一个16位的PC,用于指示下一时刻CPU将要执行的程序指令在ROM中的位置,由于PC指针长度位16位,所以单片机的程序存储器ROM空间大小为2^16 = 64Kb,从0000~FFFFH
3、ROM还可以细分为片内ROM和片外ROM
片内ROM:
8051片内有4KB ROM,地址范围从0000H~0FFFH
片外ROM:
片外可扩展,一般从1000H~FFFFH,64KB
PS:那么问题来了,51单片机是如何区分是片内ROM还是片外ROM呢?
片内ROM和片外ROM的区分:
在单片机既有片内ROM又有片外ROM时,会产生一部分重复的地址范围,
为了解决区分片内和片外ROM的问题,51单片机设置了一根控制线EA(低电平有效),所以
EA = 0 => 有效 => 访问片内存储器
EA = 1 => 无效 => 片内存储器被忽略
本质的原理:
就是当PC的值大于了某个值时将访问外部存储器,PC的值小于了某个值时将访问内部存储器。这个值由存储器容量的大小绝定,在8051单片机中,片内ROM = 4KB,所以当PC小于0FFFH时,访问片内ROM。
具体的执行过程:
当EA = 0,毫不犹豫直接从0000H开始访问片外ROM
当EA = 1,PC从0000H开始访问片内ROM,当PC大于0FFFH时,转向访问片外ROM,如图:
程序存储器ROM中的7个特殊地址:
即7个外部中断的入口地址,每个地址相隔8个地址单元,存放终端服务程序显然不够,所以一般在这7个特殊地址中存放跳转指令,跳转到相应的中断服务程序。
数据存储器RAM:
1、RAM存储器一般存放单片机运行期间所需要的的数据和临时生成的数据,需要能够快速的读写。掉电丢失。
2、同ROM相同,RAM也分为片内RAM