1第2章AT89S51单片机的硬件结构2内容概要本章介绍AT89S51单片机的片内硬件结构。片内外设资源的基本功能及工作原理片内存储器结构常见的特殊功能寄存器的基本功能复位电路与时钟电路的设计单片机最小系统掌握3指令(程序)硬件控制图2-1AT89S51单片机片内结构2.1AT89S51单片机的硬件组成AT89S51单片机具有如下外围部件及特性:(1)8位CPU;(2)数据存储器(128BRAM);(3)程序存储器(4KBFlashROM);(4)4个8位可编程并行I/O口(P0口、P1口、P2口和P3口);(5)2个可编程16位定时器/计数器;6(6)1个通用的全双工的异步收发串行口(UART);(7)中断系统具有5个中断源、5个中断向量;(8)特殊功能寄存器(SFR)26个;(9)1个看门狗定时器(WDT);7AT89S51片内的各部件通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统微型计算机结构模式,但CPU对各种外围部件的控制是采用特殊功能寄存器SFR(SpecialFunctionRegister)的集中控制方式。下面对图2-1中的片内各部件作简单介绍。(1)CPU(微处理器):8位的CPU,包括了运算器和控制器两大部分,此外还有面向控制的位处理和位控功能。(2)数据存储器(RAM):片内为128B(增强型的52子系列为256B),片外最多还可外扩64KB的数据存储器。(3)程序存储器(FlashROM):用来存储程序。AT89S51片内有4KB的Flash存储器,若片内程序存储器容量不够,片外最多可外扩64KB程序存储器。(4)中断系统:具有5个中断源,2级中断优先权。(5)定时器/计数器:片内有2个16位的定时器/计数器具有4种工作方式。(6)串行口:1个全双工的异步串行口(UART),具有4种工作方式。89(7)4个8位的并行口:P0口、P1口、P2口和P3口。(8)特殊功能寄存器(SFR):共有26个特殊功能寄存器,用于CPU对片内各外围部件进行管理、控制和监视。特殊功能寄存器实际上是片内各外围部件的控制寄存器和状态寄存器,这些特殊功能寄存器映射在片内RAM区的80H~FFH的地址区间内。(9)1个看门狗定时器WDT,当单片机由于干扰而使程序陷入死循环或跑飞状态时,可引起单片机复位,使程序恢复正常运行。2.2AT89S51的引脚功能掌握AT89S51单片机,应首先熟悉并掌握各引脚的功能。AT89S51与各种8051单片机的引脚是互相兼容的。目前,AT89S51单片机多采用40只引脚的塑料双列直插封装(DIP)方式,如图2-2所示。10图2-2AT89S51双列直插封装方式的引脚40只引脚按功能可分为如下3类:(1)电源及时钟引脚—VCC、VSS;XTAL1、XTAL2;(2)控制引脚—PSEN、ALE/PROG、EA/VPP、RST(即RESET);(3)I/O口引脚—P0、P1、P2与P3,为4个8位并行I/O口的外部引脚。下面结合图2-2介绍各引脚的功能。2.2.1电源及时钟引脚1.电源引脚(1)VCC(40脚):接+5V电源。(2)VSS(20脚):接数字地。122.时钟引脚(1)XTAL1(19脚):片内振荡器的反相放大器和外部时钟发生器的输入端。使用片内的振荡器时,该引脚外接石英晶体和微调电容。当采用外部的独立时钟源时,本引脚接外部时钟振荡器的信号。(2)XTAL2(18脚):片内振荡器反相放大器的输出端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容。当使用外部时钟源时,本引脚悬空。13142.2.2控制引脚控制引脚提供控制信号,有的引脚还具有复用功能。(1)RST(RESET,9脚)复位信号输入端,高电平有效。在此引脚加上持续时间大于2个机器周期的高电平,就可使单片机复位。在单片机正常工作时,此引脚应为≤0.5V的低电平。当看门狗定时器溢出输出时,该引脚将输出长达96个时钟振荡周期的高电平。(2)EA/VPP(EnableAddress/VoltagePulseofPrograming,31脚)(ExternalAccessEnable)为该引脚的第一功能:外部程序存储器访问允许控制端。当EA=1时,在单片机片内的PC值不超出0FFFH(即不超出片内4KBFlash存储器的最大地址范围)时,单片机读片内程序存储器(4KB)中的程序代码,但PC值超出0FFFH(即超出片内4KBFlash存储器地址范围)时,将自动转向读取片外60KB(1000H~FFFFH)程序存储器中的程序代码。1516当EA=0时,只读取外部的程序存储器中的内容,读取的地址范围为0000H~FFFFH,片内的4KBFlash程序存储器不起作用。VPP为该引脚的第二功能,在对片内Flash进行编程时,VPP引脚接入编程电压。(3)ALE/PROG(AddressLatchEnable/PROGramming,30脚)ALE的第一功能为CPU访问外部程序存储器或外部数据存储器提供低8位地址锁存信号,将单片机P0口发出的低8位地址锁存在片外地址锁存器中。PROG为该引脚的第二功能,在对片内Flash存储器编程时,此引脚作为编程脉冲输入端。17(4)PSEN(ProgramStrobeENable,29脚)片内或片外程序存储器的读选通信号,低电平有效。2.2.3并行I/O口引脚(1)P0口:P0.7~P0.0引脚漏极开路的双向I/O口。当AT89S51扩展外部存储器及I/O接口芯片时,P0口作为地址总线(低8位)及数据总线的分时复用端口。P0口也可作为通用I/O口使用,但需加上拉电阻,这时为准双向口。P0口可驱动8个LS型TTL负载。19(2)P1口:P1.7~P1.0引脚准双向I/O口,具有内部上拉电阻,可驱动4个LS型TTL负载。P1口是完全可提供给用户使用的准双向I/O口。P1.5/MOSI、P1.6/MISO和P1.7/SCK也可用于对片内Flash存储器的串行编程和校验,它们分别是串行数据输入、串行数据输出和移位脉冲引脚。(3)P2口:P2.7~P2.0引脚准双向I/O口,具有内部上拉电阻,可驱动4个LS型TTL负载。当AT89S51扩展外部存储器及I/O口时,P2口作为高8位地址总线用,输出高8位地址。P2口也可作为通用的I/O口使用。2021(4)P3口:P3.7~P3.0准双向I/O口,具有内部上拉电阻。P3口可作为通用的I/O口使用,可驱动4个LS型TTL负载。P3口还可提供第二功能,其第二功能定义如表2-1所示,读者应熟记。22综上所述,P0口作为地址总线(低8位)及数据总线使用时,为双向口。作为通用的I/O口使用时,需加上拉电阻,这时为准双向口。而P1口、P2口、P3口均为准双向口。双向口P0与P1口、P2口、P3口这3个准双向口相比,多了一个高阻输入的“悬浮”态。这是由于P0口作为数据总线使用时,多个数据源都挂在数据总线上,当P0口不需与其他数据源打交道时,需要与数据总线高阻“悬浮”隔离。而准双向I/O口则无高阻的“悬浮”状态。另外,准双向口作通用I/O的输入口使用时,一定要向该口先写入“1”。以上的准双向口与双向口的差别,在学习本章2.5节的P0~P3口的内部结构后,将会有更深入的理解。232.3AT89S51的CPUAT89S51的CPU是由运算器和控制器构成。2.3.1运算器运算器主要用来对操作数进行算术、逻辑和位操作运算。算术逻辑运算单元ALU累加器A位处理器程序状态字寄存器PSW两个暂存器251.算术逻辑运算单元ALUALU的功能强,不仅可对8位变量进行逻辑与、或、异或以及循环、求补和清0等操作,还可以进行加、减、乘、除等基本算术运算。ALU还具有位操作功能,可对位(bit)变量进行位处理,如置“1”、清“0”、求补、测试转移及逻辑“与”、“或”等操作。2.累加器A累加器A是CPU中使用最频繁的一个8位寄存器。累加器的作用如下。(1)是ALU单元的输入数据源之一,同时又是ALU运算结果的存放单元。(2)CPU中数据传送大多都通过累加器A,故累加器A又相当于数据的中转站。为解决累加器结构所带来的“瓶颈堵塞”问题,AT89S51单片机增加了一部分可以不经过累加器A的传送指令。累加器A的进位位Cy(位于程序状态字特殊功能寄存器PSW中)是特殊的,因为它同时又是位处理器的位累加器。26273.程序状态字寄存器PSWAT89S51单片机的程序状态字寄存器(ProgramStatusWord,PSW)位于单片机片内的特殊功能寄存器区,字节地址为D0H。PSW的不同位包含了程序运行状态的不同信息,其中4位保存当前指令执行后的状态,以供程序查询和判断。PSW格式见图2-3。28INT0INT1WRRDPSW中各个位的功能如下。(1)Cy(PSW.7)进位标志位:也可写为C。在执行算术运算和逻辑运算指令时,若有进位/借位,则Cy=1;否则,Cy=0。在位处理器中,它是位累加器。(2)Ac(PSW.6)辅助进位标志位:Ac标志位用于在BCD码运算时进行十进位调整。即在运算时,当D3位向D4位产生进位或借位时,Ac=1;否则,Ac=0。2930(3)F0(PSW.5)用户使用的标志位:可用指令来使它置“1”或清“0”,也可用指令来测试该标志位,根据测试结果控制程序的流向。编程时,用户应当充分利用该标志位。(4)RS1、RS0(PSW.4、PSW.3)4组工作寄存器区选择控制位1和位0:这两位用来选择片内RAM区中的4组工作寄存器区中的某一组为当前工作寄存区,RS1、RS0与所选择的4组工作寄存器区的对应关系如表2-2所示。(5)OV(PSW.2)溢出标志位:当执行算术指令时,OV用来指示运算结果是否产生溢出。如果结果产生溢出,OV=1;否则,OV=0。(6)PSW.1位:保留位,未用。(7)P(PSW.0)奇偶标志位:该标志位表示指令执行完时,累加器A中“1”的个数是奇数还是偶数。P=1,表示A中“1”的个数为奇数。P=0,表示A中“1”的个数为偶数。该标志位对串行口通信中的数据传输有重要的意义。在串行通信中,常用奇偶检验的方法来检验数据串行传输的可靠性。32332.3.2控制器控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动协调地工作。控制器主要包括程序计数器、指令寄存器、指令译码器、定时及控制电路等。其功能是控制指令的读入、译码和执行,从而对单片机的各功能部件进行定时和逻辑控制。程序计数器PC是控制器中最基本的寄存器,它是一个独立的16位计数器,用户不能直接使用指令对PC进行读写。当单片机复位时,PC中的内容为0000H,即CPU从程序存储器0000H单元取指令,开始执行程序。PC的基本工作过程是:CPU读取指令时,PC内容作为欲读取指令的地址发送给程序存储器,然后程序存储器按此地址输出指令字节,同时PC自动加1,这也是为什么PC被称为程序计数器的原因。由于PC实质上是作为程序寄存器的地址指针,所以也称其为程序指针。PC内容的变化轨迹决定了程序的流程。由于PC是用户不可直接访问的,当顺序执行程序时自动加1;执行转移程序或子程序或中断子程序调用时,由运行的指令自动将其内容更改成所要转移的目的地址。3435程序计数器的计数宽度决定了访问程序存储器的地址范围。AT89S51单片机中的PC位数为16位,故可对64KB(=216B)的程序存储器进行寻址。2.4AT89S51单片机存储器的结构AT89S51单片机存储器结构为哈佛结构,即程序存储器空间和数据存储器空间是各自独立的。AT89S51单片机的存储器空间可划分为如下4类。1.程序存储器空间单片机能够按照一定的次序工作,是由于程序存储器中存放了经调试正确的程序。程序存储器可以分为片内和片外两部分。AT89S51单片机的片内程序存储器为4KB的Flash存储器,编程和擦除完全是电气实现,且速度快。可使用编程器对其编程,也可在线编程。36当AT89S51单片机的片内的4KB的Flash存储器不够