1、1第第2章章 AT89S51单片机的单片机的 片内硬件结构片内硬件结构2 第第2章章 AT89S52单片机的片内硬件结构单片机的片内硬件结构 2.1 AT89S51单片机的硬件组成单片机的硬件组成2.2 AT89S51的引脚功能的引脚功能 2.2.1 电源及时钟引脚电源及时钟引脚 2.2.2 控制引脚控制引脚 2.2.3 并行并行I/O口引脚口引脚2.3 AT89S51的的CPU 2.3.1 运算器运算器 2.3.2 控制器控制器2.4 AT89S51的存储器结构的存储器结构 2.4.1 程序存储器空间程序存储器空间 2.4.2 数据存储器空间数据存储器空间 2.4.3 特殊功能寄存器特殊功能
2、寄存器 2.4.4 位地址空间位地址空间 2.4.5 存储器结构总结存储器结构总结2.5 AT89S51的并行的并行I/O端口端口 2.5.1 P0口口 2.5.2 P1口口 2.5.3 P2口口 2.5.4 P3口口2.6 时钟电路与时序时钟电路与时序 2.6.1 时钟电路设计时钟电路设计 3 2.6.2 时钟周期、机器周期、指令周期与指令时序时钟周期、机器周期、指令周期与指令时序2.7 复位操作和复位电路复位操作和复位电路 2.7.1 复位操作复位操作 2.7.2 复位电路设计复位电路设计2.8 AT89S51单片机的最小应用系统单片机的最小应用系统2.9 看门狗定时器(看门狗定时器(WD
3、T)功能简介)功能简介2.10 低功耗节电模式低功耗节电模式 2.10.1 空闲模式空闲模式 2.10.2 掉电运行模式掉电运行模式4内容概要内容概要 本章介绍本章介绍AT89S51单片机的单片机的片内硬件结构片内硬件结构。读者应了解并熟知读者应了解并熟知AT89S51单片机的片内硬件结构,以及片内外设资源单片机的片内硬件结构,以及片内外设资源的工作原理与基本功能,的工作原理与基本功能,重点掌握重点掌握AT89S51单片机的存储器结构、常见的特单片机的存储器结构、常见的特殊功能寄存器的基本功能以及殊功能寄存器的基本功能以及复位电路复位电路与与时钟电路时钟电路的设计,掌握单片机的设计,掌握单片机
4、最最小系统小系统的概念。的概念。此外还介绍了此外还介绍了低功耗节电模式低功耗节电模式。562.1 AT89S512.1 AT89S51单片机的硬件组成单片机的硬件组成片内硬件组成结构如片内硬件组成结构如图图2-12-1所示。把作为控制应用所必需的基本功能部件都所示。把作为控制应用所必需的基本功能部件都集成在一个尺寸有限的集成电路芯片上。集成在一个尺寸有限的集成电路芯片上。有如下有如下外设外设部件部件和和特性特性:(1 1)8 8位微处理器(位微处理器(CPUCPU););(2 2)数据存储器()数据存储器(128B RAM128B RAM););(3 3)程序存储器()程序存储器(4KB Fl
5、ash ROM4KB Flash ROM););(4 4)4 4个个8 8位可编程并行位可编程并行I/OI/O口(口(P0P0口、口、P1P1口、口、P2P2口口和和P3P3口);口);(5 5)2 2个可编程的个可编程的1616位定时器位定时器/计数器计数器(T0T0、T1T1),),AT89S52AT89S52增加了增加了T2T2(6 6)1 1个全双工的异步串行口;个全双工的异步串行口;7图图2-12-1 AT89S51AT89S51单片机片内结构单片机片内结构8(7 7)中断系统具有)中断系统具有5 5个中断源、个中断源、5 5个中断向量;个中断向量;(8 8)特殊功能寄存器()特殊功
6、能寄存器(SFRSFR)2626个;个;(9 9)1 1个看门狗定时器;个看门狗定时器;(1010)低功耗模式有)低功耗模式有空闲模式空闲模式和和掉电模式掉电模式。片内各功能部件通过片内各功能部件通过片内单一总线连接而成片内单一总线连接而成(见(见图图2-12-1),),基本结构基本结构是是CPU+CPU+外围芯片外围芯片的的传统微机结构传统微机结构。CPUCPU对各种功能部件的控制对各种功能部件的控制是采用是采用特殊功能寄存器特殊功能寄存器(SFRSFR,Special Special Function RegisterFunction Register)的集中控制方式。)的集中控制方式。下
7、面下面介绍介绍图图2-12-1中中片内各片内各外设部件外设部件。(1 1)CPUCPU(微处理器)(微处理器)8 8位,与通用位,与通用CPUCPU基本相同,同样包括了基本相同,同样包括了运算器运算器和和控制器控制器两大部分,还有两大部分,还有面向控制的面向控制的位处理功能位处理功能。(2 2)数据存储器()数据存储器(RAMRAM)片内为片内为为为128B128B,片外最多可扩,片外最多可扩64KB64KB。片内。片内128B128B的的RAMRAM以以高速高速RAMRAM的形式集的形式集成,可加快单片机运行的速度成,可加快单片机运行的速度和和降低功耗。降低功耗。9(3 3)程序存储器()程
8、序存储器(Flash ROMFlash ROM)用来存储程序。用来存储程序。AT89S51片内有片内有4KB的的Flash存储器存储器,AT89S52片内有片内有8KB的的Flash存储器;存储器;S53/S54/S55片内集成了片内集成了12KB/16KB/20KB的的Flash存储器,如果片内程序存储器容量不够,存储器,如果片内程序存储器容量不够,片外片外最多可外扩至最多可外扩至64KB程序存程序存储器,即储器,即“片内片内+片外片外”的程序存储器总容量不超过的程序存储器总容量不超过64KB。(4 4)中断系统)中断系统具有具有5 5个个中断源,中断源,2 2级级中断优先权。中断优先权。(
9、5 5)定时器)定时器/计数器计数器片内有片内有2个个16位位的定时器的定时器/计数器,具有计数器,具有4种工作方式。种工作方式。10(6 6)串行口)串行口 1 1个全双工的异步串行口,个全双工的异步串行口,4 4种工作方式。可进行串行通信,扩展并行种工作方式。可进行串行通信,扩展并行I/OI/O口,可与多个单片机构成多机系统。口,可与多个单片机构成多机系统。(7 7)P0P0口口、P1P1口、口、P2P2口口和和P3P3口口 4 4个个8 8位并行位并行I/OI/O口。口。(8 8)特殊功能寄存器()特殊功能寄存器(SFRSFR)共有共有26个特殊功能寄存器,用于个特殊功能寄存器,用于CP
10、U对片内对片内各外设部件各外设部件进行进行管理、控制管理、控制和监视和监视。特殊功能寄存器实际上是片内各外设部件的。特殊功能寄存器实际上是片内各外设部件的控制寄存器控制寄存器和和状态寄状态寄存器存器,这些特殊功能寄存器映射在,这些特殊功能寄存器映射在片内片内RAM区区的的80HFFH的地址区间内的地址区间内。11(9 9)1 1个看门狗定时器个看门狗定时器WDTWDT 当单片机由于干扰而使程序陷入当单片机由于干扰而使程序陷入死循环死循环或或跑飞跑飞状态时,可引起单片机状态时,可引起单片机复位,使程序恢复正常运行。复位,使程序恢复正常运行。AT89S51完全兼容完全兼容AT89C51单片机,使用
11、单片机,使用AT89C51单片机的系统,在单片机的系统,在保留原来软硬件的基础上,可用保留原来软硬件的基础上,可用AT89S51直接代换。直接代换。122.2 AT89S512.2 AT89S51的引脚功能的引脚功能 AT89S51与各种与各种8051单片机的引脚是兼容的。单片机的引脚是兼容的。目前,目前,AT89S51多采用多采用40引脚的引脚的DIP封装(双列直插),见封装(双列直插),见图图2-2(a),),以及以及44引脚的引脚的PLCC和和TQFP封装方式的芯片封装方式的芯片,见见图图2-2(b)和和图图2-2(c)。44引脚的引脚的PLCC和和TQFP封装方式的芯片,有封装方式的芯
12、片,有4只引脚是无用只引脚是无用的,标为的,标为“NC”。13(a)DIP封装的引脚分布封装的引脚分布 (b)PLCC封装的引脚分布封装的引脚分布14(c)TQFP封装的引脚分布封装的引脚分布图图2-2 AT89S51各种封装方式的引脚各种封装方式的引脚15引脚按其功能可分为如下引脚按其功能可分为如下3 3类类:(1 1)电源及时钟引脚)电源及时钟引脚V VCCCC、V VSSSS;XTAL1XTAL1、XTAL2XTAL2。(2 2)控制引脚)控制引脚 PSENPSEN*、ALE/PROGALE/PROG*、EAEA*/V/VPPPP、RSTRST(3 3)I/OI/O口引脚口引脚P0P0、
13、P1P1、P2P2、P3P3,为,为4 4个个8 8位位I/OI/O口口下面结合下面结合图图2-2(a)2-2(a)介绍各引脚的功能。介绍各引脚的功能。2.2.1 2.2.1 电源及时钟引脚电源及时钟引脚1 1电源引脚电源引脚(1 1)V VCCCC(4040脚):脚):+5V+5V电源。电源。(2 2)V VSSSS(2020脚):脚):数字地。数字地。162 2时钟引脚时钟引脚 (1 1)XTAL1XTAL1(1919脚):脚):片内振荡器反相放大器和时钟发生器电路输入端。片内振荡器反相放大器和时钟发生器电路输入端。用片内振荡器时,该脚接外部石英晶体和微调电容。用片内振荡器时,该脚接外部石
14、英晶体和微调电容。外接时钟源时外接时钟源时,该,该脚接外部时钟振荡器的信号。脚接外部时钟振荡器的信号。(2 2)XTAL2XTAL2(1818脚):脚):片内振荡器反相放大器的输出端。当使用片内振荡器反相放大器的输出端。当使用片内振荡片内振荡器器,该脚连接外部石英晶体和微调电容。当使用,该脚连接外部石英晶体和微调电容。当使用外部时钟源外部时钟源时,本脚时,本脚悬悬空空。2.2.2 2.2.2 控制引脚控制引脚1 1.RST(RESETRST(RESET,9 9脚脚)复位信号输入,在引脚加上复位信号输入,在引脚加上持续时间大于持续时间大于2 2个机器周期的高电平个机器周期的高电平,可使单片,可使
15、单片机机复位复位。正常工作,此脚。正常工作,此脚电平电平应应 0.5V0.5V。17 当看门狗定时器溢出输出时,该脚将输出长达当看门狗定时器溢出输出时,该脚将输出长达9696个时钟振荡周期个时钟振荡周期的的高电高电平平。2 2.EAEA*/VPP/VPP(Enable Address/Voltage Pulse of (Enable Address/Voltage Pulse of ProgramingPrograming,3131脚脚)EA EA*:引脚引脚第一功能第一功能:外部程序存储器访问允许控制端。:外部程序存储器访问允许控制端。EA EA*=1=1,在,在PCPC值不超出值不超出0F
16、FFH0FFFH(即不超出片内(即不超出片内4KB Flash4KB Flash存储器的地址范存储器的地址范围)时,单片机读围)时,单片机读片内程序存储器片内程序存储器(4KB4KB)中的程序,但)中的程序,但PCPC值超出值超出0FFFH0FFFH(即超出片内即超出片内4KB Flash4KB Flash地址范围)时,将地址范围)时,将自动转向读取片外自动转向读取片外60KB60KB(1000H-1000H-FFFFHFFFFH)程序存储器空间中的程序。)程序存储器空间中的程序。18 EAEA*=0=0,只读取只读取外部的程序存储器外部的程序存储器中的内容,读取的地址范围为中的内容,读取的地
17、址范围为0000H0000HFFFFHFFFFH,片内的,片内的8KB Flash 8KB Flash 程序存储器不起作用。程序存储器不起作用。V VPPPP:引脚引脚第二功能第二功能,对片内,对片内FlashFlash编程,接编程,接编程电压编程电压。3 3.ALE/PROGALE/PROG*(Address Latch Enable/Address Latch Enable/PROGrammingPROGramming,3030脚)脚)ALE为地址锁存控制信号端,为第一功能。由于引脚数目有限,为地址锁存控制信号端,为第一功能。由于引脚数目有限,P0口是口是作为低作为低8位地址总线与位地址总
18、线与8位数据总线位数据总线分时复用分时复用的。当单片机访问外部程序存储的。当单片机访问外部程序存储器或外部数据存储器时,器或外部数据存储器时,ALE的负跳变将单片机的负跳变将单片机P0口先发出的低口先发出的低8位地址锁位地址锁存在存在P0口外接的地址锁存器中,然后口外接的地址锁存器中,然后P0口再作为口再作为8位数据总线使用,如位数据总线使用,如图图2-3所示。所示。19图图2-3 ALE作为低作为低8位地址位地址输出地址锁存控制信号输出地址锁存控制信号 20此外,单片机此外,单片机正常运行正常运行时,时,ALEALE端端一直有正脉冲信号输出一直有正脉冲信号输出,此频率为时钟振,此频率为时钟振
19、荡器频率荡器频率f foscosc的的1/61/6。可用作外部定时或触发信号。可用作外部定时或触发信号。注意注意,每当,每当AT89S51AT89S51访问外部访问外部RAMRAM时(执行时(执行MOVXMOVX类指令),要类指令),要丢失一个丢失一个ALEALE脉脉冲冲。如不需要如不需要ALE端输出脉冲信号,端输出脉冲信号,可将可将特殊功能寄存器特殊功能寄存器AUXRAUXR(地址为(地址为8EH8EH,将,将在后面介绍)的在后面介绍)的第第0 0位位(ALEALE禁止位)置禁止位)置1 1,来,来禁止禁止ALEALE操作操作,但执行访问,但执行访问外部程序存储器或外部数据存储器指令外部程序
20、存储器或外部数据存储器指令“MOVCMOVC”或或“MOVXMOVX”时,时,ALEALE仍然仍然有效。有效。即即ALEALE禁止位不影响对外部存储器的访问。禁止位不影响对外部存储器的访问。PROGPROG*:引脚引脚第二功能第二功能,对片内,对片内FlashFlash编程,为编程,为编程脉冲输入编程脉冲输入脚。脚。214 4.PSENPSEN*(Program Strobe Program Strobe ENableENable,2929脚)脚)片外程序存储器读选通信号,低片外程序存储器读选通信号,低电平电平有效。有效。2.2.3 2.2.3 并行并行I/OI/O口引脚口引脚1 1.P0P0
21、口:口:P0.7P0.0引脚引脚 漏极开路的双向漏极开路的双向I/O口。当口。当AT89S51扩展外部存储器及扩展外部存储器及I/O接口芯片时,接口芯片时,P0口作为地址总线(低口作为地址总线(低8位)及数据总线的分时复用端口。位)及数据总线的分时复用端口。P0口也可作为通用口也可作为通用I/O口使用,但需加上拉电阻,这时为准双向口。口使用,但需加上拉电阻,这时为准双向口。P0口口可驱动可驱动8个个LS型型TTL负载。负载。222.P1口:口:P1.7P1.0引脚引脚准双向准双向I/O口,具有内部上拉电阻,可驱动口,具有内部上拉电阻,可驱动4个个LS型型TTL负载。负载。P1口是完全可提供给用
22、户使用的准双向口是完全可提供给用户使用的准双向I/O口。口。P1.5/MOSI、P1.6/MISO和和P1.7/SCK也可用于对片内也可用于对片内Flash存储器的串行编程存储器的串行编程和校验,它们分别是串行数据输入、串行数据输出和移位脉冲引脚。和校验,它们分别是串行数据输入、串行数据输出和移位脉冲引脚。233.P2口:口:P2.7P2.0引脚引脚 准双向准双向I/O口,具有内部上拉电阻,可驱动口,具有内部上拉电阻,可驱动4个个LS型型TTL负载。负载。当当AT89S51扩展外部存储器及扩展外部存储器及I/O口时,口时,P2口作为高口作为高8位地址总线用,输出位地址总线用,输出高高8位地址。
23、位地址。P2口也可作为通用的口也可作为通用的I/O口使用。口使用。244 4.P3P3口:口:P3.7P3.0 准双向准双向I/OI/O口口,具有内部上拉电阻。,具有内部上拉电阻。P3口的口的第一功能第一功能是作为通用的是作为通用的I/O口使用,可驱动口使用,可驱动4个个LS型型TTL负载。负载。P3 P3口还可提供口还可提供第二功能第二功能。第二功能定义。第二功能定义见见表表2-12-1,应熟记。,应熟记。综上所述,综上所述,P0P0口口可可作为总线作为总线口口,为双向口。作为通用的,为双向口。作为通用的I/OI/O口使用时,口使用时,为准双向口,这时需加上拉电阻。为准双向口,这时需加上拉电
24、阻。P1P1口、口、P2P2口、口、P3P3口口均为准双向口。均为准双向口。2526INT0INT1WRRD综上所述,综上所述,P0P0口作为地址总线(低口作为地址总线(低8 8位)及数据总线使用时,为位)及数据总线使用时,为双向口双向口。作为通用的作为通用的I/OI/O口使用时,需加上拉电阻,这时为口使用时,需加上拉电阻,这时为准双向口准双向口。而。而P1P1口、口、P2P2口、口、P3P3口均为准双向口。口均为准双向口。双向口双向口P0P0与与P1P1口、口、P2P2口、口、P3P3口这口这3 3个准双向口相比,个准双向口相比,多了一个高阻输入的多了一个高阻输入的“悬浮悬浮”态态。这是由于
25、。这是由于P0P0口作为数据总线使用时,多个数据源都挂在数据总口作为数据总线使用时,多个数据源都挂在数据总线上,当线上,当P0P0口不需与其他数据源打交道时,需要与数据总线高阻口不需与其他数据源打交道时,需要与数据总线高阻“悬浮悬浮”隔隔离,而准双向离,而准双向I/OI/O口则无高阻的口则无高阻的“悬浮悬浮”状态。状态。另外,准双向口作通用另外,准双向口作通用I/OI/O的输入口使用时,一定要向该口先写入的输入口使用时,一定要向该口先写入“1”“1”。以上的准双向口与双向口的差别,读者在学习本章。以上的准双向口与双向口的差别,读者在学习本章2.52.5节的节的P0P0P3P3口的内部口的内部结
26、构后,将会有更深入的理解。结构后,将会有更深入的理解。27至此,至此,4040个个引脚已介绍引脚已介绍完毕完毕,应熟记每一引脚功能对应用系统硬件电路,应熟记每一引脚功能对应用系统硬件电路设计十分重要。设计十分重要。2.3 AT89S512.3 AT89S51的的CPUCPUCPUCPU由由运算器运算器和和控制器控制器构成。构成。2.3.1 2.3.1 运算器运算器对操作数进行算术、逻辑和位操作运算。主要包括算术逻辑运算单元对操作数进行算术、逻辑和位操作运算。主要包括算术逻辑运算单元ALUALU、累加器、累加器A A、位处理器、程序状态字寄存器、位处理器、程序状态字寄存器PSWPSW及两个暂存器
27、等。及两个暂存器等。1 1算术逻辑运算单元算术逻辑运算单元ALUALU可对可对8 8位变量位变量逻辑逻辑运算运算(与、或、异或、循环、求补和清零与、或、异或、循环、求补和清零),还可,还可算算术运算术运算(加、减、乘、除加、减、乘、除)28ALUALU还有位操作功能,对位变量进行位处理,如置还有位操作功能,对位变量进行位处理,如置“1 1”、清、清“0 0”、求、求补、测试转移及逻辑补、测试转移及逻辑“与与”、“或或”等等。2 2累加器累加器A A使用最频繁的寄存器,使用最频繁的寄存器,可可写为写为AccAcc。“A A”与与“AccAcc”书写上的差别,将书写上的差别,将在第在第3 3章介绍
28、。章介绍。位于片内的特殊功能寄存器区。位于片内的特殊功能寄存器区。作用如下:作用如下:(1 1)ALUALU单元的单元的输入数据源之一输入数据源之一,又是,又是ALUALU运算结果存放单元运算结果存放单元。(2 2)数据传送大多都通过累加器)数据传送大多都通过累加器A A,相当于数据的,相当于数据的中转站中转站。为解决。为解决“瓶瓶颈堵塞颈堵塞”问题,问题,AT89S51AT89S51增加了一部分可以不经过累加器的传送指令。增加了一部分可以不经过累加器的传送指令。29A A的进位标志的进位标志CyCy是特殊的,因为它同时又是是特殊的,因为它同时又是位处理机的位处理机的位累加器位累加器3 3程序
29、状态字寄存器程序状态字寄存器PSWPSWPSWPSW(Program Status WordProgram Status Word)位于片内特殊功能寄存器区,)位于片内特殊功能寄存器区,字节地址为字节地址为D0HD0H。包含了包含了程序运行状态的信息程序运行状态的信息,其中,其中4 4位保存当前指令执行后的状态,供程位保存当前指令执行后的状态,供程序查询和判断。序查询和判断。格式如图格式如图2-42-4所示所示。图图2-42-4 PSW PSW的格式的格式30PSWPSW中各个位的功能中各个位的功能:(1 1)CyCy(PSW.7PSW.7)进位标志位)进位标志位 可写为可写为C C。在算术和
30、逻辑运算时,若有。在算术和逻辑运算时,若有进位进位/借位借位,CyCy1 1;否则,;否则,CyCy0 0。在位处理器中,它是位累加器。在位处理器中,它是位累加器。(2 2)AcAc(PSW.6PSW.6)辅助进位标志位)辅助进位标志位 在在BCDBCD码运算时,用作十进位调整。即当码运算时,用作十进位调整。即当D3D3位向位向D4D4位产生进位或借位时,位产生进位或借位时,AcAc1 1;否则,;否则,AcAc0 0。(3 3)F0F0(PSW.5PSW.5)用户设定标志位)用户设定标志位 由用户使用的一个状态标志位,可用指令来使它置由用户使用的一个状态标志位,可用指令来使它置1 1或清或清
31、0 0,控制程序的控制程序的流向。用户应充分利用。流向。用户应充分利用。31(4 4)RS1RS1、RS0RS0(PSW.4PSW.4、PSW.3PSW.3)4 4组工作寄存器区选择组工作寄存器区选择选择片内选择片内RAMRAM区中的区中的4 4组工作寄存器区中的某一组为当前工作寄存区组工作寄存器区中的某一组为当前工作寄存区见见表表2-22-2。32(5 5)OVOV(PSW.2PSW.2)溢出标志位)溢出标志位 当执行算术指令时,用来指示运算结果是否产生溢出。如果结果产生当执行算术指令时,用来指示运算结果是否产生溢出。如果结果产生溢出,溢出,OV=1OV=1;否则,;否则,OV=0OV=0。
32、(6 6)PSW.1PSW.1位位:保留位保留位(7 7)P P(PSW.0PSW.0)奇偶标志位奇偶标志位 指令执行完,累加器指令执行完,累加器A A中中“1 1”的个数的个数是是奇数奇数还是还是偶数偶数。P=1P=1,表示表示A A中中“1 1”的个数为的个数为奇数奇数。P=0P=0,表示,表示A A中中“1 1”的个数为的个数为偶数偶数。此标志位对串行通信有重要的意义此标志位对串行通信有重要的意义,常用常用奇偶检验奇偶检验的方法来检验数据的方法来检验数据串行传输的可靠性。串行传输的可靠性。33342.3.2 2.3.2 控制器控制器 任务任务识别指令,并根据指令的性质控制单片机各功能部件
33、,从而保证识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动协调地工作。单片机各部分能自动协调地工作。控制器包括控制器包括:程序计数器、指令寄存器、指令译码器、定时及控制逻程序计数器、指令寄存器、指令译码器、定时及控制逻辑电路等。功能是控制指令的读入、译码和执行,从而对各功能部件进行辑电路等。功能是控制指令的读入、译码和执行,从而对各功能部件进行定时和逻辑控制。定时和逻辑控制。程序计数器程序计数器PCPC是一个独立的是一个独立的1616位计数器,不可访问。单片机复位时,位计数器,不可访问。单片机复位时,PCPC中内容为中内容为0000H0000H,从程序存储器,从程序存
34、储器0000H0000H单元取指令,开始执行程序。单元取指令,开始执行程序。PC PC工作过程工作过程:CPUCPU读指令时,读指令时,PCPC的内容作为所取指令的地址,程序存储的内容作为所取指令的地址,程序存储器按此地址输出指令字节,同时器按此地址输出指令字节,同时PCPC自动加自动加1 1。PC PC中内容变化轨迹中内容变化轨迹决定程序流程。当决定程序流程。当顺序执行顺序执行程序时自动加程序时自动加1 1;执行;执行转转移程序移程序或或子程序、中断子程序调用子程序、中断子程序调用时,自动将其内容更改成所要转移时,自动将其内容更改成所要转移的目的地址。的目的地址。PC PC的计数宽度的计数宽
35、度决定了程序存储器的地址范围。决定了程序存储器的地址范围。PCPC为为1616位,故可对位,故可对64KB64KB(=2=21616B B)寻址。寻址。2.4 AT89S512.4 AT89S51存储器的结构存储器的结构存储器存储器的的结构特点之一是将程序存储器和数据存储器分开结构特点之一是将程序存储器和数据存储器分开(哈佛结构)(哈佛结构),并有并有各自各自的访问指令。的访问指令。存储器空间可分为存储器空间可分为4 4类类。35.程序存储器空间程序存储器空间片内和片外两部分。片内和片外两部分。片内片内4KB4KB FlashFlash ,编程和擦除完全是电气实现。可用通用编程器对其编,编程和
36、擦除完全是电气实现。可用通用编程器对其编程,也可程,也可在线编程在线编程。当片内当片内4KB Flash 4KB Flash 存储器不够用时,可片外扩展,最多可扩展至存储器不够用时,可片外扩展,最多可扩展至64KB64KB程程序存储器。序存储器。.数据存储器空间数据存储器空间片内片内与与片外片外两部分。两部分。片内有片内有128B128B RAM RAM。片内片内RAM RAM 不够用时,在不够用时,在片外可扩展至片外可扩展至64KB64KB RAM RAM 。36.特殊功能寄存器特殊功能寄存器SFRSFR (Special Function RegisterSpecial Function
37、Register)片内各功能部件的控制寄存器及状态寄存器。综合反映了整个单片机基片内各功能部件的控制寄存器及状态寄存器。综合反映了整个单片机基本系统内部实际的工作状态及工作方式。本系统内部实际的工作状态及工作方式。.位地址空间位地址空间 共有共有211个可寻址位,构成了位地址空间。位于片个可寻址位,构成了位地址空间。位于片RAM区字节地址区字节地址20H2FH(共(共128位)和特殊功能寄存器区(片内位)和特殊功能寄存器区(片内RAM区字节地址区字节地址80HFFH区区间内,共定义了间内,共定义了83个可寻址位)。个可寻址位)。2.4.1 2.4.1 程序存储器空间程序存储器空间 存放程序和表
38、格之类的固定常数。片内为存放程序和表格之类的固定常数。片内为4KB4KB的的 Flash Flash,地址为,地址为0000H0000H0FFFH0FFFH。1616位地址线,可外扩的程序存储器空间最大为位地址线,可外扩的程序存储器空间最大为64KB64KB,地址为,地址为0000H0000HFFFFHFFFFH。使用使用时时应注意以下问题应注意以下问题:37(1 1)分为)分为片内片内和和片外片外两部分两部分,访问片内的还是片外的程序存储器,由,访问片内的还是片外的程序存储器,由EAEA*引脚电平引脚电平确定。确定。EA EA*=1=1时,时,CPUCPU从片内从片内0000H0000H开始
39、取指令,开始取指令,当当PCPC值没有超出值没有超出0FFFH0FFFH时,只访时,只访问片内问片内Flash Flash 存储器,存储器,当当PCPC值超出值超出0FFFH0FFFH自动转向读片外程序存储器空间自动转向读片外程序存储器空间1000H1000HFFFFH FFFFH 内的程序。内的程序。EA EA*=0=0时,只能执行片外程序存储器(时,只能执行片外程序存储器(0000H0000HFFFFHFFFFH)中的程序。不理)中的程序。不理会片内会片内4KB Flash 4KB Flash 存储器。存储器。(2 2)程序存储器某些固定单元)程序存储器某些固定单元用于各中断源中断服务程序
40、入口。用于各中断源中断服务程序入口。3839 64KB 64KB程序存储器空间中有程序存储器空间中有5 5个特殊单元个特殊单元分别对应于分别对应于5 5个中断源的中断入口个中断源的中断入口地址,见地址,见表表2-32-3。通常这通常这5 5个中断入口个中断入口地址处地址处都放一条跳转指令都放一条跳转指令跳向对应的中断服务子程跳向对应的中断服务子程序,而不是直接存放中断服务子程序序,而不是直接存放中断服务子程序。使用汇编语言编程时,通常在这些中断入口地址处存放使用汇编语言编程时,通常在这些中断入口地址处存放1条跳转指令跳向条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。这是因为
41、两个对应的中断服务子程序,而不是直接存放中断服务子程序。这是因为两个中断入口间隔仅有中断入口间隔仅有8个单元,如果这个单元,如果这8个单元存放中断服务子程序,有时是个单元存放中断服务子程序,有时是不够用的。不够用的。AT89S51复位复位后,后,PC的内容为的内容为0000H,从程序存储器地址,从程序存储器地址0000H处开始处开始执行程序。由于外部中断执行程序。由于外部中断0的中断服务程序入口地址为的中断服务程序入口地址为0003H,为使主程序,为使主程序不与外部中断不与外部中断0的中断服务程序发生冲突,一般在的中断服务程序发生冲突,一般在0000H单元存放一条跳转单元存放一条跳转指令,转向
42、主程序的入口地址。指令,转向主程序的入口地址。上述问题,在使用上述问题,在使用C51语言编程时,完全由语言编程时,完全由C51编译时自动处理,用户无编译时自动处理,用户无需考虑。需考虑。402.4.2 2.4.2 数据存储器空间数据存储器空间 分为分为片内片内与与片外片外两部分。两部分。.片内数据存储器片内数据存储器 AT89S51的片内数据存储器(的片内数据存储器(RAM)共有)共有128个单元,字节地址为个单元,字节地址为00H7FH。图图2-5为为AT89S51片内片内RAM的结构。的结构。41图图2-5 片内数据存储器片内数据存储器RAM的结构的结构42 00H 00H1FH1FH 的
43、的3232个单元个单元是是4 4组通用工作寄存器区,每区包含组通用工作寄存器区,每区包含8B8B,为,为R7R7R0R0。可。可通过指令改变通过指令改变RS1RS1、RS0RS0两位两位来选择。来选择。20H 20H2FH2FH的的1616个个单元的单元的128128位可位寻址,也可字节寻址。位可位寻址,也可字节寻址。30H 30H7FH7FH的单元只能字节寻址,用作存数据以及作为堆栈区。的单元只能字节寻址,用作存数据以及作为堆栈区。43.片外数据存储器片外数据存储器当片内当片内128B128B的的RAMRAM不够用时,需外扩,最多可外扩不够用时,需外扩,最多可外扩64KB64KB的的RAMR
44、AM。注意,片内注意,片内RAMRAM与片外与片外RAMRAM两个空间是相互独立的,两个空间是相互独立的,片内片内RAMRAM与片外与片外RAMRAM的低的低128B128B的地址是相同的的地址是相同的,但由于使用的是不同的访问指令,所以不会发生,但由于使用的是不同的访问指令,所以不会发生冲突。冲突。442.4.3 2.4.3 特殊功能寄存器(特殊功能寄存器(SFRSFR)特殊功能寄存器特殊功能寄存器映射在片内映射在片内RAMRAM的的 80H80HFFHFFH 区域区域中,共中,共2626个个。表表2-4 2-4 SFRSFR的名称及其分布。有些还可位寻址,位地址的名称及其分布。有些还可位寻
45、址,位地址见见表表2-42-4。与与AT89C51AT89C51相比,相比,AT89S51AT89S51新增加了新增加了5 5个个SFRSFR:DP1LDP1L、DP1HDP1H、AUXRAUXR、AUXR1AUXR1和和WDTRSTWDTRST(见表(见表2-42-4中的序号为中的序号为5 5、6 6、1414、1919和和2020的寄存器)。的寄存器)。凡是凡是可位寻址的可位寻址的SFRSFR,字节地址末位只能是,字节地址末位只能是0H0H或或8H8H。另外,若读。另外,若读/写写未未定定义单元,将得到一个不确定的随机数。义单元,将得到一个不确定的随机数。下面介绍某些下面介绍某些SFRSF
46、R,余下的,余下的SFRSFR将在后将在后面面介绍。介绍。4546471 1堆栈指针堆栈指针SPSP 堆栈只能设在片内的堆栈只能设在片内的RAM区,区,SPSP指示堆栈顶部在内部指示堆栈顶部在内部RAMRAM块中的位置。块中的位置。堆栈结构堆栈结构向上生长型向上生长型。单片机。单片机复位复位后,后,SPSP为为07H07H,使得堆栈实际上从,使得堆栈实际上从08H08H单元开始,单元开始,由于由于08H08H1FH1FH单元分别是属于单元分别是属于1 13 3组的工作寄存器区,组的工作寄存器区,最好在复最好在复位位后后把把SPSP值改置为值改置为60H60H或更大的值或更大的值,避免堆栈与工作
47、寄存器冲突。,避免堆栈与工作寄存器冲突。堆栈是为堆栈是为子程序调用子程序调用和和中断操作中断操作而设而设,用来用来保护断点保护断点和和现场现场。(1 1)保护断点。)保护断点。无论是子程序调用操作还是中断服务子程序调用,最终都无论是子程序调用操作还是中断服务子程序调用,最终都要返回主程序。应预先把主程序的断点在堆栈中保护起来,为程序正确返回要返回主程序。应预先把主程序的断点在堆栈中保护起来,为程序正确返回做准备。做准备。48(2 2)现场保护。)现场保护。执行子程序或中断服务子程序时,要用到一些寄存器单元执行子程序或中断服务子程序时,要用到一些寄存器单元,会破坏原有内容。要把有关寄存器单元的内
48、容保存起来,送入堆栈,会破坏原有内容。要把有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的这就是所谓的“现场保护现场保护”。两种操作:两种操作:数据压入数据压入(PUSHPUSH)堆栈,堆栈,数据弹出数据弹出(POPPOP)堆栈。数据压入堆栈堆栈。数据压入堆栈,SPSP自动加自动加1 1;数据弹出堆栈,;数据弹出堆栈,SPSP自动减自动减1 1。2 2寄存器寄存器B B为执行乘法和除法为执行乘法和除法而而设。在不执行乘、除法操作的情况下,可把它当作一设。在不执行乘、除法操作的情况下,可把它当作一个普通寄存器来使用。个普通寄存器来使用。4950乘法乘法,两乘数分别在,两乘数分别在A A、B
49、B中,执行乘法指令后,乘积在中,执行乘法指令后,乘积在BABA中中。除法除法,被除数取自,被除数取自A A,除数取自,除数取自B B,商存放在,商存放在A A中,余数存中,余数存B B中。中。3 3AUXRAUXR寄存器寄存器 AUXR AUXR是辅助寄存器,其格式如是辅助寄存器,其格式如图图2-62-6所示所示:图图2-62-6 AUXRAUXR寄存器的格式寄存器的格式51其中其中:DISALEDISALE:ALEALE的禁止的禁止/允许位允许位。0 0:ALEALE有效,发出脉冲;有效,发出脉冲;1 1:ALEALE仅在执行仅在执行MOVCMOVC和和MOVXMOVX类指令时有效,不访问外
50、部存储器时,类指令时有效,不访问外部存储器时,ALEALE不输出脉冲信号不输出脉冲信号。DISRTODISRTO:禁止禁止/允许允许WDTWDT溢出时的复位输出溢出时的复位输出。0 0:WDTWDT溢出时,在溢出时,在RSTRST引脚输出一个高电平脉冲;引脚输出一个高电平脉冲;1 1:RSTRST引脚仅为输入脚。引脚仅为输入脚。WDIDLEWDIDLE:WDTWDT在空闲模式下的禁止在空闲模式下的禁止/允许位。允许位。0 0:WDTWDT在空闲模式下继续计数;在空闲模式下继续计数;1 1:WDTWDT在空闲模式下暂停计数。在空闲模式下暂停计数。524.4.数据指针数据指针DPTR0DPTR0和