02_存储器组织

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章CIP-51微控制器(红色部分)2.1C8051F120控制器内核是CIP-51微控制器C8051F系列单片机的内核是SiliconLabs的专利产品:CIP-51。它与MCS-51指令集完全兼容,可以使用标准MCS-51的汇编器和编译器进行软件开发。CIP-51微控制器内核除了具有标准MCS-51的组织结构和外设以外,另有增加的定制外设和功能,大大增强了它的处理能力。性能:CIP-51采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。而对于CIP-51内核,70%的指令的执行时间为1或2个系统时钟周期,没有执行时间超过8个系统时钟周期的指令。CIP-51工作在最大系统时钟频率100MHz时,它的峰值速度达到100MIPS。CIP-51共有111条汇编指令。下表列出了指令条数与执行时所需的系统时钟周期数的关系。本课程使用C语言编程,对汇编只是简单介绍,感兴趣的同学可参考手册自学。C语言编程效率高,上手容易,移植容易;汇编语言执行效率高,上手相对难,移植困难;对8051CPU内部详细结构本课程不做详细介绍,我们可以认为它是一款CPU,可以执行我们的C语言或汇编语言程序。(我们对80X86内部结构并不熟悉,但不妨碍我们使用它)CIP-51有两个物理上独立的存储器空间:程序存储器空间64K、外部数据存储器/IO空间64K。另外在CIP51内部还有内部数据存储器/特殊功能寄存器空间256字节(访问最快)。8448=8182+256学单片机必须学好:存储器组织、SFR、外设结构2.2存储器组织CIP-51的存储器组织如图11.2所示。注意:各空间地址范围程序存储器和数据存储器共享同一个地址空间(和8086不同),其中:程序存储器空间:0000h-FFFFh;外部数据存储器空间/IO空间:0000h-FFFFh;内部数据存储器空间:00h-7Fh(直接/间接寻址)80h-FFh(只能间接寻址)特殊功能寄存器空间:80h-FFh(只能直接寻址)2.2.1位寻址空间内部数据存储器字节地址0x20-0x2F这16个字节可以用字节地址进行字节访问。内部数据存储器字节地址0x20到0x2F的16个字节共128个位,还可以作为128个独立寻址位访问。每个位有一个位地址,从0x00到0x7F。字节地址0x20的位0其位地址是0x00,字节地址0x20的位7其位地址是0x07。字节地址0x2F的位0其位地址是0x78,字节地址0x2F的位7其位地址是0x7F。2.2.2特殊功能寄存器从0x80到0xFF的直接寻址存储器空间为特殊功能寄存器区(SFR)。特殊功能寄存器已预先定义好每个寄存器,每个位的含义,不能修改。SFR提供如下功能:对CIP-51资源和外设的控制反应CIP-51资源和外设的状态CIP-51与这些资源和外设之间的数据交换CIP-51具有标准8051中的全部SFR(21个),还增加了一些用于配置和访问专有子系统的SFR。这样就能保证与MCS-51指令集兼容的前提下增加新的功能。表11.0列出了MCS-51系统控制器中的全部SFR(21个)。表11.1列出了C8051F020系统控制器中的全部SFR(121个)。表11.2列出了C8051F120系统控制器中的全部SFR(多于128个)。表11.0MCS-51系统控制器中的全部SFR表2-1特殊功能寄存器映像SFR分页机制(类似于上下铺):CIP-51实现了SFR分页机制,允许器件将很多SFR映射到0x80~0xFF这个存储器地址空间。SFR存储器空间有256页。0x80~0xFF的每个存储器地址都可以访问多达256页。C8051F12x器件使用5个SFR页:0、1、2、3和F。使用特殊功能寄存器页选择寄存器SFRPAGE来选择SFR页(见图11.2)。读和写一个SFR的步骤如下:1.用SFRPAGE寄存器选择相应的SFR页号。2.用直接寻址方式读或写特殊功能寄存器(MOV指令)。位7-0:SFR页:代表C8051MCU读或修改SFR时所使用的SFR页。写:设置SFR页。读:C8051MCU正在使用的SFR页。注意复位值注意地址,SFR页每个SFR有一个名字和它的字节地址对应,可以用名字和字节地址两种方式访问。(在不同的页可能会访问到不同的SFR)字节地址以0x0或0x8结尾的SFR(例如P0、TCON、P1、SCON、IE等)既可以按字节寻址也可以按位寻址(位地址80H-FFH),所有其它SFR只能按字节寻址。可以位寻址的SFR中,每个位都有一个位名字,可以按位地址或位名字另种方式访问。(在不同的页可能会访问到不同的位)SFR空间中未使用的字节、未使用的位,保留为将来使用,访问这些地址会产生不确定的结果,应予避免。有关每个寄存器的详细说明请参见手册P121-P1252.2.3内部数据存储器CIP-51的数据存储器空间中有256字节的内部RAM,位于地址0x00到0xFF的地址空间。数据存储器中的低128字节用于通用寄存器和临时存储器。可以用直接或间接寻址方式访问这128字节。什么是直接寻址和间接寻址?直接寻址示例:MOVA,40H间接寻址示例:MOVR0,#40HMOVA,@R0注:其中R0是一个寄存器间接寻址可用R0,R1,和DPTR其中:从0x00到0x1F为4个通用寄存器区,每个区有8个寄存器。接下来的16字节,从地址0x20到0x2F,既可以按字节寻址又可以作为128个位地址用直接位寻址方式访问。数据存储器中的高128字节只能用间接寻址访问。该存储区与特殊功能寄存器(SFR)占据相同的地址空间,但物理上与SFR空间是分开的。2.2.3.1通用寄存器内部数据存储器的低32字节,从地址0x00到0x1F,可以作为4个通用寄存器区访问。每个区有8个寄存器,称为R0-R7。在某一时刻只能选择一个寄存器区。程序状态字(PSW是一个SFR,字节地址D0h)中的RS0(PSW.3)和RS1(PSW.4)位用于选择当前的寄存器区(PSW后面说明)。目的:这允许在进入子程序或中断服务程序时进行快速现场切换。注意:间接寻址方式使用R0和R1作为间址寄存器。2.2.3.2堆栈程序的堆栈可以位于256字节数据存储器中的任何位置。堆栈区域用堆栈指针SP(SP是一个特殊功能寄存器字节地址0x81)指定。SP指向最后使用的位置。下一个压入堆栈的数据将被存放在SP+1,然后SP加1。复位后堆栈指针被初始化为地址0x07,因此第一个被压入堆栈的数据将被存放在地址0x08(R0-R7复位后默认在0区),目的:躲过通用寄存器第一区。如果使用不止一个寄存器区,SP应被初始化为数据存储器中不用于数据存储的位置。堆栈深度最大可达256字节。编程习惯:初始化程序包括MOVSP,#30H2.2.4程序存储器C8051F120有64K程序存储器空间,在该空间集成了128KBFlash存储器(用于存储程序代码或各种非易失性数据)。另外还有两个128B字节的FLASH页,只能用来存储非易失性数据。FLASH存储器特性:一个FLASH位可以随便从1清0。但是一旦被清0,必须经过擦除才能再回到1状态。因此在进行重新编程之前,应将数据字节擦除(置为0xFF)。写和擦除操作由硬件自动定时,以保证操作正确。程序存储器通常被认为是只读的,有两种情况下读程序存储器:1.CPU根据PC从程序存储器相应的地址读出下一条指令,然后译码执行;2.执行程序时,遇到MOVC指令,执行该条指令时将到程序存储器某个地址获得一个字节的数据。特殊情况下:MOVX写入程序存储器空间这一特性为CIP-51提供了更新程序代码和将程序存储器空间用于非易失性数据存储的机制。128K程序存储器组织成4个32KB的程序存储块。地址在0x0000到0x7FFF之间的32K字节为公共程序存储块(块0)。其它3个高地址程序存储块(块1、块2和块3)都映射到地址0x8000~0xFFFF,由PSBANK寄存器中的块选择位选择当前存储块,见图11.3。当SFLE=0时:指向128KBFLASH存储器当SFLE=0时:指向128KBFLASH存储器注意:复位值注意:位于块3的1024个存储器字节(0x1FC00~0X1FFFF)为保留区,不能用于用户程序或数据存储。程序执行过程及PC寄存器PC(不是SFR)复位值=0000PC指向下一条需要执行指令的首地址单片机开发过程:编辑,编译,连接,下载,调试。上电后自动运行FLASH程序。当SFLE=1时:指向256BFLASH存储器为什么安排两个128B的FLASH?为什么安排两个128B的FLASH?两个128字节的扇区可以被分别擦除或同时擦除。要同时擦除这两个扇区,擦除操作的目标地址应为0x0400。类似FLASH存储器的写保护查表即可见前2页选择是写一个字节还是擦一个扇区FLASH存储器编程两种方法:对FLASH存储器编程的最简单的方法是使用由SiliconLabs或第三方供应商提供的编程工具,通过JTAG接口编程。这是对未初始化器件的唯一的编程方法。可以用软件使用MOVX指令对FLASH存储器编程,象一般的操作数一样为MOVX指令提供待编程的地址和数据字节。在使用MOVX指令对FLASH存储器写入之前,必须将程序存储写允许位PSWE(PSCTL.0)设置为逻辑‘1’,以使MOVX指向FLASH。在用软件清除之前PSWE位一直保持置位状态。为了避免对FLASH的误写,强烈建议在PSWE为逻辑‘1’期间禁止中断。在执行FLASH写、读、擦除操作时,PSBANK寄存器中的COBANK位决定三个高地址FLASH块中的哪一个被映射到地址范围0x08000~0x0FFFF。注意:为保证FLASH存储器内容的完整性,强烈建议在任何从应用软件写和/或擦除FLASH存储器的系统中使能VDD监视器(通过将VDD监视器使能引脚MONEN连接到VDD和将RSTSRC寄存器中的PORSF位置1)写FLASH存储器可以清除数据位,但不能使数据位置‘1’;只有擦除操作能将FLASH中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的字节地址。写/擦除操作的定时由硬件自动控制。注意:对于128KBFLASH器件,从0x1FC00开始的1024个单元被保留。应避免FLASH写和擦除操作指向保留区。软件擦除FLASH页:一次FLASH擦除操作将擦除整个扇区(扇区内的所有字节被置为0xFF)。128k字节的FLASH存储器是以1024字节的扇区为单位组织的。256字节的临时数据区(地址0x20000~0x200FF)由两个128字节的扇区(页)组成。要擦除一个FLASH页,FLWE、PSWE和PSEE位必须被置‘1’,然后用MOVX指令写一个数据字节到扇区内的任何一个地址。2.2.5外部数据存储器/IO空间空间大小:64K地址范围:0000H-FFFFH空间中可以安排:RAM存储器或IO设备片内已集成:8KRAM片外扩展:1.保留8K则最多扩展56KRAM/IO设备2.屏蔽8K则最多扩展64KRAM/IO设备3.扩展方法后面章节详细介绍逻辑上:程序存储器空间:0000h-FFFFh,共128KB全部集成在芯片上;数据存储器空间:0000h-FFFFh,64k集成了8k;内部数据存储器空间:00h-7Fh(直接/间接),80h-FFh(间接)R0-R7可以用名字或地址访问。内部特殊功能寄存器空间:80h-FFh;特殊功能寄存器可以用名字或地址访问。内部位寻址空间:20h-2Fh中有00h-7Fh,特殊功能寄存器中有80h-FFh;特殊功能寄存器中的位寻址空间可以用名字或地址访问。总结:2.2.7CIP-51相关寄存器(属于SFR)说明下面对与CIP-51系统控制器操作有关的SFR加以说明。注意保留位不应被置为逻辑‘1’。将来的产品版本可能会使用这些位实现新功能,在这种情况下各位的复位值将是逻辑‘0’以选择缺省状态。SP:堆栈指针堆栈指针保持栈顶位置。在每次执行PUSH操作前,堆栈指针加1。SP寄存器复位后的默认值为0x07。DPL:数据指针

1 / 58
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功