您好,欢迎访问三七文档
2021年5月17日3时5分2021年5月17日3时5分1(二)、存储器1、程序存储器(ROM)2、数据存储器(RAM)返回2021年5月17日3时5分2021年5月17日3时5分2一、物理结构(冯·诺依曼结构)89C51存储器程序存储器ROM数据存储器ROM片内程序存储器片外程序存储器片内数据存储器片外数据存储器返回2021年5月17日3时5分2021年5月17日3时5分31、程序存储器(ROM)地址从0000H开始。用于存放程序和表格常数。返回2021年5月17日3时5分2021年5月17日3时5分42、数据存储器(RAM)地址为00H~7FH。用于存放运算的中间结果、数据暂存以及数据缓冲等。这128B的RAM中有32个字节单元可指定为工作寄存器。片内还有21个特殊功能寄存器(SFR),它们同128字节RAM统一编址,地址为80H~FFH。后面详细介绍。返回2021年5月17日3时5分2021年5月17日3时5分5二、用户角度图2-489C51存储器配置2021年5月17日3时5分2021年5月17日3时5分6二、用户角度•1、片内、外统一编址的64K程序存储器地址空间。CPU访问片内、片外ROM指令用MOVC。返回2021年5月17日3时5分2021年5月17日3时5分7二、用户角度•2、64K的片外数据存储器地址空间。访问片外RAM指令用MOVX。返回2021年5月17日3时5分2021年5月17日3时5分8二、用户角度•3、256字节的片内数据存储器地址空间。访问片内RAM指令用MOV。上述三个存储空间地址是重叠的,89C51的指令系统采用不同的数据传送指令符号。返回2021年5月17日3时5分2021年5月17日3时5分9§2.3.2程序存储器地址空间•一、用途:•二、编址:•三、寻址方式:返回2021年5月17日3时5分2021年5月17日3时5分10一、用途:•用于存放编好的程序和表格常数。返回2021年5月17日3时5分2021年5月17日3时5分11二、编址:•容量为4KB。地址为0000H~0FFFH。•片外最多可扩至64KBROM/EPROM,地址为1000H~FFFFH。•片内外统一编址。返回2021年5月17日3时5分2021年5月17日3时5分12三、寻址方式:•1、当EA=“1”时:–在0000~0FFFH范围内执行片内ROM中的程序,当指令地址超过0FFFH后就自动转向片外ROM中取指令。2021年5月17日3时5分2021年5月17日3时5分13三、寻址方式:•2、当EA=”0”时:–片内ROM不起作用,CPU只能从片ROM/EPROM中取指令。可以从0000H开始寻址。2021年5月17日3时5分2021年5月17日3时5分14三、寻址方式:•3、片内ROM和片外ROM取指的速度相同。2021年5月17日3时5分2021年5月17日3时5分15三、寻址方式:•4、程序存储器的保留存储单元。如表2-2所示。2021年5月17日3时5分2021年5月17日3时5分16三、寻址方式:–(1)0000H~0002H三个单元:•用作上电复位后引导程序的存放单元。因为复位后PC的内容为0000H,CPU总是从0000H开始执行程序。将转移指令存放到这三个单元,程序就被引导到指定的程序存储器空间去执行。2021年5月17日3时5分2021年5月17日3时5分17三、寻址方式:–(2)0003H~002AH单元:•均分为五段,用作五个中断服务程序的入口。中断矢量地址表如表2-3所示。返回2021年5月17日3时5分2021年5月17日3时5分18§2.3.3数据存储器地址空间•一、用途:•二、片外RAM:•三、片内RAM:返回2021年5月17日3时5分2021年5月17日3时5分19一、用途:•用于存放运算的中间结果、数据暂存和缓冲、标志位等。2021年5月17日3时5分2021年5月17日3时5分20二、片外RAM:•地址:0000H~FFFFH•寻址:用MOVX指令2021年5月17日3时5分2021年5月17日3时5分21三、片内RAM:•片内数据存储器最大可寻址256个单元,它们又分为两部分:低128字节(00H~7FH)是真正的RAM区;高128字节(80H~FFH)为特殊功能寄存器(SFR)区。如图27所示。•高128字节和低128字节RAM中的配置及含义如图2-8和图2-9所示。2021年5月17日3时5分2021年5月17日3时5分22图2-8低128字节RAM区图2-9高128字节RAM区(SFR区,特殊功能寄存器区)2021年5月17日3时5分2021年5月17日3时5分231)低128字节RAM•9C51的32个工作寄存器与RAM安排在同一个队列空间里,统一编址并使用同样的寻址方式(直接寻址和间接寻址)。•00H~1FH地址安排为4组工作寄存器区,每组有8个工作寄存器(R0~R7),共占32个单元,见表2-4。通过对程序状态字PSW中RS1、RS0的设置,每组寄存器均可选作CPU的当前工作寄存器组。若程序中并不需要4组,那么其余可用作一般RAM单元。CPU复位后,选中第0组寄存器为当前的工作寄存器。•工作寄存器区后的16字节单元(20H~2FH),可用位寻址方式访问其各位。在89系列单片机的指令系统中,还包括许多位操作指令,这些位操作指令可直接对这128位寻址。这128位的位地址为00H~7FH,其位地址分布见图2-8。2021年5月17日3时5分2021年5月17日3时5分242)高128字节RAM——特殊功能寄存器(SFR)•89C51片内高128字节RAM中,有21个特殊功能寄存器(SFR),它们离散地分布在80H~FFH的RAM空间中。访问特殊功能寄存器只允许使用直接寻址方式。•这些特殊功能寄存器见图2-9。各SFR的名称及含义如表2-5所列。2021年5月17日3时5分2021年5月17日3时5分25(1)累加器ACC(E0H)•累加器ACC是89C51最常用、最忙碌的8位特殊功能寄存器,许多指令的操作数取自于ACC,许多运算中间结果也存放于ACC。在指令系统中用A作为累加器ACC的助记符。2021年5月17日3时5分2021年5月17日3时5分26(2)寄存器B(F0H)•在乘、除指令中,用到了8位寄存器B。乘法指令的两个操作数分别取自A和B,乘积存于B和A两个8位寄存器中。除法指令中,A中存放被除数,B中放除数,商存放于A,B中存放余数。•在其他指令中,B可作为一般通用寄存器或一个RAM单元使用。2021年5月17日3时5分2021年5月17日3时5分27(3)程序状态寄存器PSW(D0H)•PSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息,供程序查询或判别之用。各位的含义及其格式如表2-6所列。•PSW除有确定的字节地址(D0H)外,每一位均有位地址,见表2-6。2021年5月17日3时5分2021年5月17日3时5分28•CY(PSW.7):进位标志位。在执行加法(或减法)运算指令时,如果运算结果最高位(位7)向前有进位(或借位),则CY位由硬件自动置1;如果运算结果最高位无进位(或借位),则CY清0。CY也是89C51在进行位操作(布尔操作)时的位累加器,在指令中用C代替CY。•AC(PSW.6):半进位标志位,也称辅助进位标志。当执行加法(或减法)操作时,如果运算结果(和或差)的低半字节(位3)向高半字节有半进位(或借位),则AC位将被硬件自动置1;否则AC被自动清0。•F0(PSW.5):用户标志位。用户可以根据自己的需要对F0位赋予一定的含义,由用户置位或复位,以作为软件标志。2021年5月17日3时5分2021年5月17日3时5分29•RS0和RS1(PSW.3和PSW.4):工作寄存器组选择控制位。这两位的值可决定选择哪一组工作寄存器为当前工作寄存器组。通过用户用软件改变RS1和RS0值的组合,以切换当前选用的工作寄存器组。其组合关系如表2-7所列。•89C51上电复位后,RS1=RS0=0,CPU自动选择第0组为当前工作寄存器组。•根据需要,可利用传送指令对PSW整字节操作或用位操作指令改变RS1和RS0的状态,以切换当前工作寄存器组。这样的设置为程序中保护现场提供了方便。2021年5月17日3时5分2021年5月17日3时5分30•OV(PSW.2):溢出标志位。当进行补码运算时,如有溢出,即当运算结果超出-128~+127的范围时,OV位由硬件自动置1;无溢出时,OV=0。•PSW.1:为保留位。89C51未用,89C52为F1用户标志位。•P(PSW.0):奇偶校验标志位。每条指令执行完后,该位始终跟踪指示累加器A中1的个数。如结果A中有奇数个1,则置P=1;否则P=0。常用于校验串行通信中的数据传送是否出错。2021年5月17日3时5分2021年5月17日3时5分31(4)栈指针SP(81H)•堆栈指针SP为8位特殊功能寄存器,SP的内容可指向89C51片内00H~7FHRAM的任何单元。系统复位后,SP初始化为07H,即指向07H的RAM单元。2021年5月17日3时5分2021年5月17日3时5分32•89C51在片内RAM中专门开辟出来一个区域,数据的存取是以“后进先出”的结构方式处理的,好像冲锋枪压入子弹。这种数据结构方式对于处理中断,调用子程序都非常方便。•堆栈的操作有两种:一种叫数据压入(PUSH),另一种叫数据弹出(POP)。•89C51的堆栈指针SP是一个双向计数器。进栈时,SP内容自动增值,出栈时自动减值。存取信息必须按“后进先出”或“先进后出”的规则进行。•在图2-10中,假若有8个RAM单元,每个单元都在其右面编有地址,栈顶由堆栈指针SP自动管理。每次进行压入或弹出操作以后,堆栈指针便自动调整以保持指示堆栈顶部的位置。这些操作可用图2-10说明。图2-10堆栈的压入与弹出2021年5月17日3时5分2021年5月17日3时5分34(5)数据指针DPTR(83H,82H)•DPTR是一个16位的特殊功能寄存器,其高位字节寄存器用DPH表示(地址83H),低位字节寄存器用DPL表示(地址82H)。DPTR既可以作为一个16位寄存器来处理,也可以作为两个独立的8位寄存器DPH和DPL使用。•DPTR主要用于存放16位地址,以便对64KB片外RAM作间接寻址。2021年5月17日3时5分2021年5月17日3时5分35(6)I/O端口P0~P3(80H,90H,A0H,B0H)•P0~P3为4个8位特殊功能寄存器,分别是4个并行I/O端口的锁存器。它们都有字节地址,每一个口锁存器还有位地址,每一条I/O线均可独立用作输入或输出。•用作输出时,可以锁存数据;用作输入时,数据可以缓冲。•图2-11所示为各个SFR所在的字节地址位置。空格部分为未来设计新型芯片可定义的SFR位置。2021年5月17日3时5分2021年5月17日3时5分36图2-11特殊功能寄存器SFR的位置2021年5月17日3时5分2021年5月17日3时5分37§2.4CPU时序§2.4.1片内振荡器及时钟信号的产生返回§2.4.2机器周期和指令周期§2.4.3CPU取指、执行周期时序2021年5月17日3时5分2021年5月17日3时5分38§2.4.1片内时钟信号的产生•89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。电容器C1和C2通常取30pF左右,可稳定频率并对振荡频率有微调作用。振荡脉冲频率范围为fOSC=0~24MHz。•晶体振荡器的频率为fOSC,振荡信号从XTAL2端输入到片内的时钟发生器上,如图2-12所示。返回2021年5月17日3时5分2021年5月17日3时5分39图2-1289C51的片内振荡器及时钟发生器2021年5月17日3时5分2021年5月17日3时5分401.节拍与
本文标题:存储器组织结构
链接地址:https://www.777doc.com/doc-8405631 .html