AT89S52单片机存储器结构
AT89S52单片机的存储器结构共分片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器4个部分。
1.程序存储器
设计人员编写的程序存放在微处理器的程序存储器中。
AT89S52具有64KB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息,程序存储器的结构如图1所示。
图1 AT89S52程序存储器的结构
AT89S52片内片外的程序存储器在统一逻辑空间中,地址从0000H~FFFFH,共有64K字节范围。引脚接高电平时,程序从片内程序存储器0000H开始执行,即访问片内存储器。当PC值超出片内ROM容量时,会自动转向片外程序存储器空间执行。引脚接低电平时,迫使系统全部执行片外程序存储器0000H开始存放的程序。
2.数据存储器
AT89S52 有256 字节片内数据存储器。地址为00H~FFH。这256个单元共分为两部分。其一是地址从00H~7FH单元(共128个字节)为用户数据RAM。从80H~FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。高128 字节与特殊功能寄存器重叠,也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
在00H~1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0~R7来命名,称这些寄存器为通用寄存器。这四块中的寄存器都称为R0~R7,利用PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。
内部数据存储器的20H—2FH单元为位寻址区,可作为一般单元用字节寻址,也可对它们的位进行寻址,位寻址区地址如表1所示
表1 RAM位寻址区地址表
3. 中断服务程序的入口地址
在程序存储区中,为中断服务程序保存了一段中断服务程序的入口地址:其中一组特殊单元是0003H—0032H,各个单元各有用途,它们被分为六段,每个段8个字节,专门留给中断服务程序使用,被称为中断矢量区。AT89S52共有8个中断源,6个中断矢量,它们的定义如下表2所,
表2 中断服务程序的入口地址
4.特殊功能寄存器SFR(Special? Function Register)
特殊功能寄存器是指有特殊用途的寄存器集合,也称为专用寄存器,本质上是一些具有特殊功能的片内RAM单元,反映单片机的运行状态,很多功能也通过特殊功能寄存器来定义和控制程序的执行。
AT89S52单片机内部高128(80~FFH)地址分配给特殊功能寄存器。这个地址空间和芯片内数据存储器的高128字节地址完全重叠,但两者在物理硬件上是完全独立的,用寻址方式来区分这个完全重叠的地址空间。使用直接寻址方式访问这个地址空间时,访问的是特殊功能寄存器;使用间接寻址方式访问这个地址空间时,访问的是数据存储器。
AT89S52有32个特殊功能寄存器,它们被离散地分布在内部RAM的80H~FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。
5.几个注意问题
1)地址的重叠性
单片机中的所有存储器都必须分配地址,可以寻址的地址范围为64KB,数据存储器与程序存储器都占用相同的地址。
程序存储器中片内片外0000H~0FFFFH低4KB地址完全重叠,但是我们使用引脚进行区分:=0时,选择片外,=1时,选择片内,这样就完全区分开来了。
数据存储器中片内外0000H~00FFH的256个单元地址完全重叠,片内外数据的访问采用不同指令来区分:MOV指令访问片内数据存储器,MOVX指令访问片外数据存储器。
2)程序存储器(ROM)与数据存储器(RAM)的区分
程序存储器(ROM)与数据存储器(RAM)的区分在使用上是严格区分的,程序存储器只能放置程序指令及常数表格,对程序存储器中数据的访问只可以使用MOVC指令。而数据存储器则存放数据,片内外的操作指令分别用MOV,MOVX进行操作。
3)位地址空间的区域划分
片内RAM中的20H~2FH的128位,以及SFR中的位地址,这些位寻址单元与位指令集构成了位处理器系统。
编辑:admin 最后修改时间:2020-04-06