您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 12单片机的内部结果存储器
1.4单片机的内部结构-----存储器单片机的存储器分两种:程序存储器和数据存储器。程序存储器:一种用于存放已编写好的程序及数据表格,常用类型ROM、EPROM、E2PROM、Flash等,89C51中采用的就是Flash,其存储容量为4KB。数据存储器:一种用于存放输入、输出数据、中间运算结果,常用类型RAM,89C51中的数据存储器较小,存储容量仅128B。若存储器空间不够用,可以外部扩展。单片机存储器采用哈佛结构,它将程序存储器和数据存储器分开编址,各自有自己的寻址方式。存储器概述:89C51单片机的存储器配置在物理结构上有4个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。从用户的使用角度,即逻辑上,有3个存储器地址空间:片内、外统一编址的程序存储器地址空间64KB、片内数据存储器地址空间256B片外数据存储器地址空间64KB在访问3个不同的逻辑空间时,应采用不同形式的指令,以产生不同的内部控制信号,用来选择所需的逻辑空间。存储器概述:12345678910111213142827262524232221201918171615EPROM276412345678910111213142827262524232221201918171615EPROM27641234567891011121314151617181920403938373635343332313029282726252424222112345678910111213142827262524232221201918171615RAM626412345678910111213142827262524232221201918171615RAM626480318751805189C5189C51片内RAM片内ROM片内数据存储器地址空间256B4KB片外数据存储器地址空间64KB程序存储器地址空间64KB89C51的存储结构三大逻辑存储空间H00000080HRAM内部00FFH特殊功能寄存器0FFFFH)(外部K64RAM数据存储器H00000FFFHH0000程序存储器1EA内部ROM=FFFFH1000H外部ROM0FFFHH00000EA外部ROM=89C51的存储结构007FH引脚接高电平时,CPU可访问内部和外部ROM,且程序自片内程序存储器开始执行,PC值超出片内ROM容量时,会自动转向片外程序存储器中的程序。中断入口地址程序存储器0000H0001H0002H(PC)中断5中断4中断3中断2中断10003H000BH0013H001BH0023H002BH外部中断0定时器0中断外部中断1定时器1中断串行口中断8位...0FFFH0FFEH内部外部0000HFFFFH(64K)0000H0FFFH(4K)EA=1EA=0程序存储器资源分布中断入口地址引脚接高电平时,CPU可访问内部和外部ROM,且程序自片内程序存储器开始执行,PC值超出片内ROM容量时,会自动转向片外程序存储器中的程序。程序存储器0000HFFFFH(64K)内部外部数据存储器00HFFH7FH80H(高128B)(低128B)RAM专用寄存器0组R0R7R0R7R0R7R0R71组2组3组工作寄存器区可位寻址区20H2FH7F78070030H7FH数据缓冲区/堆栈区内部RAM存储器18H1FH10H17H08H0FH00H07HRS1RS0000组011组102组013组内部数据存储器结构低128B的RAM(2)可位寻址区。20H~2FH的16个字节存储区为可位寻址区,每个字节有8位,共有128位,每一位都有一个对应的位地址。8051单片机访问存储器通常以字节为单位,可位寻址是指可以指定访问某一个位。位寻址区主要为执行位操作指令时提供位地址定义,其位地址定义如表1.4所示。表1.4位寻址区的位地址定义单元地址位地址2FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75DH74H73H72H71H70H……21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05DH04H03H02H01H00H1.4.1内部数据存储器结构低128B的RAM3.堆栈或数据缓冲区(30H~7FH)此区间共80个单元,只可按字节寻址,而不可位寻址。程序运行期间,会产生一些运算结果等中间数据,这些数据可在此区间暂时保存。另外,若程序运行过程中遇到调用子程序或响应中断,往往需要保护现场,将有关的数据压入堆栈,待子程序返回或中断响应结束时再将入栈数据弹出,此时,该区间可作堆栈使用。单片机复位后,堆栈指针SP的值为07H,即默认此区间的08H为栈底。考虑到00H~2FH通常留作工作寄存器区和位寻址区,因此一般将栈底设置在30H或更高地址单元。1.4.1内部数据存储器结构低128B的RAM高128B的RAM中离散地分布着21个SFR,如表1.5所示。每一个SFR都有字节地址,并定义了符号名。也有一部分SFR不仅具有字节地址,还具有位地址,表中带“ * ”的SFR表示该SFR具有位地址,是可以进行位寻址的。在这128 B中,尽管还有许多空闲地址,但用户不能使用。特殊功能寄存器专用于控制、管理单片机内算术逻辑部件、并行I/O口锁存器、中断系统、定时/计数器、串行口等功能模块的工作。1.4.2内部数据存储器结构高128B的RAM表1.58051特殊功能寄存器一览表寄存器符号名称字节地址(高位)位地址(低位)﹡ACC累加器0E0HE7E6E5E4E3E2E1E0﹡BB寄存器0F0HF7F6F5F4F3F2F1F0D7D6D5D4D3D2D1D0﹡PSW程序状态字寄存器0D0HCYACF0RS1RS0OVF1PSP堆栈指针81HDPTR数据指针(DPH、DPL)DPL数据指针低字节82HDPH数据指针高字节83H8786858483828180﹡P0P0口锁存器80HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.09796959493929190﹡P1P1口锁存器90HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0A7A6A5A4A3A2A1A0﹡P2P2口锁存器0A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0B7B6B5B4B3B2B1B0﹡P3P3口锁存器0B0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0﹡IP中断优先级控制寄存器0B8HBFBEBDBCBBBAB9B8﹡IE中断允许控制寄存器0A8HAFAEADACABAAA9A8TMOD定时/计数器方式控制寄存器89H﹡TCON定时/计数器控制寄存器88H8F8E8D8C8B8A8988TH0定时/计数器0高字节8CHTL0定时/计数器0低字节8AHTH1定时/计数器1高字节8DHTL1定时/计数器1低字节8BH﹡SCON串行控制寄存器98H9F9E9D9C9B9A9998SBUF串行数据缓冲器99HPCON电源控制寄存器87HCPU的专用寄存器组在应用系统设计尤其是软件编程时经常用到CPU的专用寄存器组。MCS-51的CPU专用寄存器组包括程序计数器PC、累加器ACC、寄存器B、程序状态标志寄存器PSW、堆栈指针SP和数据指针DPTR等6个寄存器,除PC外,其余5个寄存器均为可编程可访问寄存器。而PC只能用在查表指令MOVC中,不可直接访问。另外,专用寄存器组中只有PC在物理上是独立的(即没有与其他器件共同编码的物理地址),其余5个寄存器都有相应的直接地址编码(称字节地址)。1.4.2内部数据存储器结构高128B的RAM——SFR1.累加器ACC(Accumulator):累加器ACC(简称A寄存器或累加器A)是一个具有特殊用途的8位寄存器,主要用来存放一个操作数或存放运算的结果。累加器ACC是CPU中使用最频繁的寄存器,MCS-51指令系统中多数指令的执行都通过它进行。用于存放操作数,是算数逻辑单元ALU输入的重要数据来源是ALU运算结果的暂存单元,用于存放运算的中间结果是数据传送的中转站,单片机中的大部分数据传送都通过累加器进行。在变址寻址方式中把累加器作为变址寄存器使用。1.4.2内部数据存储器结构高128B的RAM——SFR2.寄存器B寄存器B也是一个8位寄存器,在乘法和除法运算中用作ALU的输入之一。乘法运算时,ALU的两个输入分别为A、B,运算结果存放在AB寄存器中,其中A存放积的低8位,B则存放积的高8位。除法运算时,被除数取自A,除数取自B;运算结果商存于A,而余数存于B。其它情况下,B可作为一个工作寄存器使用。1.4.2内部数据存储器结构高128B的RAM——SFR3.程序状态字PSW(PROGRAMSTATEWORD)CyACF0RS1RS0OV…PD7D6D5D4D3D2D1D0PSW进位标志、“位累加器”辅助进位标志用户通用状态标志溢出标志奇偶标志位保留位工作寄存器组选择控制位若ACC中有奇数个“1”,则P置位,否则清零1.4.2内部数据存储器结构高128B的RAM——SFRRS1、RS0与片内工作寄存器组的对应关系RS1RS0寄存器组片内PAM地址通用寄存器名称000组00H~07HR0~R7011组08H~0FHR0~R7102组10H~17HR0~R7013组18H~1FHR0~R71.4.2内部数据存储器结构高128B的RAM——SFR堆栈指针SP为8位专用寄存器。在CPU响应中断或调用子程序时,程序断口16位PC便会自动压入堆栈中;在中断程序或子程序结束时,原PC值会自动弹出堆栈,使程序从原断口处继续顺序执行下去。堆栈除用于保护断口地址外,有时还需要保护其他一些重要信息。堆栈在存取信息时必须按照“后进先出”或“先进后出”的原则。4.堆栈指针SP(STACKPOINTER)1.4.2内部数据存储器结构高128B的RAM——SFR5.数据指针寄存器DPTR数据指针DPTR是16位专用寄存器,它也可拆成高字节DPH和低字节DPL两个独立的8位寄存器,主要用于存放16位地址。可通过数据指针DPTR访问64KB外部数据存储器。1.4.2内部数据存储器结构高128B的RAM——SFR3.片外数据存储器8051单片机中的数据存储器除内部数据存储器外,还可以最多扩展外部数据存储器64KB(0000H~FFFFH),这两部分数据存储器可以并存。变量的不同存储器类型对应不同存储器空间:Code:可有多达64 KB的程序存储器区,地址范围为:0000H~FFFFH。data:直接寻址区,内部RAM的低128字节,地址范围为00H~7FH。bdata:位寻址区,内部RAM的低128字节,地址范围为20H~2FH。idata:间接寻址区,包括整个内部RAM区,地址范围为00H~FFH。xdata:指定多达64KB的外部RAM直接寻址区,地址范围为0000H~FFFFH。pdata:能访问1页(256B)的外部RAM。1.4.2内部数据存储器结构高128B的RAM——SFR小提示:在单片机C语言程序设计时,用户无须考虑程序和数据的存放地址,编译器在编译程序时会按照规定自行安排程序的存放地址,因此大家只需了解存储器的结构即可。PC是CPU的最基本部件,它是一个独立的计数器,用于存放下一条待执行指令的地址。PC的基本工作过程可以描述为:PC中的数作为指令地址输出给程序存储器,程序存储器按此地址输出指令字节,同时PC本身自动加1,指向下一条指令。注意:在执行转移、调用类指令或响应中断等操作时,PC的工作过程将有所不同。MCS-51的PC是一个16位寄存器,其寻址范围是64KB(即216Byte)。在MCS-51指令系统中有一类基址加变址寻址的指令,PC可用作该类指令的基本地址寄存器。6.程序计数器PC(PROGRAMCOUNTER)不是特殊功能寄存器1.4.2内部数据存储器结构高128B的RAMMCS-41单片机系统的存储器结构特点:1、把数据存储器和程序存储器分
本文标题:12单片机的内部结果存储器
链接地址:https://www.777doc.com/doc-3059797 .html