[计算机硬件及网络]第二章 89C51单片机的硬件结构和原理
MCS-51单片机基本组成 下图所示为89C51单片机的基本组成,可以看出在该芯片上集成了一个微型计算机 8051的存储器组织 这些可位寻址的空间,可通过执行指令直接对某一位进行操作,如置1、清0或判1、判0等,可用作软件标志位或用于位(布尔)处理。这是一般微机所不具备的,这种位寻址能力是8051所独有的。 20H~2FH:既可以字节操作,又可以位操作,但是要用不同的指令来区分; mov 20h,a setb 00h setb 20.0 程序存储器 在实际应用中,常需在RAM区设置堆栈。80C51的堆栈一般设在30H~7FH的范围内。栈顶的位置由SP寄存器指示。复位时SP的初值为07H,在系统初始化时可以重新设置。 push a push b push PSW ………. pop a pop b pop PSW 这样的指令顺序对不对? 数据指针寄存器DPTR 数据指针DPTR是一个 16 位的专用寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。既可作为一个 16 位寄存器DPTR来处理, 也可作为两个独立的 8 位寄存器DPH和DPL来处理。 DPTR 主要用来存放 16 位地址, 当对 64 KB外部数据存储器空间寻址时, 作为间址寄存器用。在访问程序存储器时, 用作基址寄存器。 mov a,@a+dptr 1.4.4 实训 单灯点亮 低功耗工作方式 存储单元0000H~0002H: 80C51上电复位后引导程序的存放单元。 80C51上电复位后CPU总是从0000H单元开始执行。如果在这3个单元中存放一条转移指令(如LJMP 1000H),单片机就会转移到1000H单元,开始执行应用程序。应用程序的引导过程见图1-11。 图1-11 应用程序的引导过程 0003H~002AH单元: 被均匀地分为5段,用作5个中断服务程序的入口;只有增强型单片机才占用002BH单元。 可寻址片外RAM 64K字节 (0000H—FFFFH); 可寻址片外ROM 64K字节 (0000H—FFFFH); 片内 Flash ROM 4K字节 (0000H— FFFH); FFFFH 0000H 可寻址片外RAM 64K字节 FFFFH 0000H 可寻址片外ROM 64K字节 FFFH 000H 可寻址片内 Flash ROM 4K 字节 89C51 7FH 00H 片内 RAM 128字节 FFH 80H 存储器配置(片内RAM) 堆栈: 在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循先进后出和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。 功用: 1)子程序调用和中断服务时CPU自动将当前PC 值压栈保存,返回时自动将PC值弹栈。 2)保护现场/恢复现场 3)数据传输 00H 20H 2FH 7FH 1FH 30H 80H FFH 52子系列才有 的RAM区 普通RAM区 位寻址区 工作寄存器区 SP栈顶 下一个进栈的数据将存在此 数据进栈 已经进栈的数据存放在此 初始 SP 复位后 SP=07H,数据进栈时:首先SP+1指向08H单元,第一个放进堆栈的数据将放进08H单元,然后SP再自动增 1,仍指着栈顶…… 堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。 从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶…… 00H 20H 2FH 7FH 1FH 30H 80H FFH 52子系列才有 的RAM区 普通RAM区 位寻址区 工作寄存器区 SP栈顶 当前要出栈的数据 数据出栈 SP-1指向下一个将要出栈的数据 初始 SP 堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。 从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶…… 00H 20H 2FH 7FH 1FH 30H 80H FFH 52子系列才有 的RAM区 普通RAM区 位寻址区 工作寄存器区 SP-1 指向新的栈顶,也就是下一个将要出栈的数据 数据出栈 初始 SP 堆栈区由特殊功能寄存器堆栈指针SP