好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机内部资源分配.doc

9页
  • 卖家[上传人]:woxinch****an2018
  • 文档编号:38969718
  • 上传时间:2018-05-10
  • 文档格式:DOC
  • 文档大小:96.63KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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 和片内 ROM1、片内数据存储器区(、片内数据存储器区(RAM))8051 的内部 RAM 共有 256 个单元,通常把这 256(28)个单元按其功能划分为两部分:低 128(0~127)单元(单元地址为 00H~7FH)和高128(128~255)单元(单元地址为 80H~FFH) 。

      表 2.2 所示为低 128 字节单元的配置情况低 128 单元是单片机的真正 RAM 存储器,按用途划分为工作工作寄存器寄存器区区、位位寻址区寻址区和用户用户 RAM 区区三个区域表 2.2 低 128 字节单元的配置30~7FH数据缓冲区20~2FH位寻址区(00~7FH)18~1FH工作寄存器组3(R0~R7)10~17H工作寄存器组2(R0~R7)08~0FH工作寄存器组1(R0~R7)00~07H工作寄存器组0(R0~R7)(1)工作寄存器寄存器区8051 共有 4 组工作寄存器,每组 8 个寄存单元,各组都以 R0~R7 作寄存单元名称工作寄存器常用于存放操作数中间结果等由于它们的功能及使用不作预先规定,因此称之为工作寄存器,有时也叫通用寄存器4 组工作寄存器占据内部 RAM 的 00H~1FH 共 32 个单元地址在任何时刻,在任何时刻,CPU 只能使用其中的一组工作寄存器,只能使用其中的一组工作寄存器,并且把正在使用的那组寄存器称之为当前寄存器组到底是哪一组,由程序状态字寄存器 PSW 中RS1(D4) 、RS0(D3)位的状态组合来决定2)位寻址区(只有位寻址区的位可单独访问,其余的单元均只能按字节为单位访问)内部 RAM 的 20H~2FH 单元,既可作为一般 RAM 字节单元使用,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。

      位寻址区共有 16个 RAM 单元,计 128 位,每一位都有独立的位地址,其范围为00H~7FHMCS-51 具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间这种位寻址能力是 MCS-51 的一个重要特点表 2.3 为位寻址区的位地址表 2.3 片内 RAM 位寻址区的位地址位地址字节地址D7D6 D5D4D3D2D1D02FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100(3)用户 RAM 区在内部 RAM 低 128 单元中,工作寄存器占去 32 个单元,位寻址区占去16 个单元,剩下 80 个单元,就是供用户使用的一般 RAM 区,其单元地址为30H~7FH(堆栈区) 。

      2、特殊功能、特殊功能寄存器寄存器区(区(SFR))内部 RAM 的高 128 单元是供给专用寄存器使用的,其单元地址为80H~0FFH因这些寄存器的功能已作专门规定,故称之为专用寄存器(Special Function Register) ,也可称为特殊功能寄存器,简称为 SFR在 51 系列单片机中,共有 21 个特殊功能寄存器,它们零散地分布在 80H~0FFH 的地址空间,如 表 2.4 特殊功能寄存器名称位名称P0.6P0.5P0.4P0.3P0.2P0.1P0.0单元地址P0P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 80H(128)SP81H(129)DPL82H(130)DPH83H(131)PCON SMOD87H(135)TCON TF1TR1TF0TR0IE1IT1IE0IT088H(136)TMOD GATE C/TM1M0GATE C/TM1M089H(137)TL08AH(138)TL18BH(139)TH08CH(140)TH18DH(141)P1P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 90H(144)SCONRITI98H(152)SBUF99H(153)P2P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 0A0H(160)IEEA-ET2ESET1EX1ET0EX00A8H(168)P3RDWRT1T0INT1 INT0 TXDRXD0B0H(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 各位的名称位序D7D6D5D4D3D2D1 D0位名称CYACF0RS1 RS0OV-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 地址00H~07H)011 组(内部 RAM 地址08H~0FH)102 组(内部 RAM 地址10H~17H)113 组(内部 RAM 地址18H~1FH)这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前工作寄存器组但当单片机上电或复位后,RS1 RS0=00OV(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 单元开始但08H~1FH 单元分别属于工作寄存器的 1~3 区,如程序要用到这些区,最好把SP 值改为 1FH 或更大。

      一般在内部 RAM 的 30H~7FH 单元中开辟堆栈SP的内容一经确定,堆栈的位置也就跟着确定下来,由于 SP 可以通过指令修改内容,因此堆栈位置是浮动的3)程序计数器(PC) (程序指针)计算机的工作过程就是执行程序的过程,我们每个人可能都有这种感觉:在同一台计算机中,对于一个大的软件其执行速度会很“慢”而小的软件执行速度会很“快”,为什么?原因在于:计算机程序是由一条条指令组成的,而计算机是把程序分解成指令来执行的,即同一时刻只执行一条指令,而指令一般是在存储器中存放,却要在 CPU 中执行,这样就牵扯到在执行每条指令前,首先要将指令从存储器取到 CPU 中,这个过程称为“取指”,然后再执行在 CPU中有个专门负责寻找所取指令单元地址的部件,称为 PC,也叫程序指针,即PC 中存放的是下一条将要执行的指令所在存储器单元的地址值,它的作用是用来找到所取指令的地址,以供 CPU(PSEN)读取,CPU 每执行完一个指令,就会自动改变 PC 的值,即令 PC=PC+1,从而使其指向下一条指令的地址在MCS-51 单片机中,PC 的长度是 16 位的,且是不可寻址的高速而有条不紊的按顺序一步步执行程序的。

      跳转例外)(选择,循环)复位的本质即令复位的本质即令 PC=04)外部数据指针(DPTR)(a=*DPTR)DPTR 为 16 位地址寄存器,主要用于访问外部 RAM 单元(64KB),其中地址高 8 位存于 DPH,地址低 8 位存于 DPL所有的外部数据存储器都要由DPTR 指引访问5)累加器(ACC)ACC 是最常用的专用寄存器,在算术运算时用于提供被操作数和存放运算结果,直接与内部总线相连另外,单片机中的一般信息传递和交换都要通过ACC类似于 a=a+b;对专用寄存器问题作如下几点补充说明:1)21 个可字节寻址的专用寄存器是不连续地分散。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.