1、第章单片机的片内硬件结构2内容概要内容概要 本章介绍本章介绍AT89S51单片机的单片机的片内硬件结构。片内硬件结构。片内片内外设资源外设资源的基本功能及工作原理的基本功能及工作原理片内片内存储器存储器结构结构常见的常见的特殊功能寄存器特殊功能寄存器的基本功能的基本功能复位电路复位电路与与时钟电路时钟电路的设计的设计单片机最小系统单片机最小系统掌掌握握3指令(程序)硬件控制图图2-1 AT89S51单片机片内结构单片机片内结构2.1 AT89S51单片机的硬件组成单片机的硬件组成 AT89S51单片机具有如下外围部件及特性:单片机具有如下外围部件及特性:(1)8位位CPU;(2)数据数据存储器
2、(存储器(128B RAM););(3)程序程序存储器(存储器(4KB Flash ROM););(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););7 AT89S51片内的片内的各部件各部件通过片内单一总线连接
3、通过片内单一总线连接而成,其基本而成,其基本结构依旧是结构依旧是CPU加上加上外围芯片外围芯片的传统微型计算机结构模式,但的传统微型计算机结构模式,但CPU对各种外围部件的控制是采用特殊功能寄存器对各种外围部件的控制是采用特殊功能寄存器SFR(Special Function Register)的集中控制方式。)的集中控制方式。下面对图下面对图2-1中的片内各部件作简单介绍。中的片内各部件作简单介绍。(1)CPU(微处理器):(微处理器):8位的位的CPU,包括了,包括了运算器运算器和和控制器控制器两大部分,此外还有面向控制的两大部分,此外还有面向控制的位处理位处理和和位控功能。位控功能。(2
4、)数据存储器)数据存储器(RAM):):片内片内为为128B(增强型的增强型的52子系列为子系列为256B),片外最多还可),片外最多还可外扩外扩64KB的数据存储器。的数据存储器。(3)程序存储器)程序存储器(Flash ROM):用来存储程序。):用来存储程序。AT89S51片内有片内有4KB的的Flash存储器,若片内程序存存储器,若片内程序存储器容量不够,片外最多可储器容量不够,片外最多可外扩外扩64KB程序存储器。程序存储器。(4)中断系统:)中断系统:具有具有5个中断源,个中断源,2级中断优先权。级中断优先权。(5)定时器)定时器/计数器:计数器:片内有片内有2个个16位位的定时器
5、的定时器/计数器计数器具有具有4种工作方式。种工作方式。(6)串行口:)串行口:1个个全双工的异步串行口(全双工的异步串行口(UART),具),具有有4种工作方式。种工作方式。89(7)4个个8位的并行口:位的并行口:P0口、口、P1口、口、P2口和口和P3口。口。(8)特殊功能寄存器()特殊功能寄存器(SFR):):共有共有26个个特殊功能寄特殊功能寄存器,用于存器,用于CPU对片内各外围部件进行管理、控制和监对片内各外围部件进行管理、控制和监视。特殊功能寄存器实际上是片内视。特殊功能寄存器实际上是片内各外围部件的控制寄各外围部件的控制寄存器和状态寄存器,存器和状态寄存器,这些特殊功能寄存器
6、映射在片内这些特殊功能寄存器映射在片内RAM区的区的80HFFH的地址区间内。的地址区间内。(9)1个看门狗定时器个看门狗定时器WDT,当单片机由于干扰而使,当单片机由于干扰而使程序陷入死循环或跑飞状态时,可引起程序陷入死循环或跑飞状态时,可引起单片机复位,单片机复位,使使程序恢复正常运行。程序恢复正常运行。2.2 AT89S51的引脚功能的引脚功能 掌握掌握AT89S51单片机,应首先熟悉并掌握各引单片机,应首先熟悉并掌握各引脚的功能。脚的功能。AT89S51与各种与各种8051单片机的引脚是互单片机的引脚是互相兼容的。目前,相兼容的。目前,AT89S51单片机多采用单片机多采用40只引脚只
7、引脚的塑料的塑料双列直插封装(双列直插封装(DIP)方式,如图方式,如图2-2所示。所示。10图图2-2 AT89S51双列直插封装方式的引脚双列直插封装方式的引脚 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介绍各引脚的功能。介绍各引脚的功能。电源及时钟引脚电源及时钟引脚1
8、电源引脚电源引脚(1)VCC(40脚):接脚):接+5V电源。电源。(2)VSS(20脚):接数字地。脚):接数字地。12 2时钟引脚时钟引脚(1)XTAL1(19脚):脚):片内振荡器的反相放大器和外片内振荡器的反相放大器和外部时钟发生器的输入端。部时钟发生器的输入端。使用片内的振荡器时,使用片内的振荡器时,该引该引脚脚外接石英晶体和微调电容。外接石英晶体和微调电容。当当采用外部的独立时钟采用外部的独立时钟源时,源时,本引脚本引脚接外部时钟振荡器的信号。接外部时钟振荡器的信号。(2)XTAL2(18脚):脚):片内振荡器反相放大器的输出片内振荡器反相放大器的输出端。当端。当使用片内振荡器时,
9、使用片内振荡器时,该引脚该引脚连接外部石英晶体连接外部石英晶体和微调电容。和微调电容。当当使用外部时钟源时,使用外部时钟源时,本引脚本引脚悬空。悬空。1314控制引脚控制引脚控制引脚控制引脚提供控制信号,提供控制信号,有的引脚还具有复用功能。有的引脚还具有复用功能。(1)RST(RESET,9脚)脚)复位信号输入端,复位信号输入端,高电平有效。高电平有效。在此引脚加上在此引脚加上持续持续时间时间大于大于2个机器周期的高电平,个机器周期的高电平,就可使就可使单片机复位。单片机复位。在在单片机正常工作时,此引脚应为单片机正常工作时,此引脚应为0.5V的低电平。的低电平。当看门狗定时器溢出输出时,该
10、引脚将输出长达当看门狗定时器溢出输出时,该引脚将输出长达96个时钟振荡周期的高电平。个时钟振荡周期的高电平。(2)EA/VPP(Enable Address/Voltage Pulse of Programing,31脚脚)(External Access Enable)为该引脚的第一功能:)为该引脚的第一功能:外部程序外部程序存储器访问允许控制端。存储器访问允许控制端。当当EA=1时,在单片机片内的时,在单片机片内的PC值不超出值不超出0FFFH(即不超(即不超出片内出片内4KB Flash存储器的最大地址范围)时,单片机读片存储器的最大地址范围)时,单片机读片内程序存储器(内程序存储器(4
11、KB)中的程序代码,但)中的程序代码,但PC值值超出超出0FFFH(即超出片内即超出片内4KB Flash存储器地址范围)时,将自动转向存储器地址范围)时,将自动转向读读取片外取片外60KB(1000HFFFFH)程序存储器中的程序代码。程序存储器中的程序代码。1516当当EA=0时,时,只读取外部的程序存储器中的内容,只读取外部的程序存储器中的内容,读取读取的地址范围为的地址范围为0000HFFFFH,片内片内的的4KB Flash 程序程序存储器不起作用。存储器不起作用。VPP为该引脚的第二功能,在对片内为该引脚的第二功能,在对片内Flash进行编程进行编程时,时,VPP引脚接入编程电压。
12、引脚接入编程电压。由于PC实质上是作为程序寄存器的地址指针,所以也称其为程序指针。WDIDLE:WDT在空闲模式下的禁止/允许位。(1)整个程序存储器空间可分为片内和片外两部分,CPU究竟是访问片内的还是片外的程序存储器,可由引脚上所接的电平来确定。CPU输出0时,Q=0,场效应管导通,P2.2)溢出标志位:当执行算术指令时,OV用来指示运算结果是否产生溢出。ALU还具有位操作功能,可对位(bit)变量进行位处理,如置“1”、清“0”、求补、测试转移及逻辑“与”、“或”等操作。1个机器周期包括12个时钟周期,分6个状态:S1S6。1字节数据弹出堆栈后,SP自动减1。XTAL1、XTAL2;堆栈
13、的操作有两种:一种是数据压入(PUSH)堆栈,另一种是数据弹出(POP)堆栈。能不能不要人来监视,使系统摆脱失控状态,重新从0000H地址处执行程序呢?这时可采用“看门狗”技术。单片机应用系统受到干扰可能会引起程序“跑飞”或“死循环”,会使系统失控。而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期。由于外部中断0的中断服务程序入口地址为0003H,为使主程序不与外部中断0的中断服务程序发生冲突,用汇编语言编程时,一般在0000H单元存放一条跳转指令,转向主程序的入口地址。(2)控制引脚PSEN、ALE/PROG、EA/VPP、RST(即RESET);掌握AT89S51单片机,应首先熟
14、悉并掌握各引脚的功能。AT89S51单片机中指令按字节来分,可分为单字节、双字节与三字节指令。在掉电模式下,Vcc可由后备电源供电。(5)2个可编程16位定时器/计数器;(3)程序存储器(FlashROM):用来存储程序。(3)ALE/PROG(Address Latch Enable/PROGramming,30脚)脚)ALE的第一功能为的第一功能为CPU访问访问外部程序存储器外部程序存储器或或外部数外部数据存储器据存储器提供低提供低8位地址锁存信号,位地址锁存信号,将单片机将单片机P0口发出的口发出的低低8位地址锁存在片外地址锁存器中。位地址锁存在片外地址锁存器中。PROG为该引脚的第二功
15、能,在对片内为该引脚的第二功能,在对片内Flash存储器编存储器编程时,此引脚作为编程脉冲输入端。程时,此引脚作为编程脉冲输入端。17(4)PSEN(Program Strobe ENable,29脚)脚)片内或片外片内或片外程序存储器程序存储器的的读选通信号,读选通信号,低电平有效。低电平有效。并行并行I/O口引脚口引脚(1)P0口:口:P0.7 P0.0引脚引脚 漏极开路的漏极开路的双向双向I/O口。口。当当AT89S51扩展外部存储扩展外部存储器及器及I/O接口芯片接口芯片时,时,P0口作为口作为地址总线(低地址总线(低8位)位)及数及数据总线的分时复用端口。据总线的分时复用端口。P0口
16、也可作为通用口也可作为通用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存储器的串行编程和校验,它们分别是串行数据存储器的串行编程和校验,它们分别是串行数据输入、串行数据输出
17、和移位脉冲引脚。输入、串行数据输出和移位脉冲引脚。(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型型TT
18、L负载。负载。P3口还可提供第二功能,其第二功能定义如表口还可提供第二功能,其第二功能定义如表2-1所示,读者应熟记。所示,读者应熟记。22 综上所述,综上所述,P0口作为地址总线(低口作为地址总线(低8位)及数据总线使用时,位)及数据总线使用时,为双向口。作为通用的为双向口。作为通用的I/O口使用时,需加上拉电阻,这时为准双口使用时,需加上拉电阻,这时为准双向口。而向口。而P1口、口、P2口、口、P3口均为准双向口。口均为准双向口。双向口双向口P0与与P1口、口、P2口、口、P3口这口这3个准双向口相比,多了一个准双向口相比,多了一个高阻输入的个高阻输入的“悬浮悬浮”态。这是由于态。这是由于
19、P0口作为数据总线使用时,口作为数据总线使用时,多个数据源都挂在数据总线上,当多个数据源都挂在数据总线上,当P0口不需与其他数据源打交道口不需与其他数据源打交道时,需要与数据总线高阻时,需要与数据总线高阻“悬浮悬浮”隔离。而准双向隔离。而准双向I/O口则无高阻口则无高阻的的“悬浮悬浮”状态。另外,状态。另外,准双向口作通用准双向口作通用I/O的输入口使用时,一的输入口使用时,一定要向该口先写入定要向该口先写入“1”。以上的准双向口与双向口的差别,在学以上的准双向口与双向口的差别,在学习本章习本章2.5节的节的P0P3口的内部结构后,将会有更深入的理解。口的内部结构后,将会有更深入的理解。232
20、.3 AT89S51的的CPU AT89S51的的CPU是由是由运算器运算器和和控制器控制器构成。构成。运算器运算器 运算器主要用来对操作数进行运算器主要用来对操作数进行算术、逻辑和位操算术、逻辑和位操作运算。作运算。算术逻辑运算单元算术逻辑运算单元ALU累加器累加器A 位处理器位处理器程序状态字寄存器程序状态字寄存器PSW两个暂存器两个暂存器251算术逻辑运算单元算术逻辑运算单元ALU ALU的功能强,不仅可对的功能强,不仅可对8位变量进行逻辑与、或、位变量进行逻辑与、或、异或以及循环、求补和清异或以及循环、求补和清0等操作,还可以进行加、减、等操作,还可以进行加、减、乘、除等基本算术运算。
21、乘、除等基本算术运算。ALU还具有还具有位操作功能,位操作功能,可可对位(对位(bit)变量进行位处理,如置)变量进行位处理,如置“1”、清、清“0”、求、求补、测试转移及逻辑补、测试转移及逻辑“与与”、“或或”等操作。等操作。2累加器累加器A 累加器累加器A是是CPU中中使用最频繁使用最频繁的一个的一个8位寄存器。位寄存器。累加器累加器的作用如下。的作用如下。(1)是)是ALU单元的输入数据源之一,单元的输入数据源之一,同时又是同时又是ALU运算运算结果的存放单元。结果的存放单元。(2)CPU中数据传送大多都通过累加器中数据传送大多都通过累加器A,故累加器,故累加器A又又相当于相当于数据的中
22、转站。数据的中转站。为解决累加器结构所带来的为解决累加器结构所带来的“瓶颈堵瓶颈堵塞塞”问题,问题,AT89S51单片机单片机增加了一部分可以不经过累加器增加了一部分可以不经过累加器A的传送指令。的传送指令。累加器累加器A的的进位位进位位Cy(位于程序状态字特殊功能寄存器(位于程序状态字特殊功能寄存器PSW中)是特殊的,因为它同时又是位处理器的中)是特殊的,因为它同时又是位处理器的位累加器。位累加器。26其中:DPS数据指针寄存器选择位。5AT89S51单片机的并行I/O端口CPU不理会片内4KB(地址范围0000H0FFFH)的Flash存储器。图2-2AT89S51双列直插封装方式的引脚当
23、EA=0时,只读取外部的程序存储器中的内容,读取的地址范围为0000HFFFFH,片内的4KBFlash程序存储器不起作用。(1)整个程序存储器空间可分为片内和片外两部分,CPU究竟是访问片内的还是片外的程序存储器,可由引脚上所接的电平来确定。AT89S51单片机中的特殊功能寄存器的单元地址映射在片内RAM区的80HFFH区域中,共有26个,离散地分布在该区域中,表2-4所示为SFR的名称及其分布。4个端口除了按字节输入/输出外,还可按位寻址,以便位控功能的实现。由于P3口每一引脚有第一功能与第二功能,究竟是使用哪个功能,完全是由单片机执行的指令控制来自动切换的,用户不需要进行任何设置。5节的
24、P0P3口的内部结构后,将会有更深入的理解。P3口还可提供第二功能,其第二功能定义如表2-1所示,读者应熟记。“读锁存器”时,Q端信号经输入缓冲器BUF1进入内部总线;CPU不理会片内4KB(地址范围0000H0FFFH)的Flash存储器。若晶振频率为fosc,则时钟周期Tosc=1/fosc。注意,虽然片内RAM与片外RAM的低128B的地址是相同的,但是由于是两个不同的数据存储区,访问时使用不同的指令,所以不会发生数据冲突。P0口是一双功能的8位并行端口,字节地址为80H,位地址为80H87H。如果结果产生溢出,OV=1;P0口可驱动8个LS型TTL负载。“读锁存器”时,Q端信号经输入缓
25、冲器BUF1进入内部总线;准双向I/O口,具有内部上拉电阻,可驱动4个LS型TTL负载。273程序状态字寄存器程序状态字寄存器PSW AT89S51单片机的程序状态字寄存器(单片机的程序状态字寄存器(Program Status Word,PSW)位于单片机片内的特殊功能寄存)位于单片机片内的特殊功能寄存器区,字节地址为器区,字节地址为D0H。PSW的不同位包含了程序运的不同位包含了程序运行状态的不同信息,其中行状态的不同信息,其中4位保存当前指令执行后的状位保存当前指令执行后的状态,以供程序查询和判断。态,以供程序查询和判断。PSW格式见图格式见图2-3。28INT0INT1WRRDPSW中
26、各个位的功能如下。中各个位的功能如下。(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)用户使用的标
27、志位:)用户使用的标志位:可用指令来使可用指令来使它置它置“1”或清或清“0”,也可用指令来测试该标志位,根据,也可用指令来测试该标志位,根据测试结果控制程序的流向。编程时,用户应当充分利用测试结果控制程序的流向。编程时,用户应当充分利用该标志位。该标志位。(4)RS1、RS0(PSW.4、PSW.3)4组工作寄存器区组工作寄存器区选择控制位选择控制位1和位和位0:这两位用来选择片内这两位用来选择片内RAM区中的区中的4组工作寄存器区中的某一组为当前工作寄存区,组工作寄存器区中的某一组为当前工作寄存区,RS1、RS0与所选择的与所选择的4组工作寄存器区的对应关系如表组工作寄存器区的对应关系如表
28、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”的个数为偶数。的个数为偶数。该标志位对串行口通信中的数
29、据传输有重要的意义。在串行通该标志位对串行口通信中的数据传输有重要的意义。在串行通信中,常用奇偶检验的方法来检验数据串行传输的可靠性。信中,常用奇偶检验的方法来检验数据串行传输的可靠性。3233控制器控制器 控制器的主要任务是控制器的主要任务是识别指令,识别指令,并根据指令的性并根据指令的性质质控制单片机各功能部件,控制单片机各功能部件,从而保证单片机各部分能从而保证单片机各部分能自动协调地工作。自动协调地工作。控制器主要包括控制器主要包括程序计数器、指令寄存器、指令程序计数器、指令寄存器、指令译码器、定时及控制电路等。译码器、定时及控制电路等。其功能是控制指令的读其功能是控制指令的读入、译码
30、和执行,从而对单片机的各功能部件进行定入、译码和执行,从而对单片机的各功能部件进行定时和逻辑控制。时和逻辑控制。程序计数器程序计数器PC是控制器中是控制器中最基本的寄存器,最基本的寄存器,它是它是一个独立的一个独立的16位位计数器,计数器,用户不能直接使用指令对用户不能直接使用指令对PC进行读写。进行读写。当单片机当单片机复位时,复位时,PC中的内容为中的内容为0000H,即即CPU 从程序存储器从程序存储器0000H单元取指令,开始执行程单元取指令,开始执行程序。序。PC的基本工作过程是:的基本工作过程是:CPU读取指令时,读取指令时,PC内容内容作为欲读取指令的地址发送给程序存储器,然后程
31、序存作为欲读取指令的地址发送给程序存储器,然后程序存储器按此地址输出指令字节,同时储器按此地址输出指令字节,同时PC自动加自动加1,这也是,这也是为什么为什么PC被称为程序计数器的原因。由于被称为程序计数器的原因。由于PC实质上是实质上是作为程序寄存器的地址指针,所以也称其为作为程序寄存器的地址指针,所以也称其为程序指针。程序指针。PC内容的变化轨迹决定了程序的流程。由于内容的变化轨迹决定了程序的流程。由于PC是是用户不可直接访问的,当顺序执行程序时自动加用户不可直接访问的,当顺序执行程序时自动加1;执;执行转移程序或子程序或中断子程序调用时,由运行的指行转移程序或子程序或中断子程序调用时,由
32、运行的指令自动将其内容更改成所要转移的目的地址。令自动将其内容更改成所要转移的目的地址。3435程序计数器的计数宽度决定了访问程序存程序计数器的计数宽度决定了访问程序存储器的地址范围。储器的地址范围。AT89S51单片机中的单片机中的PC位数位数为为16位,位,故可对故可对64KB(=216B)的程序存储器)的程序存储器进行寻址。进行寻址。2.4 AT89S51单片机存储器的结构单片机存储器的结构 AT89S51单片机存储器结构为单片机存储器结构为哈佛结构,哈佛结构,即即程序存储器空程序存储器空间间和和数据存储器空间数据存储器空间是是各自独立各自独立的。的。AT89S51单片机的存储器空间可划
33、分为如下单片机的存储器空间可划分为如下4类。类。1.程序存储器空间程序存储器空间 单片机能够按照一定的次序工作,是由于程序存储器中存单片机能够按照一定的次序工作,是由于程序存储器中存放了经调试正确的程序。程序存储器可以分为放了经调试正确的程序。程序存储器可以分为片内片内和和片外片外两部两部分。分。AT89S51单片机的单片机的片内片内程序存储器为程序存储器为4KB的的Flash存储器,存储器,编程和擦除完全是电气实现,且速度快。可使用编程器对其编编程和擦除完全是电气实现,且速度快。可使用编程器对其编程,也可在线编程。程,也可在线编程。36其中:DPS数据指针寄存器选择位。10低功耗节电模式AT
34、89S51复位时,默认选用DPTR0。CPU输出0时,Q=0,场效应管导通,P3.可被位寻址的寄存器有11个,共有位地址88个,其中5个位未用,其余83个位的位地址离散地分布于片内数据存储器区字节地址为80HFFH的范围内,其最低位的位地址与其字节地址相同,并且其字节地址的末位都为0H或8H。由于外部中断0的中断服务程序入口地址为0003H,为使主程序不与外部中断0的中断服务程序发生冲突,用汇编语言编程时,一般在0000H单元存放一条跳转指令,转向主程序的入口地址。AT89S51单片机有16位地址总线,可外扩的程序存储器空间最大为64KB,地址范围为0000HFFFFH。图2-14时钟信号的两
35、种引出方式在串行通信中,常用奇偶检验的方法来检验数据串行传输的可靠性。例如,(SP)=60H,CPU执行1条子程序调用指令或响应中断后,PC内容(断点地址)进栈,PC的低8位PCL的内容压入到61H单元,PC的高8位PCH的内容压入到62H,此时,(SP)=62H。单片机能够按照一定的次序工作,是由于程序存储器中存放了经调试正确的程序。(2)XTAL2(18脚):片内振荡器反相放大器的输出端。由于PC是用户不可直接访问的,当顺序执行程序时自动加1;AT89S51单片机的存储器空间可划分为如下4类。各种指令时序与时钟周期相关。AT89S51单片机的片内数据存储器(RAM)共有128个单元,字节地
36、址为00H7FH。用户可以通过指令改变特殊功能寄存器PSW中的RS1、RS0这两位来切换选择当前的工作寄存器区,如表2-2所示。程序计数器PC是控制器中最基本的寄存器,它是一个独立的16位计数器,用户不能直接使用指令对PC进行读写。单片机应用系统受到干扰可能会引起程序“跑飞”或“死循环”,会使系统失控。其中:DPS数据指针寄存器选择位。当当AT89S51单片机的片内的单片机的片内的4KB的的Flash存储器不够用时,存储器不够用时,用户可在用户可在片外片外可扩展程序存储器,最多可扩展至可扩展程序存储器,最多可扩展至64KB程序存储程序存储器。器。2.数据存储器空间数据存储器空间 数据存储器空间
37、分为数据存储器空间分为片内片内与与片外片外两部分。两部分。AT89S51单片机单片机内部有内部有128B的的RAM(增强型的(增强型的52子系列子系列为为256B),用来),用来存放可读存放可读/写的数据。写的数据。当当AT89S51单片机的片内单片机的片内RAM不够用时,可在不够用时,可在片外片外扩展最扩展最多多64KB 的的RAM的能力,究竟扩展多少的能力,究竟扩展多少RAM,由用户根据实际,由用户根据实际需要来定。需要来定。37383.特殊功能寄存器特殊功能寄存器 AT89S51单片机片内共有单片机片内共有26个个特殊功能寄存器特殊功能寄存器SFR(Special Function Re
38、gister)。)。SFR实际上是实际上是各外围部件的控制寄存器及各外围部件的控制寄存器及状态寄存器,状态寄存器,综合反映了整个单片机基本系统内部实际的工作综合反映了整个单片机基本系统内部实际的工作状态及工作方式。状态及工作方式。4.位地址空间位地址空间 AT89S51单片机内共有单片机内共有211个可寻址位,个可寻址位,构成了位地址空间。构成了位地址空间。它们位于片它们位于片RAM区地址区地址20H2FH(共(共128位)和特殊功能寄存位)和特殊功能寄存器区(片内器区(片内RAM区字节地址区字节地址80HFFH,共计共计83位)。位)。程序存储器空间程序存储器空间 程序存储器是只读存储器(程
39、序存储器是只读存储器(ROM),用于),用于存放程序和表格存放程序和表格之类的之类的固定常数。固定常数。AT89S51的片内程序存储器为的片内程序存储器为4KB的的Flash存存储器,地址范围为储器,地址范围为0000H0FFFH。AT89S51单片机有单片机有16位地址位地址总线,总线,可外扩的程序存储器空间最大为可外扩的程序存储器空间最大为64KB,地址范围为,地址范围为0000HFFFFH。有关片内与片外扩展的程序存储器在使用时应有关片内与片外扩展的程序存储器在使用时应注意以下问题:注意以下问题:(1)整个程序存储器空间可分为片内和片外两部分,)整个程序存储器空间可分为片内和片外两部分,
40、CPU究究竟是访问片内的还是片外的程序存储器,可由引脚上所接的电平竟是访问片内的还是片外的程序存储器,可由引脚上所接的电平来确定。来确定。39 当当EA=1,PC值值0FFFH(为片内(为片内4KB Flash存储器的最大地存储器的最大地址)时,址)时,CPU只读取片内的只读取片内的Flash程序存储器中的程序代码,当程序存储器中的程序代码,当PC值值0FFFH会自动转向读取片外程序存储器空间会自动转向读取片外程序存储器空间1000HFFFFH内的程序代码。内的程序代码。当当EA=0,单片机只读取片外程序存储器(地址范围为,单片机只读取片外程序存储器(地址范围为0000HFFFFH)中的程序代
41、码。)中的程序代码。CPU不理会片内不理会片内4KB(地址范(地址范围围0000H0FFFH)的)的Flash存储器。存储器。(2)程序存储器的某些单元被固定用于各中断源的中断服务)程序存储器的某些单元被固定用于各中断源的中断服务程序的入口地址。程序的入口地址。64KB程序存储器空间中有程序存储器空间中有5个特殊单元个特殊单元分别对应于分别对应于5个中断个中断源的中断服务子程序的中断入口,如表源的中断服务子程序的中断入口,如表2-3所示。所示。相差多少字节42 用汇编语言编程时,通常在这用汇编语言编程时,通常在这5个中断入口地址处都个中断入口地址处都放放1条跳条跳转指令转指令跳向对应的中断服务
42、子程序,而不是直接存放中断服务子跳向对应的中断服务子程序,而不是直接存放中断服务子程序。这是因为两个中断入口间隔仅有程序。这是因为两个中断入口间隔仅有8个单元,如果这个单元,如果这8个单元个单元存放中断服务子程序,往往是不够用的。存放中断服务子程序,往往是不够用的。AT89S51复位后,程序存储器地址指针复位后,程序存储器地址指针PC的内容为的内容为0000H,程序从程序存储器地址程序从程序存储器地址0000H开始执行程序。由于外部中断开始执行程序。由于外部中断0的的中断服务程序入口地址为中断服务程序入口地址为0003H,为使主程序不与外部中断,为使主程序不与外部中断0的的中断服务程序发生冲突
43、,中断服务程序发生冲突,用汇编语言编程时,一般在用汇编语言编程时,一般在0000H单元单元存放一条跳转指令,转向主程序的入口地址。存放一条跳转指令,转向主程序的入口地址。数据存储器空间数据存储器空间 数据存储器空间分为片内与片外两部分。数据存储器空间分为片内与片外两部分。.片内数据存储器片内数据存储器 AT89S51单片机的片内数据存储器(单片机的片内数据存储器(RAM)共有)共有128个单元,字节地址为个单元,字节地址为00H7FH。图图2-4为为AT89S51片内片内数据存储器的结构。数据存储器的结构。4344图图2-4 AT89S51片内片内RAM的结构的结构 地址为地址为00H1FH的
44、的32个单元是个单元是4组通用工作寄存器区,组通用工作寄存器区,每个每个区包含区包含8B的工作寄存器,编号为的工作寄存器,编号为R7R0。用户可以通过指令改用户可以通过指令改变特殊功能寄存器变特殊功能寄存器PSW中的中的RS1、RS0这两位来切换选择当前的这两位来切换选择当前的工作寄存器区,如表工作寄存器区,如表2-2所示。所示。地址为地址为20H2FH的的16个单元的个单元的128位(位(8位位16)可可进行进行位位寻址,也可寻址,也可以进行以进行字节寻址。字节寻址。地址为地址为30H7FH的单元为用户的单元为用户RAM区,区,只能进行字节寻址,只能进行字节寻址,用作存放数据以及作为堆栈区使
45、用作存放数据以及作为堆栈区使用。用。.片外数据存储器片外数据存储器当片内当片内128B的的RAM不够用时,需要外扩数据存储器,最多可不够用时,需要外扩数据存储器,最多可外扩外扩64KB的的RAM。注意,虽然片内注意,虽然片内RAM与片外与片外RAM的低的低128B的地址是相同的,但是由于是两个不同的数据存储区,访问时使的地址是相同的,但是由于是两个不同的数据存储区,访问时使用不同的指令,所以不会发生数据冲突。用不同的指令,所以不会发生数据冲突。45特殊功能寄存器特殊功能寄存器 AT89S51单片机中的特殊功能寄存器的单元地址映射单片机中的特殊功能寄存器的单元地址映射在片内在片内RAM区的区的8
46、0HFFH区域中,共有区域中,共有26个,个,离散地离散地分布分布在该区域中,表在该区域中,表2-4所示为所示为SFR的名称及其分布。其的名称及其分布。其中有些中有些SFR还可进行位寻址,其位地址已在表还可进行位寻址,其位地址已在表2-4中列出中列出。与与AT89C51相比,相比,AT89S51新增新增加了加了5个个SFR:DP1L、DP1H、AUXR、AUXR1和和WDTRST(见表(见表2-4中的序号为中的序号为5、6、14、19和和20的寄存器)。的寄存器)。46另一类用于对片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要,这也是单片机应用系统设计者普遍关心和重
47、视的问题。(3)ALE/PROG(AddressLatchEnable/PROGramming,30脚)1:ALE仅在CPU访问外部存储器时有效,不访问外部存储器时,ALE引脚不输出脉冲信号,可减少对外部电路的干扰。注意,虽然片内RAM与片外RAM的低128B的地址是相同的,但是由于是两个不同的数据存储区,访问时使用不同的指令,所以不会发生数据冲突。复位操作还对其他一些寄存器有影响,这些寄存器复位时的状态见表2-7。(2)P1口作为输入口时,分为“读锁存器”和“读引脚”两种方式。准双向I/O口,具有内部上拉电阻,可驱动4个LS型TTL负载。可被位寻址的寄存器有11个,共有位地址88个,其中5个
48、位未用,其余83个位的位地址离散地分布于片内数据存储器区字节地址为80HFFH的范围内,其最低位的位地址与其字节地址相同,并且其字节地址的末位都为0H或8H。系统进入空闲模式后有两种方法可退出,第一种是中断退出。CPU不理会片内4KB(地址范围0000H0FFFH)的Flash存储器。IDL:空闲模式控制位,若IDL=1,则进入空闲运行模式。由表2-7可看出,复位时,SP=07H,而P0P3引脚均为高电平。单片机能够按照一定的次序工作,是由于程序存储器中存放了经调试正确的程序。特殊功能寄存器实际上是片内各外围部件的控制寄存器和状态寄存器,这些特殊功能寄存器映射在片内RAM区的80HFFH的地址
49、区间内。当AT89S51扩展外部存储器及I/O口时,P2口作为高8位地址总线用,输出高8位地址。当D锁存器为0时,下方场效应管导通,P0口输出为低电平。P=1,表示A中“1”的个数为奇数。1算术逻辑运算单元ALU单片机应用系统受到干扰可能会引起程序“跑飞”或“死循环”,会使系统失控。ALE的第一功能为CPU访问外部程序存储器或外部数据存储器提供低8位地址锁存信号,将单片机P0口发出的47 从表从表2-4中可以发现,凡是可以进行中可以发现,凡是可以进行位寻址位寻址的的SFR,其,其字节地址的末位只能是字节地址的末位只能是0H或或8H。另外,若另外,若CPU读读/写没有定义的单元,将得到一个不确定
50、的随机数。写没有定义的单元,将得到一个不确定的随机数。SFR块中的累加器块中的累加器A和程序状态字寄存器和程序状态字寄存器PSW已在已在前面作过介绍。下面简单介绍前面作过介绍。下面简单介绍SFR块中的某些块中的某些SFR,余,余下的下的SFR与片内外围部件密切相关,将在后续介绍片内与片内外围部件密切相关,将在后续介绍片内外围部件时进行说明。外围部件时进行说明。501堆栈指针堆栈指针SP 堆栈指针堆栈指针SP的内容的内容指示指示出出堆栈顶部堆栈顶部在在内部内部RAM块中的位块中的位置。置。它可指向内部它可指向内部RAM 00H7FH的的任何单元。任何单元。AT89S51的堆的堆栈结构属于栈结构属