单片机内部资源分配.doc_第1页
单片机内部资源分配.doc_第2页
单片机内部资源分配.doc_第3页
单片机内部资源分配.doc_第4页
单片机内部资源分配.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.3 单片机内部资源分配2.3.1 MCS-51存储器空间MCS-51单片机在物理结构上有四个存储空间:片内程序存储器(ROM)片外程序存储器(外扩)片内数据存储器(RAM)片外数据存储器(外扩)但在逻辑上,即从用户的角度上(地址分配),8051单片机有三个存储编址空间,即:片内程序存储器、片外程序存储器统一编址的64KB(26*210=65536个单元)的程序存储器地址空间(C:)、256B(8位地址)的片内数据存储器的地址空间(D:)以及64KB(216)片外数据存储器的地址空间(X:)。在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。在MCS-51单片机的芯片内部,主要有RAM和ROM两类存储器,即所谓的片内RAM和片内ROM。1、片内数据存储器区(RAM)8051的内部RAM共有256个单元,通常把这256(28)个单元按其功能划分为两部分:低128(0127)单元(单元地址为00H7FH)和高128(128255)单元(单元地址为80HFFH)。表2.2所示为低128字节单元的配置情况。低128单元是单片机的真正RAM存储器,按用途划分为工作寄存器区、位寻址区和用户RAM区三个区域。表2.2 低128字节单元的配置307FH数据缓冲区202FH位寻址区(007FH)181FH工作寄存器组3(R0R7)1017H工作寄存器组2(R0R7)080FH工作寄存器组1(R0R7)0007H工作寄存器组0(R0R7)(1)工作寄存器区8051共有4组工作寄存器,每组8个寄存单元,各组都以R0R7作寄存单元名称。工作寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为工作寄存器,有时也叫通用寄存器。4组工作寄存器占据内部RAM的00H1FH共32个单元地址。在任何时刻,CPU只能使用其中的一组工作寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1(D4)、RS0(D3)位的状态组合来决定。(2)位寻址区(只有位寻址区的位可单独访问,其余的单元均只能按字节为单位访问)内部RAM的20H2FH单元,既可作为一般RAM字节单元使用,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16个RAM单元,计128位,每一位都有独立的位地址,其范围为00H7FH。MCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。表2.3为位寻址区的位地址。表2.3 片内RAM位寻址区的位地址字节地址位地址D7D6D5D4D3D2D1D02FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100(3)用户RAM区在内部RAM低128单元中,工作寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,就是供用户使用的一般RAM区,其单元地址为30H7FH(堆栈区)。2、特殊功能寄存器区(SFR)内部RAM的高128单元是供给专用寄存器使用的,其单元地址为80H0FFH。因这些寄存器的功能已作专门规定,故称之为专用寄存器(Special Function Register),也可称为特殊功能寄存器,简称为SFR。在51系列单片机中,共有21个特殊功能寄存器,它们零散地分布在80H0FFH的地址空间,如 表2.4 特殊功能寄存器名称位名称P0.6P0.5P0.4P0.3P0.2P0.1P0.0单元地址P0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.080H(128)SP81H(129)DPL82H(130)DPH83H(131)PCONSMOD87H(135)TCONTF1TR1TF0TR0IE1IT1IE0IT088H(136)TMODGATEC/TM1M0GATEC/TM1M089H(137)TL08AH(138)TL18BH(139)TH08CH(140)TH18DH(141)P1P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.090H(144)SCONRITI98H(152)SBUF99H(153)P2P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.00A0H(160)IEEA-ET2ESET1EX1ET0EX00A8H(168)P3RDWRT1T0INT1INT0TXDRXD0B0H(176)IP-PSPT1PX1PT0PX00B8H(184)PSWCYACF0RS1RS0OV-P0D0H(208)ACC0E0H(224)B0F0H(240)在这21个特殊功能寄存器中,有些是可以位寻址的,凡是字节地址数能够被8整除的SFR均可位寻址,该寄存器第0位的位地址与寄存器地址相同,且位地址是是连续的。单片机的21个特殊功能寄存器在单片机复位时(默认值),除SP的值为“07H”,P0、P1、P2及P3的值为“0FFH”(1111 1111B)外,其它寄存器的值基本上都是“0”,这点在使用时一定要注意。软件是跟着硬件走的。关于特殊功能寄存器的用法,在以后章节中陆续会介绍,这里只介绍几个关键的寄存器。(1)程序状态字(PSW)。程序状态字(program state word)是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是根据程序执行情况,由硬件自动设置的,而有些位的状态则使用软件方法设定。PSW的位状态可以用指令设置,也可以用指令读出。一些条件转移指令将根据PSW中专用位的状态,进行条件转移。PSW的各位定义如表2.5所示。表2.5 程序状态字PSW各位的名称位序D7D6D5D4D3D2D1D0位名称CYACF0RS1RS0OV-P除PSW.1位保留未用外,其余各位的定义及使用如下:CY(PSW.7)进位标志位。CY是PSW中最常用的标志位。其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位时,CY由硬件置“1”,否则清“0”;二是在位操作中,作累加位使用。如位传送、位运算及位判断等位操作。AC(PSW.6)辅助进位标志位。在进行加减运算中,当低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”。在BCD码调整中也要用到AC位。F0(PSW.5)用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。RS1和RS0(PSW.4,PSW.3)工作寄存器组选择位。它们被用于选择CPU当前使用的工作寄存器组。通用寄存器共有4组,其对应关系如表2.6所示:表2.6 当前寄存器组的设定RS1RS0所选的4组寄存器000组(内部RAM地址00H07H)011组(内部RAM地址08H0FH)102组(内部RAM地址10H17H)113组(内部RAM地址18H1FH)这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前工作寄存器组。但当单片机上电或复位后,RS1 RS0=00。OV(PSW.2)溢出标志位。在对有符号数进行加减运算中,OV=1表示算超出了累加器A所能表示的有符号数的范围(-128+127),即产生了溢出,因此运算结果是错误的,否则,OV=0表示结果正确,即无溢出产生。在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中,否则,OV=0,表示乘积只放在A中。在除法运算中,OV=1表示除数为0,除法不能进行,否则,OV=0,除数不为0,除法可正常进行。P(PSW.0)奇偶标志位。表明累加器ACC中数据的奇偶性。如果ACC中有奇数个“1”,则P置“1”,否则置“0”。凡是改变累加器ACC中内容的指令均会影响P标志位。此标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。(2)堆栈指针(SP)。(队列)(内容里的内容)堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。有序操作,即按地址序号进行操作。每往栈区存放一个数,即进栈,SP会自动加1;每出一次栈,SP会自动减1。进栈和出栈操作的单元就是由SP所指向的片内RAM单元。由于MCS-51单片机的堆栈设在内部RAM中,因此SP是一个8位寄存器(地址)。系统复位后,SP的内容为07H,从而使堆栈从08H单元开始。但08H1FH单元分别属于工作寄存器的13区,如程序要用到这些区,最好把SP值改为1FH或更大。一般在内部RAM的30H7FH单元中开辟堆栈。SP的内容一经确定,堆栈的位置也就跟着确定下来,由于SP可以通过指令修改内容,因此堆栈位置是浮动的。(3)程序计数器(PC)(程序指针)计算机的工作过程就是执行程序的过程,我们每个人可能都有这种感觉:在同一台计算机中,对于一个大的软件其执行速度会很“慢”而小的软件执行速度会很“快”,为什么?原因在于:计算机程序是由一条条指令组成的,而计算机是把程序分解成指令来执行的,即同一时刻只执行一条指令,而指令一般是在存储器中存放,却要在CPU中执行,这样就牵扯到在执行每条指令前,首先要将指令从存储器取到CPU中,这个过程称为“取指”,然后再执行。在CPU中有个专门负责寻找所取指令单元地址的部件,称为PC,也叫程序指针,即PC中存放的是下一条将要执行的指令所在存储器单元的地址值,它的作用是用来找到所取指令的地址,以供CPU(PSEN)读取,CPU每执行完一个指令,就会自动改变PC的值,即令PC=PC+1,从而使其指向下一条指令的地址。在MCS-51单片机中,PC的长度是16位的,且是不可寻址的。高速而有条不紊的按顺序一步步执行程序的。(跳转例外)(选择,循环)复位的本质即令PC=0。(4)外部数据指针(DPTR)(a=*DPTR)DPTR为16位地址寄存器,主要用于访问外部RAM单元(64KB),其中地址高8位存于DPH,地址低8位存于DPL。所有的外部数据存储器都要由DPTR指引访问。(5)累加器(ACC)ACC是最常用的专用寄存器,在算术运算时用于提供被操作数和存放运算结果,直接与内部总线相连。另外,单片机中的一般信息传递和交换都要通过ACC。类似于a=a+b;对专用寄存器问题作如下几点补充说明:1)21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中,尽管还余有许多空闲地址,但用户并不能使用。2)程序计数器PC不占据RAM单元,它在物理上是独立的,因此是不可寻址的寄存器。3)对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器名称。2.3.2 MCS-51片内程序存储器MCS-51的程序存储器用于存放用户程序和表格常数。8051片内有4KB的ROM,8751片内有4KB的EPROM,8031片内无程序存储器。MCS-51的片外最多能扩展64KB程序存储器,且片内外的ROM是统一编址的。二者主要由EA(31)引脚来进行区分的,如EA端外接高电平时,8051的程序计数器PC在0000H0FFFH地址范围内(即前4KB地址)寻址,执行片内ROM中的程序,当PC在1000HFFFFH地址范围时,自动执行片外程序存储器中的程序;当EA外接低电平时,只能寻址外部程序存储器,片外存储器可以从0000H开始编址。MCS-51的程序存储器中有些单元具有特殊功能,使用时应予以注意。其中一组是0000H0002H单元。系统复位后,(PC)=0000H,单片机从0000H单元开始取指令执行程序,因此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论