1存储器、堆栈、SFR2数据存储器——RAM(RandomAccessMemory)程序存储器——ROM(ReadOnlyMemory)闪速存储器——FlashMemoryEPROM——(UV)ErazibleProgrammableROMEEPROM/E2PROM——ElectricalErasableProgrammableROM静态存储器SRAM——StaticRAM(动态存储器DRAM——DynamicRAM)按字节寻址:每个字节(8个位)占一个地址按位寻址:有的存储器每一个位就有一个地址单片机的存储器——几个有关的概念:38051的存储器组织8051存储器可以分成两大类:﹡RAM,CPU在运行时能随时进行数据的写入和读出,但在关闭电源时,其所存储的信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈。﹡ROM是一种写入信息后不易改写的存储器。断电后,ROM中的信息保留不变。用来存放固定的程序或数据,如系统监控程序、常数表格等。42.1.1普林斯顿结构一般微机通常只有一个逻辑空间,可以随意安排ROM或RAM。访问存储器时,同一地址对应唯一的存储单元,可以是ROM也可以是RAM,并用同类访问指令。这种结构称为普林斯顿结构。52.1.2哈佛结构◆8051单片机与一般微机的存储器配置方式很不相同。◆51单片机的存储器在物理结构上分为程序存储空间和数据存储空间,共有四个:片内和片外程序存储空间以及片内和片外数据存储空间,这种在物理结构上把程序存储器和数据存储器分开的结构形式称为哈佛结构。单片机存储器配置片内RAM128字节(00H—7FH);片内RAM前32个单元是工作寄存器区(00H—1FH)片内RAM有128个可按位寻址的位,占16个单元。位地址编号为:00H—7FH,分布在20H—2FH单元片内21个特殊功能寄存器(SFR)中:地址号能被8整除的SFR中的各位也可按位寻址(P.33-34)可寻址片外RAM64K字节(0000H—FFFFH)可寻址片外ROM64K字节(0000H—FFFFH)片内FlashROM4K字节(000H—FFFH)8★8051在逻辑上,即从用户角度上8051有三个存储空间:片内外统一编址的程序存储器片内外不统一编址的数据存储器特殊功能寄存器(片内)★访问这几个不同的逻辑空间时,采用的指令:片内外程序存储器空间----MOVC片内数据存储器空间和SFR----MOV片外数据存储器地址空间----MOVX¶52对应的RAM有384Byte,其中多出的128Byte只能进行间接寻址用@¶而C51是通过对自定义的数据类型来区分访问的存储空间的:片内外程序存储器空间----code片内数据存储器空间和SFR----data片外数据存储器地址空间----xdata片内间接寻址区间-------idata10存储器配置(片内RAM)片内RAM128字节(00H—7FH)00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SFR分布在80H-FFH其中92个位可位寻址80HFFH所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器89C51128字节1100H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区R0R2R1R3R4R5R6R707H02H01H00H06H04H05H03H08H1FH工作寄存器区3工作寄存器区2工作寄存器区1工作寄存器区00FH10H17H18H片内RAM前32个单元是工作寄存器区(00H—1FH)存储器配置(片内RAM)1200H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区27H22H21H20H26H24H25H23H28H2FH单元地址07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241407F7E7D7C7B7A7978位地址总共128个可按位寻址的位片内RAM中有128个可按位寻址的位。位地址:00H—7FH分布在:20H—2FH单元存储器配置(片内RAM)13这些可位寻址的空间,可通过执行指令直接对某一位进行操作,如置1、清0或判1、判0等,可用作软件标志位或用于位(布尔)处理。这是一般微机所不具备的,这种位寻址能力是8051所独有的。20H~2FH:既可以字节操作,又可以位操作,但是要用不同的指令来区分;mov20h,asetb00hsetb20.0存储器配置(片内RAM)89C51片内RAM128字节(00H—7FH)89C52片内RAM256字节(00H—0FFH)00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SFR分布在80H-FFH其中92个位可位寻址80HFFH89C51128字节89C52256字节只能直接寻址只能寄存器间接寻址(P14)既可间接寻址,又可直接寻址(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH16在程序存储器中,有6个单元具有特殊功能0003H:外部中断0入口。000BH:定时器0溢出中断入口。0013H:外部中断1入口。001BH:定时器1溢出中断入口。0023H:串行口中断入口。52还有002BH对应T2中断。使用时,通常在这些入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断程序起始地址,或者从0000H起始地址跳转到用户设计的初始程序上。0000H:8051复位后,PC=0000H,即程序从0000H开始执行指令。17org0000hjmpmain(跳过中断入口地址区)org0100hmain:movp1,#55hmovr0,#3fhLoop:djnzr0,loopcplamovp1,ajmpmainend18可寻址片外RAM64K字节(0000H—FFFFH);可寻址片外ROM64K字节(0000H—FFFFH);片内FlashROM4K字节(0000H—FFFH);FFFFH0000H可寻址片外RAM64K字节FFFFH0000H可寻址片外ROM64K字节FFFH000H可寻址片内FlashROM4K字节89C517FH00H片内RAM128字节FFH80H存储器配置(片内RAM)19堆栈:在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循先进后出和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。功用:1)子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。2)保护现场/恢复现场3)数据传输2000H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SP栈顶下一个进栈的数据将存在此数据进栈已经进栈的数据存放在此初始SP复位后SP=07H,数据进栈时:首先SP+1指向08H单元,第一个放进堆栈的数据将放进08H单元,然后SP再自动增1,仍指着栈顶……堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。21从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶……00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SP栈顶当前要出栈的数据数据出栈SP-1指向下一个将要出栈的数据初始SP堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。22从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶……00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SP-1指向新的栈顶,也就是下一个将要出栈的数据数据出栈初始SP堆栈区由特殊功能寄存器堆栈指针SP管理堆栈区可以安排在RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。23在实际应用中,常需在RAM区设置堆栈。80C51的堆栈一般设在30H~7FH的范围内。栈顶的位置由SP寄存器指示。复位时SP的初值为07H,在系统初始化时可以重新设置。24pushapushbpushPSW……….popapopbpopPSW这样的指令顺序对不对?2589C51特殊功能寄存器(SFR)▼特殊功能寄存器SFR(专用寄存器)专用于控制、选择、管理、存放单片机内部各部分的工作方式、条件、状态、结果的寄存器。▼不同的SFR管理不同的硬件模块,负责不同的功能——各司其职换言之:要让单片机实现预定的功能,必须有相应的硬件和软件,而软件中最重要的一项工作就是对SFR写命令(要求)。26标识符号地址寄存器名称ACC0E0H累加器B0F0HB寄存器PSW0D0H程序状态字SP81H堆栈指针DPTR82H、83H数据指针(16位)含DPL和DPHIE0A8H中断允许控制寄存器IP0B8H中断优先控制寄存器P080HI/O口0寄存器P190HI/O口1寄存器P20A0HI/O口2寄存器27标识符号地址寄存器名称P30B0HI/O口3寄存器PCON87H电源控制及波特率选择寄存器SCON98H串行口控制寄存器SBUF99H串行数据缓冲寄存器TCON88H定时控制寄存器TMOD89H定时器方式选择寄存器TL08AH定时器0低8位TH08CH定时器0高8位TL18BH定时器1低8位TH18DH定时器1高8位28P0、P1、P2、P3:四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。SCON(SerialControlRegister)SBUF(SerialDateBuffer)PCON(PowerControlRegister)与端口相关的(7个)与定时/计数器相关的(6个)TMOD(Timer/CounterModeRegister)定时器工作模式寄存器。TCON(Timer/CounterControlRegister)定时器控制寄存器。TH0、TL0、TH1、TL1:分别是T0、T1的记数初值寄存器。29IP(InterruptPriorityRegister)IE(InterruptEnableRegister)与中断相关的(2个)30程序计数器PC(ProgramCounter)PC不是一个特殊功能寄存器SFR,但其作用又十分重要和特殊!!!特点:▼它是16位的按机器周期自动增1计数器▼一切分支/跳转/调用/中断/复位等操作的本质就是:改变PC值▼总指向下一条指令所在首地址(当前PC值)特殊功能寄存器(PC)(DataPointer)(分成DPH、DPL两个):数据指针可以用它来访问外部数据存储器中的任一单元,也可以作为通用寄存器来用,由我们自已决定如何使用。32数据指针寄存器DPTR数据指针DPTR是一个16位的专用寄存器,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。既可作为一个16位寄存器DPTR来处理,也可作为两个独立的8位寄存器DPH和DPL来处理。DPT