1 / 41

存储器、堆栈、 SFR

存储器、堆栈、 SFR. 单片机的存储器 —— 几个有关的概念:. 数据存储器 —— RAM ( Random Access Memory ) 程序存储器 —— ROM ( Read Only Memory ) 闪速存储器 —— Flash Memory EPROM —— ( UV ) Erazible Programmable ROM EEPROM/E 2 PROM —— Electrical Erasable Programmable ROM 静态存储器 SRAM —— Static RAM

arden
Télécharger la présentation

存储器、堆栈、 SFR

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 存储器、堆栈、SFR

  2. 单片机的存储器——几个有关的概念: • 数据存储器——RAM(Random Access Memory) • 程序存储器——ROM(Read Only Memory) • 闪速存储器——Flash Memory • EPROM——(UV)Erazible Programmable ROM • EEPROM/E2PROM——Electrical Erasable Programmable ROM • 静态存储器SRAM——Static RAM (动态存储器DRAM——Dynamic RAM) • 按字节寻址:每个字节(8个位)占一个地址 • 按位寻址:有的存储器每一个位就有一个地址

  3. 8051的存储器组织 8051存储器可以分成两大类: ﹡ RAM,CPU在运行时能随时进行数据的写入和读出,但在关闭电源时,其所存储的信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈。 ﹡ ROM是一种写入信息后不易改写的存储器。断电后,ROM中的信息保留不变。用来存放固定的程序或数据,如系统监控程序、常数表格等。

  4. 2.1.1普林斯顿结构 一般微机通常只有一个逻辑空间,可以随意安排ROM或RAM。访问存储器时,同一地址对应唯一的存储单元,可以是ROM也可以是 RAM,并用同类访问指令。这种结构称为普林斯顿结构。

  5. 2.1.2 哈佛结构 ◆8051单片机与一般微机的存储器配置方式很不相同。 ◆51单片机的存储器在物理结构上分为程序存储空间和数据存储空间,共有四个:片内和片外程序存储空间以及片内和片外数据存储空间,这种在物理结构上把程序存储器和数据存储器分开的结构形式称为哈佛结构。

  6. 89C51单片机存储器配置 • 片内RAM 128字节(00H—7FH); 片内RAM前32个单元是工作寄存器区(00H—1FH) 片内RAM有128个可按位寻址的位,占16个单元。 位地址编号为:00H—7FH,分布在20H—2FH单元 • 片内21个特殊功能寄存器(SFR)中:地址号能被 8整除的 SFR中的各位也可按位寻址(P.33-34) • 可寻址片外RAM 64K字节 (0000H—FFFFH) • 可寻址片外ROM 64K字节 (0000H—FFFFH) • 片内 Flash ROM 4K字节 (000H—FFFH)

  7. 8051在逻辑上,即从用户角度上8051有三个存储空间: 片内外统一编址的程序存储器 片内外不统一编址的数据存储器 特殊功能寄存器(片内) • ★访问这几个不同的逻辑空间时,采用的指令: • 片内外程序存储器空间----MOVC • 片内数据存储器空间和SFR----MOV • 片外数据存储器地址空间----MOVX

  8. ¶52对应的RAM有384Byte,其中多出的128Byte只能进行间接寻址用 @ • ¶而C51是通过对自定义的数据类型来区分访问的存储空间的: • 片内外程序存储器空间----code • 片内数据存储器空间和SFR----data • 片外数据存储器地址空间----xdata • 片内间接寻址区间-------idata

  9. 存储器配置(片内RAM) • 片内RAM128字节(00H—7FH) FFH FFH SFR分布在80H-FFH 其中92个位可位寻址 52子系列才有 的RAM区 80H 80H 7FH 所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器 普通RAM区 89C51 128字节 30H 2FH 位寻址区 20H 1FH 工作寄存器区 00H

  10. 1FH 工作寄存器区3 18H 17H 工作寄存器区2 10H 0FH 工作寄存器区1 08H 07H R7 工作寄存器区0 06H R6 05H R5 R4 04H R3 03H R2 02H 01H R1 R0 00H 存储器配置(片内RAM) • 片内RAM前32个单元是工作寄存器区 (00H—1FH) FFH 52子系列才有 的RAM区 80H 7FH 普通RAM区 30H 2FH 位寻址区 20H 1FH 工作寄存器区 00H

  11. 7F 7E 7D 7C 7B 7A 79 78 2FH 位地址 47 46 45 44 43 42 41 40 28H 总共128个可按位寻址的位 3F 3E 3D 3C 3B 3A 39 38 27H 37 36 35 34 33 32 31 30 26H 2F 2E 2D 2C 2B 2A 29 28 25H 27 26 25 24 23 22 21 20 24H 1F 1E 1D 1C 1B 1A 19 18 23H 17 16 15 14 13 12 11 10 22H 0F 0E 0D 0C 0B 0A 09 08 21H 07 06 05 04 03 02 01 00 20H 单元地址 存储器配置(片内RAM) • 片内RAM中有128个可按位寻址的位。 位地址:00H—7FH 分布在:20H—2FH单元 FFH 52子系列才有 的RAM区 80H 7FH 普通RAM区 30H 2FH 位寻址区 20H 1FH 工作寄存器区 00H

  12. 这些可位寻址的空间,可通过执行指令直接对某一位进行操作,如置1、清0或判1、判0等,可用作软件标志位或用于位(布尔)处理。这是一般微机所不具备的,这种位寻址能力是8051所独有的。这些可位寻址的空间,可通过执行指令直接对某一位进行操作,如置1、清0或判1、判0等,可用作软件标志位或用于位(布尔)处理。这是一般微机所不具备的,这种位寻址能力是8051所独有的。 • 20H~2FH:既可以字节操作,又可以位操作,但是要用不同的指令来区分; • mov 20h,a • setb 00h • setb 20.0

  13. 存储器配置(片内RAM) • 89C51片内RAM128字节(00H—7FH) • 89C52片内RAM256字节(00H—0FFH) 只能寄存器间接寻址(P14) FFH FFH SFR分布在80H-FFH 其中92个位可位寻址 52子系列才有 的RAM区 80H 80H 89C52 256字节 7FH 普通RAM区 89C51 128字节 只能直接寻址 30H 2FH 位寻址区 20H 1FH 工作寄存器区 00H 既可间接寻址,又可直接寻址

  14. 程序存储器 FFFFH 外部 ROM 1000H 0FFFH 0FFFH 内部 ROM (EA=1) 外部 ROM (EA=0) 0000H 0000H

  15. 在程序存储器中,有6个单元具有特殊功能 0000H:8051复位后,PC=0000H,即程序从0000H 开始执行指令。 • 0003H:外部中断0入口。 • 000BH:定时器0溢出中断入口。 • 0013H:外部中断1入口。 • 001BH:定时器1溢出中断入口。 • 0023H:串行口中断入口。 • 52还有002BH对应T2中断。 • 使用时,通常在这些入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断程序起始地址,或者从0000H起始地址跳转到用户设计的初始程序上。

  16. org 0000h jmp main (跳过中断入口地址区) org 0100h main: mov p1,#55h mov r0,#3fh Loop: djnz r0,loop cpl a mov p1,a jmp main end

  17. 存储器配置(片内RAM) • 可寻址片外RAM 64K字节(0000H—FFFFH); • 可寻址片外ROM 64K字节(0000H—FFFFH); • 片内 Flash ROM 4K字节(0000H— FFFH); FFFFH FFFFH 可寻址片外RAM 可寻址片外ROM 89C51 64K字节 64K字节 片内 RAM FFFH 可寻址片内 Flash ROM FFH 4K 字节 80H 7FH 128字节 0000H 0000H 00H 000H

  18. 堆栈: 在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循先进后出和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。 功用: 1)子程序调用和中断服务时CPU自动将当前PC 值压栈保存,返回时自动将PC值弹栈。 2)保护现场/恢复现场 3)数据传输

  19. 堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。 复位后 SP=07H,数据进栈时:首先SP+1指向08H单元,第一个放进堆栈的数据将放进08H单元,然后SP再自动增 1,仍指着栈顶…… FFH 52子系列才有 的RAM区 数据进栈 80H 7FH SP栈顶 下一个进栈的数据将存在此 普通RAM区 30H 2FH 位寻址区 已经进栈的数据存放在此 初始 SP 20H 1FH 工作寄存器区 00H

  20. 堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。 从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶…… FFH 52子系列才有 的RAM区 数据出栈 80H 7FH SP栈顶 当前要出栈的数据 普通RAM区 30H 2FH 位寻址区 SP-1指向下一个将要出栈的数据 初始 SP 20H 1FH 工作寄存器区 00H

  21. 堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。 从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶…… FFH 52子系列才有 的RAM区 数据出栈 80H 7FH 普通RAM区 SP-1 指向新的栈顶,也就是下一个将要出栈的数据 30H 2FH 位寻址区 初始 SP 20H 1FH 工作寄存器区 00H

  22. 在实际应用中,常需在RAM区设置堆栈。80C51的堆栈一般设在30H~7FH的范围内。栈顶的位置由SP寄存器指示。复位时SP的初值为07H,在系统初始化时可以重新设置。在实际应用中,常需在RAM区设置堆栈。80C51的堆栈一般设在30H~7FH的范围内。栈顶的位置由SP寄存器指示。复位时SP的初值为07H,在系统初始化时可以重新设置。

  23. push a • push b • push PSW • ………. • pop a • pop b • pop PSW • 这样的指令顺序对不对?

  24. 89C51特殊功能寄存器(SFR) ▼特殊功能寄存器SFR(专用寄存器) 专用于控制、选择、管理、存放单片机内部各部分的工作方式、条件、状态、结果的寄存器。 ▼不同的SFR管理不同的硬件模块,负责不同的功能——各司其职 换言之:要让单片机实现预定的功能,必须有相应的硬件和软件,而软件中最重要的一项工作就是对SFR写命令(要求)。

  25. 与端口相关的(7个) • P0、P1、P2、P3: • 四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。 • SCON (SerialControl Register) • SBUF (Serial Date Buffer) • PCON (Power Control Register) 与定时/计数器相关的(6个) • TMOD (Timer/Counter ModeRegister) • 定时器工作模式寄存器。 • TCON (Timer/Counter ControlRegister) • 定时器控制寄存器。 • TH0、TL0 、TH1、TL1:分别是T0、T1的记数初值寄存器。

  26. 与中断相关的(2个) • IP (Interrupt PriorityRegister) • IE (Interrupt EnableRegister)

  27. 特殊功能寄存器(PC) 程序计数器PC(Program Counter) PC不是一个特殊功能寄存器SFR,但其作 用又十分重要和特殊!!! 特点: ▼它是16位的按机器周期自动增1计数器 ▼总指向下一条指令所在首地址(当前PC值) ▼一切分支/跳转/调用/中断/复位 等操作的本质就是:改变 PC 值

  28. DPTR (Data Pointer)(分成DPH、DPL两个): • 数据指针可以用它来访问外部数据存储器中的任一单元,也可以作为通用寄存器来用,由我们自已决定如何使用。

  29. 数据指针寄存器DPTR • 数据指针DPTR是一个 16 位的专用寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。既可作为一个 16 位寄存器DPTR来处理, 也可作为两个独立的 8 位寄存器DPH和DPL来处理。  • DPTR 主要用来存放 16 位地址, 当对 64 KB外部数据存储器空间寻址时, 作为间址寄存器用。在访问程序存储器时, 用作基址寄存器。 • mov a,@a+dptr

  30. 特殊功能寄存器(P0—P3,SP,A,B) 89C51有21个SFR(89C52有26个) P.33~34 已知的P0、P1、P2、P3等四个8位I/O口分别由名为P0、P1、P2、P3四个SFR代表。 堆栈指针寄存器 SP(Stack Pointer): 总是指向栈顶,压栈时先 (SP)+1 然后数据进栈;弹栈时数据先出栈 然后(SP)-1。 累加器 ACC:一个被众多指令用得最频繁的特殊功能寄存器(如:运算、数据传输…)。 副累加器 B:一个经常与 ACC配合在一起使用的特殊功能寄存器(如:乘法、除法),此外,它也经常当作普通寄存器使用。

  31. 特殊功能寄存器(PSW) 程序状态字寄存器PSW: PSW.7 PSW.6 PSW.5 PSW.0 CY AC F0 RS1 RS0 OV P ▼CY(PSW.7)进位/借位标志位。若ACC在运算过程中发生了进位或借位,则CY=1;否则=0。它也是布尔处理器的位累加器,可用于布尔操作。 ▼AC(PSW.6)半进位/借位标志位。若ACC在运算过程中,D3位向D4位发生了进位或借位,则CY=1,否则=0。机器在执行“DA A”指令时自动要判断这一位,我们可以暂时不关心它。 ▼F0 (PSW.5)可由用户定义的标志位。

  32. 特殊功能寄存器(PSW) 程序状态字寄存器PSW: PSW.7 PSW.6 PSW.5 PSW.0 CY AC F0 RS1 RS0 OV P • 例:78H+97H • 0111 1000 • +1001 0111 • 1 0000 1111 有进位 CY=1 没有半进位AC=0

  33. 程序状态字寄存器PSW(续): PSW.7 PSW.4 PSW.3 PSW.0 CY AC F0 RS1 RS0 OV P ▼RS1(PSW.4)、RS0(PSW.3)工作寄存器组选择位。 RS1,RS0 = 0 0 则选择了工作寄存器组0 区R0~R7分别代表08H ~0FH单元。 RS1,RS0 = 0 1 则选择了工作寄存器组1 区R0~R7分别代表08H ~0FH单元。 RS1,RS0 = 1 0 则选择了工作寄存器组2 区 R0~R7分别代表10H ~17H单元。 RS1,RS0 = 1 1 则选择了工作寄存器组3 区R0~R7分别代表18H ~1FH单元。

  34. 片内RAM前32个单元(00H—1FH)是工作寄存器区(由PSW中的RS1,RS0决定)片内RAM前32个单元(00H—1FH)是工作寄存器区(由PSW中的RS1,RS0决定) 1FH FFH 工作寄存器区3 工作寄存器区2 52子系列才有 的RAM区 工作寄存器区1 08H 07H R7 80H 工作寄存器区0 06H 7FH R6 05H R5 普通RAM区 R4 04H 30H R3 03H 2FH R2 02H 位寻址区 20H 01H R1 1FH 工作寄存器区 R0 00H 00H

  35. 程序状态字寄存器PSW(续): PSW.7 PSW.2 PSW.1 PSW.0 CY AC F0 RS1 RS0 OV P ▼OV (PSW.2)溢出标志位。 OV=1时特指累加器在进行带符号数(-128—+127)运算时出错(超出范围);OV=0时未出错。 ▼PSW.1 未定义。 ▼P (PSW.0)奇偶标志位。 P=1表示累加器中“1”的个数为奇数 P=0表示累加器中“1”的个数为偶数 CPU随时监视着ACC中的“1”的个数,并反映在PSW中 例:某运算结果是78H(01111000),P=0。 它常用在校验串行通信中的数据是否出错。

  36. 小结 89C51单片机存储器配置 • 片内RAM 128字节(00H—7FH); 片内RAM前32个单元是工作寄存器区(00H—1FH) 片内RAM有128个可按位寻址的位,占16个单元。 位地址编号为:00H—7FH 分布在:20H—2FH单元 • 片内21个特殊功能寄存器(SFR)中:地址号能被 8整除的 SFR中的各位也可按位寻址 • 可寻址片外RAM 64K字节 (0000H—FFFFH) • 可寻址片外ROM 64K字节 (0000H—FFFFH) • 片内 Flash ROM 4K字节 (000H—FFFH)

  37. 小结 存储器配置(片内RAM) • 片内RAM128字节(00H—7FH) FFH FFH SFR分布在80H-FFH 其中92个位可位寻址 52子系列才有 的RAM区 80H 80H 7FH 普通RAM区 所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器 128字节 30H 2FH 位寻址区 20H 1FH 工作寄存器区 00H

  38. 小结 单片机存储器配置(片外RAM/ROM) • 可寻址片外RAM 64K字节(0000H—FFFFH); • 可寻址片外ROM 64K字节(0000H—FFFFH); • 片内 Flash ROM 4K字节 (000H—FFFH); FFFFH FFFFH 可寻址片外RAM 可寻址片外ROM 89C51 64K字节 64K字节 片内 RAM FFFH 可寻址片内 Flash ROM FFH 4K字节 80H 7FH 128字节 0000H 0000H 00H 000H

More Related