2.4AT89C51存贮器结构与单片机的存储器相关的几个概念:数据存储器——RAM(RandomAccessMemory);程序存储器——ROM(ReadOnlyMemory);闪速存储器——FlashMemory;EPROM——(UV)ErazibleProgrammableROM;EEPROM/E2PROM——ElectricalErasableProgrammableROM;静态存储器SRAM——StaticRAM(动态存储器DRAM——DynamicRAM);按字节寻址:每个字节(8个位)占一个地址;按位寻址:有的存储器每一个位就有一个地址。MCS-51的存储器结构:1、从物理上分四个区:A、片内数据存储器(基本型:128字节;增强型256字节);B、片外数据存储器(可扩展到64K);C、片内程序存储器(51:4K;52:8K;31:0K);D、片外程序存储器(可扩展到64K)。2、从逻辑上分三个地址空间:A、片内外64K统一的程序存储器;B、片内128/256字节数据存储器;C、片外64K数据存储器。1.程序存贮器程序存贮器的作用是:主要存放单片机的系统程序、应用程序和表格。首先把我们用高级语言或汇编语言编写的程序由编译程序变换成二进制数或十六进制数(HEX),再用相应的编程器写入到程序存贮器中,用以控制单片机的工作。8031内部无程序存贮器,因此在使用这种单片机时必须在片外扩展程序存贮器;AT89C51内部有4KB的程序存贮器,可以用编程器给其写入程序,若其不够用时要进行外扩,外扩最多为64KB。程序存贮器的使用应注意以下几点:(1)EA接高电平时程序将从片内程序存贮器开始执行,当PC值超过片内ROM容量时自动转向片外程序存贮器空间执行程序。EA接低电平时,单片机只能执行片外程序存贮器中的程序。AT89C51的EA应接高电平。(2)程序存贮器的某些单元被固定用于存放中断源的中断服务程序的入口地址。MCS-51单片机复位后,程序存贮器的内容是0000H,故所有的单片机系统必须从0000H单元开始取指令,执行程序。程序存贮器中的0000H地址是系统程序的启动地址,一般在此单元中存放一条绝对跳转指令,跳向用户的主程序的起始地址。另外还有5个单元具有特殊用途,它们是5个中断源的中断服务程序的入口地址,见表:通常在这些入口处都放一条绝对跳转指令,其目的是由于两个中断入口间隔仅有8个单元,存放中断服务程序一般是不够的。程序存贮器分布图(89C51为例)程序存储器64K,地址指针为16位的程序计数器PC。EA=1,从内部ROM的4K开始访问,PC值大于0FFFH(4K)时,自动转向外部程序存储器空间。EA=0,忽略内部ROM的4K空间,CPU在外部程序存储器空间中取指令。低4K的程序存储器(某些位8K或16K),可以在片内也可以在片外,到底访问内部或外部ROM,由引脚EA的电平决定。PSEN外部程序存储器读选通信号,仅当CPU访问外部ROM时,由单片机输出负脉冲。2.内部数据存贮器AT89C51内部有128个(增强型的256个)字节的RAM,其字节地址为00H~7FH,作为用户的数据寄存器和数据缓冲器。片内RAM的结构如图所示。地址00H~1FH的32个单元是4组通用工作寄存器区,每个区含有8个8位的寄存器,其编号为R0~R7。用户可以通过指令来改变PSW中的RS0和RS1这两位来切换当前的工作寄存器区,在中断中为实现工作时现场内容保护提供了极大的方便。地址为20H~2FH的16个单元可以进行共128位的位寻址(00H—7FH),它们是一位位处理机的存贮器空间。单元中的每一位都有自己的位地址,这16个单元也可以进行字节寻址。地址为30H~7FH的单元为堆栈和数据缓冲区,只能进行字节寻址。A、工作寄存器区中断源入口地址外部中断0(INT0)0003H定时器0(T0)000BH外部中断1(INT1)0013H定时器1(T1)001BH串行口0023H片内程序存储器片外程序存储器0000H0000H4K字节片内片外0FFFH0FFFH片外1000H0FFFFHFFH00H1FH20H2FH30H7FH工作寄存器区位寻址区堆栈和数据缓冲区52子系列才有的RAM区80H128字节地址为00H~1FH的32个单元是4组通用工作寄存器区,每个区含有8个8位的寄存器,其编号为R0~R7。用户可以通过指令来改变PSW中的RS0和RS1这两位来切换当前的工作寄存器区,在中断中为实现工作时现场内容保护提供了极大的方便。如果不需要4个工作寄存器区,那么这个区域中多余单元可以作为一般数据缓冲器使用。B、位寻址区MCS-51具有一个位处理机,指令系统中有一个位处理指令的子集,这些指令处理的是一位二进制数。共有211个可寻址位,内部RAM中由128个,特殊功能寄存器区中有83个。地址为20H~2FH的16个单元可以进行共128位的位寻址,它们是一位位处理机的存贮器空间。单元中的每一位都有自己的位地址,这16个单元也可以进行字节寻址。C、堆栈和数据缓冲区地址为30H~7FH的单元为堆栈和数据缓冲区区,只能进行字节寻址。堆栈原则上可以设在内部RAM(00H~7FH或00H~FFH)的任意区域,但00H~1FH和20H~2FH有别的用途,堆栈一般设在30H~FFH.区间。3.特殊功能寄存器(SFR)FFH00H1FH20H2FH30H7FH工作寄存器区位寻址区堆栈和数据缓冲区52子系列才有的RAM区80H128字节R0R1R2R3R4R5R6R700H01H02H03H04H05H06H07H工作寄存器区0工作寄存器区108H0FH工作寄存器区210H17H工作寄存器区318H1FHFFH00H1FH20H2FH30H7FH工作寄存器区位寻址区堆栈和数据缓冲区52子系列才有的RAM区80H128字节7F7E7D7C7B7A7978位地址47464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A0908070605040302010028H27H26H25H24H23H22H21H20H2FH单元地址128个可按位寻址的位C、片外64K数据存储器B、片内数据存储器A、片内外64K统一的程序存储器2、从逻辑上分三个地址空间:D、片外程序存储器(可扩展到64K)C、片内程序存储器(51:4K;52:8K;31:0K)B、片外数据存储器(可扩展到64K)A、片内数据存储器(基本型:128字节;增强型256字节)1、从物理上分四个区: