单片机存储器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机存储器
1. MCS-51单片机的存贮器有程序存贮器ROM和数据存贮器RAM 之分。
由于外部程序存贮器和外部数据存贮器的地址可以重迭,所以我们说MCS-51单片机的寻址空间为2×64KB=128KB ,不过要注意:“片外程序存贮器和片外数据存贮器,根据实际需要也可以合并成一个统一的地址空间,此时最大寻址空间为64KB而不是128KB了。
”
对外部程序存贮器的写操作是由编程器完成,而对其读操作则是由读选通控制信号/PSEN( Program Store Enable)再配以读操作指令MOVC来完成。
也就是由MOVC指令产生信号/PSEN,从而对片外程序存储器进行读操作。
对外部数据存贮器的写操作是由写选通控制信号/WR再配以指令MOVX来完成,而对其读操作则是由读选通控制信号/RD再配以MOVX 来完成。
也就是由指令MOVX指令产生/WR或/RD信号,从而对片外RAM进行写或读操作。
2. 程序存贮器ROM
MCS-51单片机中设有一个片内、片外程序存贮器选择控制信号/EA(External Access)。
MCS-51单片
机程序存储器
示意图
如果使/EA=1,则片内、片外程序存贮器ROM统一编址为64KB。
系统复位后,将先执行片内存贮器ROM中的程序。
当PC中内容超过OFFFH或1FFFH时,将自动转到执行片外程序存贮器中的程序。
片内程序存储器空间为0000H~0FFFH或0000H~1FFFH,片外程序存储器空间的地址不能与片内程序存储器空间地址相重迭。
至于具体执行哪里的程序完全取决于PC值。
如果使/EA=0,则只执行片外程序存贮器的程序,其地址空间为0000H~FFFFH 。
换言之,如果片内无程序存贮器ROM或不想访问片内程序存贮器ROM,则必须使/EA=0 。
注意:当系统复位时PC内容为0000H ,这意味着程序的执行总要从0000H单元开始,但用户程序又不能从0000H开始存放。
这是因为在程序存储器中有7个非常特殊的、固定的单元,这些单元所存放的内容是有特定要求的。
0000H单元:存放一条跳转指令,从而使用户程序自跳转地址处开始存放。
0003H单元:存放外部中断0的中断服务程序的入口地址。
(/INT0)000BH单元:存放定时器/计数器0溢出的中断服务程序的入口地址。
(T0)
0013H单元:存放外部中断1的中断服务程序的入口地址。
(/INT1)001BH单元:存放定时器/计数器1溢出的中断服务程序的入口地址。
(T1)
0023H单元:存放串行口中断服务程序的入口地址。
(串口)
002BH单元:存放定时器/ 计数器2溢出的中断服务程序的入口地
址。
(T2)
以上这些特殊单元,不允许被用户程序内容所占据!
3. 数据存贮器RAM和特殊功能寄存器SFR
数据存贮器RAM可分为片外、片内两个空间。
①片外数据存贮器RAM如图所示。
片外数据存贮器示意图
MOVX指令是专门访问片外RAM的,由MOVX指令自动产生片外RAM 写选通信号/WR或者读选通信号/RD 。
②片内数据存贮器RAM可分51子系列、52子系列两种情况。
MCS-51单片机51子系列的片内RAM为128字节,而52子系列的片内RAM为256字节。
片内RAM被分为3个区。
特殊功能寄存器SFR虽然是片内寄存器,但不属于片内RAM,只不过是与片内RAM统一编址罢了,其地址位于80H~FFH之间。
片内数据存贮器RAM示意图
工作寄存器区00H~1FH
工作寄存器又称通用寄存器,是供用户编程时、临时寄存8位信息的。
本区分四组,每组包括RO~R7 8个通用寄存器。
任一时刻只有其中一组被选中。
复位时自动选中0组,但用户可通过修改PSW.4、PSW.3对组别进行选择。
这给用户编程提供了便利,尤其是在调用子程序以及进行中断处理时,只需换一下寄存器组便可达到不破坏主程序所用寄存器内容的目的,不过要注意返回时应复原PSW,从而使主程序原来使用的寄存器组得以恢复。
例如:CLR PSW.4 ;RS1=0
SETB PSW.3 ;RSO1=1
MOV RO,#28H ;将立即数28H送入第1组的RO单元即片内RAM 08H中
位寻址区20H~2FH :位寻址区的每一位都被赋予了一个
位地址,见下表:
正因为有位地址,所以本区的16个单元既可按字节寻址、又可按位寻址,而且每一位都有两种表示方式,例如25H.2与2AH等效;28H.0与40H等效,也就是说汇编程序对这两种位的表示方式都可接受。
通常可将程序中所要用到的状态标志、位控制变量等放于位寻址区。
例如:SETB 07H 或SETB 20H.7 ;
将片内RAM 20H单元的D7位置1,而该单元中其它各位则保持不变
用户区30H~7FH或30H~FFH
用户RAM区又称数据缓冲区,它是用户便签式数据存储区。
对于51子系列,共有从30H~7FH 80个字节单元;对于52子系列,共有从30H~FFH 208个字节单元。
一般堆栈设于此区。
当堆栈指针SP 的内容被赋予本区的某一地址时,就应该留出足够的字节单元作为堆栈,以免堆栈操作与非堆栈数据发生冲突。
工作寄存器区、位寻址区也可以作为一般的用户区来使用。
最后要特别注意:片内RAM从00H~7FH字节单元既可直接寻址、又可间接寻址;片内RAM从80H~FFH字节单元只能间接寻址。
③特殊功能寄存器SFR(Special Function Register)
特殊功能寄存器又称专用寄存器,它包括除PC之外的所有专用寄存器,如I/O口锁存器,定时器、串行口、中断等的控制和状态寄存器,累加器ACC,B寄存器,堆栈指针SP,数据指针DPTR,程序状态字PSW等。
SFR不属于片内RAM,但要与片内RAM统一编址,且其地址空间为80H~FFH 。
在80H~FFH这128个字节单元的SFR 区域中,仅有21个(51子系列)或26个(52子系列)字节单元属于SFR,其余字节单元是空的,未作定义的。
这是为今后MCS-51系列新型单片机保留的字节空间,所以用户就不要访问空字节了。
专用寄存器按字节直接寻址,尤其要注意其中还有12个专
用寄存器具有位地址,因此这12个SFR不仅可按字节直接寻址,而且还可按位直接寻址。
它们分别是:
P0 P1 P2 P3
TCON SCON T2CON
IE IP
PSW
A
B
能位寻址的上述12个专用寄存器,其地址都可被8整除,且其某位的位地址等于该专用寄存器的字节单元地址加上位数0~7 。
下表是各专用寄存器的表示符号、名称、地址、以及可位寻址字节单元的位地址与位名称。
注意,带*号的只有52子系列才具有。
小结:位地址的表示方式有四种,即:位地址
位名称
字节地址.位数
SFR名.位数。