单片机程序程序存储空间ROM和数据存储空间RAM详解.docx

上传人:lao****ou 文档编号:604231 上传时间:2024-02-29 格式:DOCX 页数:9 大小:167.95KB
下载 相关 举报
单片机程序程序存储空间ROM和数据存储空间RAM详解.docx_第1页
第1页 / 共9页
单片机程序程序存储空间ROM和数据存储空间RAM详解.docx_第2页
第2页 / 共9页
单片机程序程序存储空间ROM和数据存储空间RAM详解.docx_第3页
第3页 / 共9页
单片机程序程序存储空间ROM和数据存储空间RAM详解.docx_第4页
第4页 / 共9页
单片机程序程序存储空间ROM和数据存储空间RAM详解.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机程序程序存储空间ROM和数据存储空间RAM详解.docx》由会员分享,可在线阅读,更多相关《单片机程序程序存储空间ROM和数据存储空间RAM详解.docx(9页珍藏版)》请在第一文库网上搜索。

1、单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解问题:STC89C52RC单片机:8K字节程序存储空间,512字节数据存储空间,内带2K字节EEPROM存储空间;它们分别存的是什么?8K的程序存储空间是存储代码,也就是你写的程序生成的HEX文件的,相当于电脑系统的C盘。512字节相当于内存,存储空间存储变量,像u8x,y,z,u32a之类的临时变量掉电后数据丢失。2KeeprOm相当于电脑系统的硬盘,数据写入后掉电不丢失。主要是单片机在运行的过程中写入数据或者读取数据。像设置的闹铃值,设置好了就不用每次都去设置了,保存在单片机里面,即使掉电了,设置的数据也不会丢失,只需单片机上电再

2、读取就好了。单片机原理及系统结构在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。从物理结构上单片机系统的存储器结构图(四个部分)MCS-51单片机FFFHOOOH片内ROM4KEA=I片内RAM256BFFFFH1000HOFFFH片外ROM64KEA=O片外RAM64KOOOOH图一:存储空间分布51单片机存储器结构分析8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。这种程序存储和数据存储分开的结构形式被称为哈佛结构。MCS-51

3、使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。MCS-51单片机存储器的配置特点内部集成了4K的程序存储器RoM:内部具有256B的数据存储器RAM(用户空间+SFR空间):可以外接64K的程序存储器Re)M利数据存储器RAMC从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:

4、既片内ROM,RAM和片外RoM、RAM,从逻辑结构上看(既编程的角度),可以分为三个不同的空间:(1) 片内、片外统一编址的64KB的程序存储器地址空间:OOOOHFFFFH(用16位地址);,其中OOoOHOFFFH为片内4KB的ROM地址空间,1000H-FFFFH为外部ROM地址空间;(2) 256B的内部数据存储器地址空间(用8位地址),OOH-FFH,分为两大部分,其中OOH7FH(共128B单元)为内部静态RAM的地址空间,80H-FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域;(3) 64KB的外部数据存储器地址空间(用16位地址):OOOOH-FF

5、FFH,包括扩展I/O地址空间。上述4个存储空间地址是重叠的,如图1所示。8051的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:CPU访问片内、片外ROM指令用MoVC访问片外RAM指令用MOVX,访问片内RAM指令用MOVo程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能力为64KB。这使得指令能在64KB的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。1 .程序存储器RoM用于存放程序、常数或表格。2 .在51单片机中,由引脚/EA上的电平选择内、外ROM:EA=I时,CPU执行片内的4KR0M中的程序;EA=OI,CPU

6、选择片外ROM中的程序。3 .无论是使用片内还是使用片外ROM,程序的起始地址都是从ROM的OOooH单元开始。4 .尽管系统可以同时具备片内ROM和外部RoM,但是在一般正常使用情况下,通过/EA的设定来选择其一(或者使用内部RoM,或者使用外部RoM)O5 .如果EA=I(执行片内程序存储器中程序时):如果程序计数器的指针PC值超过OFFFH(4K)时,单片机就要自动的转向片外的ROM存储器且从IOc)OH单元开始执行程序(无法使用片外ROM的低4K空间)6 .当程序超过4K时,有两种使用程序存储器ROM的方法:设置EA=0,使用外部RoM.从地址=OOoOH开始;设置EA=1,使用内部的

7、4KR0M和外部ROM(地址从IOOoH开始的单元)。8051从片内程序存储器和片外程序存储器取指时的执行速度相同。程序存储器六个特殊的单元:在ROM中有六个单元具有特定功能。OOOOH单元:复位时程序计数器PC所指向的单元,因此用来存放程序中的第一条指令:OOo3H单元:外部中断/INTO的矢量入口地址:OOOBH单元:定时器TO溢出中断的矢量入口地址;0013H单元:外部中断/INT1的矢量入口地址;OOIBH单元:定时器T1的溢出中断矢量入口地址;0023H单元:串行口接收、传送的中断矢量入口地址。矢量入口单元:在编写中断程序时,写入对应的“跳板指令”单片机第一条指令的两个特征:存放在R

8、OM的C)Oe)OH单元;必须是“跳转指令”以跳过下面的5个中断矢量,转到后面的真正的主程序入口010OH单元。ORG0000HUMPO1OOHORGO1OOHSTART:MOVA,#OoHEND外部程序存储器:当单片机使用外RoM存储器时(扩展系统),必须设定/EA=O,此时单片机的端口功能就要发生相应的改变:PO、P2作为外部ROM的地址和数据总线;无论在物理上还是逻辑上,系统中RAM都可分为两个独立空间:内部和外部RAMo由不同的指令来访问。1 .访问内部数据存储单元时,使用MOV指令;2 .访问外部数据存储器时,使用MOVX指令。内部RAM从功能上将256B空间分为二个不同的块:1 .

9、低128B的RAM块;2 .高128B的SFR(Specia1FunctionRegister)块。在低128B的RAM存储单元中又可划分为:1 .工作寄存器区;2 .位寻址区;3,通用存储数据的“便签区”。高128B的专用寄存器区SFR中仅仅使用了21寄存器(51系列),其它107个单元不能使用。注然一般的教科书里RAM大小是指默认用户RAM,但是很少有特别说明的C51;片内用户RAM有128字节(位于片内所有RAM的低128B,高128B是SFR)访问RAM可以使用直接或者间接寻址方式,地址为OOH-7FH,在80H-FFH的空间分配给了SFR,只能使用直接寻址方式。C52:片内用户RAM

10、为256字节(位于片内所有RAM的低128B,高128B是SFR和用户RAM)低128字节(00H-7FH)的访问方式为直接和间接寻址方式;高128字节(地力上80H-FFH)只能使用间接寻址方式。SFR的地址也为80HFFH,但只能使用直接寻址方式。也就是说,C52的高128B是用户RAM和SFR统编制,共享地址,通过指令的寻址方式不同来进行区分。MCS-51片内、片外数据存储器示意图FFFFHFFH80H7FHOOH特殊功能寄存器SFR片外数据存储器64KB注意:1,访三片内RAM20H单元;MOVA,20H2,访问片外RAM20H单元;MOVRO,#20hMOVXA,R0通用数据存储器3

11、,尽管片内、外RAM单元的OOH-FFH地址相重叠但由于指令的不同不会发生地址混乱.所以无论从物理或逻辑上,内、外RAM是两个独立的存储空间。(XXX)H片内数据存储器RAM256B个字节片外数据存储器RAM64KB个字节片内RAM低128B字节功能分配图z-7FHRAM的低128B字节位寻址区3区2区1区。区便笺区通用的RAM区地址:30H-7FH位寻址区16个单元20H-2FH,共有128可寻址位个位.位地址:00H-7FH注意:位地址与字节地址的区别四个工作寄存器区每个区中有RO-R7八个工作寄存器(-)工作寄存器区结构图(0区)【注意】:工作寄存器Rn实际上就是RAM单元的一部分片内R

12、AM中具有双重功能的存储结构图2FH/字节地址20H7F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A49484746454443424140位地址3F3E3D3C3B3A39383726252423222120-2F2E2D2C2B2A292827262524232221201F1EID1C1B1A19181716151413121110OFOEODOCOBOA09080706050403020100对于数据存储器,分为内部数据

13、存储器(IDATA/RAM)和外部数据存储器(XDATA)两个部分,但这两个存储器就不像Code存储器那样共享地址空间的了。一般的8051芯片,内部RAM只有128B,从0x00-0x7F,而从0x80-0XFF则是SFR(CPU工作寄存器和各种外设寄存器都在此)的区域。对于8052来说,内部RAM有256B,所以0x80-0XFF是高128B的RAM在使用。可这部分不是SFR专用的吗?是SFR专用,但注意,SFR的访问只能使用“直接寻址方式”(使用特定的汇编指令来实现),区别就在这里。只有通过直接寻址访问的地址才是SFR,否则就是普通的RAM0至于夕卜扩的RAM(XDATA),地址也是从OX

14、OOOO-OXFFFF的,而且这里的OXOOOO和内部RAM的0x00是不同的,是完全独立的两个空间。他们的访问方法也是不同的,MCS-51使用MOVX指令,来读写XDATA区。而且,访问XDATA区,是需要DPTR寄存器来辅助的。因为只有DPTR才能装得下十六位的XDATA地址。所以说,MCS-51读写IDATA区的速度是最快的,而且访问方法也是最多的。访问XDATA区的速度相对就要慢很多。用PO口作地址/数据复用总线,用P2口的口线作高位地址线,最多可以扩展开关电源模块64KB的存储器。控制信号线包括:使用A1E作为地址锁存的选通信号,以实现低8位地址的锁存;以PSEN信号作为扩展程序存储器的读选通信号;以EA信号作为内、外程序存储器的选择信号;以EA利作为扩展数据存储器和I/O端口的读、写选通信号。执行MOVX指令时,RD和WR信号分别自动有效。片外数据存储器RAM的读和写由8051的RD(P3.7)和WR(P3.6)信号控制,而片外程序存储器的输出允许(C)E)由读选通PSEN信号控制。尽管片外数据存储器和片外程序存储器共处同一地址空间,但由于控制信号及使用的数据传送指令不同,故不会发

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服