1、第二章第二章 80C51单片微机单片微机的基本结构的基本结构 微型计算机的基本组成有三部分,即微型计算机的基本组成有三部分,即CPU+存储器存储器+I/O 接口。接口。80C51内部结构如内部结构如图图21所示。所示。CPU(算术逻辑单元算术逻辑单元ALU、控制器、控制器)存储器存储器-程序存储器程序存储器ROM、数据存储器数据存储器 RAM定时器定时器/计数器计数器并行并行 I/O口口 P0P3串行口串行口中断系统中断系统定时控制逻辑电路等定时控制逻辑电路等 2.1 80C51单片微机的内部结构单片微机的内部结构 微型计算机的基本组成有三部分,即微型计算机的基本组成有三部分,即CPU+存储器
2、存储器+I/O 接口。接口。80C51内部结构:内部结构:图图21CPU(算术逻辑单元算术逻辑单元ALU、控制器、控制器)存储器存储器-程序存储器程序存储器ROM、数据存储器数据存储器 RAM定时器定时器/计数器计数器并行并行 I/O口口 P0P3串行口串行口中断系统中断系统定时控制逻辑电路等定时控制逻辑电路等 这些部件通过内部总线连接起来,基本结构仍然是通用这些部件通过内部总线连接起来,基本结构仍然是通用CPU加上外围芯片的结构模式,但采用了特殊功能寄存器加上外围芯片的结构模式,但采用了特殊功能寄存器(SFR)进行进行集中控制的方法。集中控制的方法。1.中央处理器中央处理器 单片微机的核心,
3、主要完成运算和控制功能,又增设了单片微机的核心,主要完成运算和控制功能,又增设了“面面向控制向控制”的处理功能,增强了实时性。的处理功能,增强了实时性。2.程序存储器程序存储器 80C31:内部没有程序存储器:内部没有程序存储器 80C51:内部带:内部带ROM 87C51:内部带:内部带EPROM单片微机的程序存储器有以下几种结构形式:单片微机的程序存储器有以下几种结构形式:片内只读存储器片内只读存储器 程序必须在制作单片微机时写入,一次性固化。程序必须在制作单片微机时写入,一次性固化。只适用于程序已成熟、定型,且批量很大的场合。并且只能只适用于程序已成熟、定型,且批量很大的场合。并且只能在
4、厂家定制完成。在厂家定制完成。片内可编程的片内可编程的ROM 片内可编程的片内可编程的ROM可直接由用户进行编程。可直接由用户进行编程。紫外线可擦除型紫外线可擦除型ROM:EPROM型单片微机型单片微机(如如87C51)。EPROM需用紫外线擦除,必须脱机固化,不能在线改写。需用紫外线擦除,必须脱机固化,不能在线改写。电可擦除型电可擦除型ROM:EEPROM,称为,称为Flash单片微机单片微机(如如89C51)。应用系统的现场调试。应用系统的现场调试。EPROM和和EEPROM都是可以多次擦除和编程的,或称都是可以多次擦除和编程的,或称MTP的的ROM。OTP的的 ROM,仅允许用户一次编程
5、。,仅允许用户一次编程。片外只读存储器片外只读存储器 由于受芯片集成度的限制,片内只读存储器一般存储容量由于受芯片集成度的限制,片内只读存储器一般存储容量较小。较小。利用单片微机的并行扩展技术可以外扩片外只读存储器。利用单片微机的并行扩展技术可以外扩片外只读存储器。3.数据存储器(数据存储器(RAM)存储程序在运行期间的工作变量和数据,称为数据存储器。存储程序在运行期间的工作变量和数据,称为数据存储器。一般在单片微机内部设置一定容量(一般在单片微机内部设置一定容量(64B64B384B384B或更大容量或更大容量)的的RAMRAM,以加快单片微机运行的速度,以加快单片微机运行的速度,还可以使存
6、储器的功耗下降还可以使存储器的功耗下降很多。很多。常把寄存器(如工作寄存器、特殊功能寄存器、堆栈等)常把寄存器(如工作寄存器、特殊功能寄存器、堆栈等)在逻辑上划分在片内在逻辑上划分在片内RAMRAM空间中,可将单片微机内部空间中,可将单片微机内部RAMRAM看成是寄看成是寄存器堆,有利于提高运行速度。存器堆,有利于提高运行速度。4.并行并行I/O口口 提供许多功能强、使用灵活的并行输入提供许多功能强、使用灵活的并行输入/输出引脚,用于输出引脚,用于检测与控制。检测与控制。有些有些I/O引脚还具有多种功能,比如可以作为数据总线的数据引脚还具有多种功能,比如可以作为数据总线的数据线、地址总线的地址
7、线、控制总线的控制线等。线、地址总线的地址线、控制总线的控制线等。单片微机单片微机I/O引脚的驱动能力也逐渐增大,甚至可以直接驱动引脚的驱动能力也逐渐增大,甚至可以直接驱动外扩的外扩的LED显示器。显示器。5.串行串行I/O口口 实现与某些终端设备进行串行通信,或者和一些特殊功实现与某些终端设备进行串行通信,或者和一些特殊功能的器件相连的能力,甚至用多个单片微机相连构成多机系能的器件相连的能力,甚至用多个单片微机相连构成多机系统。统。6.定时器定时器/计数器计数器 用于精确的定时,或者需对外部事件进行计数用于精确的定时,或者需对外部事件进行计数80C51有两个有两个16位的定时器位的定时器/计
8、数器,计数器,80C52有三个有三个16位的定时器位的定时器/计数器。计数器。7.中断系统中断系统 具有内、外共五个中断源,两个中断优先级。具有内、外共五个中断源,两个中断优先级。8定时电路及元件定时电路及元件 计算机的整个工作是在时钟信号的驱动下,按照严格的时计算机的整个工作是在时钟信号的驱动下,按照严格的时序有规律地一个节拍一个节拍地执行各种操作。序有规律地一个节拍一个节拍地执行各种操作。单片微机内部设有定时电路,只需外接振荡元件即可工作。单片微机内部设有定时电路,只需外接振荡元件即可工作。外接振荡元件一般选用晶体振荡器,或用价廉的外接振荡元件一般选用晶体振荡器,或用价廉的RC振荡振荡器,
9、也可用外部时钟源,作为振荡元件。器,也可用外部时钟源,作为振荡元件。有的单片微机将振荡元件也集成在芯片内部。有的单片微机将振荡元件也集成在芯片内部。80C5180C52的封装及逻辑图如的封装及逻辑图如图图22所示。所示。若不需要通过并行总线扩展芯片,常采用若不需要通过并行总线扩展芯片,常采用20引脚甚引脚甚至 仅至 仅 1 4 引 脚 的 单 片 微 机,如引 脚 的 单 片 微 机,如 A t m e l 公 司 的公 司 的89C1051/2051/4051,或,或Philips公司的公司的P87LPC764。它们。它们的封装及引脚见的封装及引脚见图图23。2.2 80C51单片微机的引脚
10、及其功能单片微机的引脚及其功能按引脚的功能可分为三部分按引脚的功能可分为三部分:1.电源和晶振电源和晶振Vcc:运行和程序校验时接电源正端。:运行和程序校验时接电源正端。Vss:接地。:接地。XTAL1:输入到单片微机内部振荡器的反相放大器。当采:输入到单片微机内部振荡器的反相放大器。当采用外部振荡器时,对用外部振荡器时,对HMOS单片微机单片微机,此引脚应接地;对此引脚应接地;对CHMOS单片微机,此引脚作驱动端。单片微机,此引脚作驱动端。XTAL2:反相放大器的输出,输入到内部时钟发生器。当:反相放大器的输出,输入到内部时钟发生器。当采用外部振荡器时,采用外部振荡器时,XTAL2接收振荡器
11、信号接收振荡器信号,对,对CHMOS,此引脚,此引脚应悬浮。应悬浮。2.I/O P0:8位、漏极开路的双向位、漏极开路的双向I/O口。口。当使用片外存储器(当使用片外存储器(ROM及及RAM)时,作低)时,作低8位地址和位地址和8位位数据总线分时复用。数据总线分时复用。P1:8位、准双向位、准双向I/O 口。口。对于对于80C52,P1.0:T2,是定时器,是定时器2的计数输入端;的计数输入端;P1.1:T2EX,是定时器,是定时器2的外部输入端。的外部输入端。P2:8位、准双向位、准双向I/O口。口。当使用片外存储器(当使用片外存储器(ROM及及RAM)时,输出)时,输出高高8位地址。位地址
12、。P3:8位、准双向位、准双向I/O口,具有内部上拉电路。口,具有内部上拉电路。P3提供各种替代功能。在提供这些功能时,其输提供各种替代功能。在提供这些功能时,其输出锁存器应由程序置出锁存器应由程序置 1。串行口:串行口:P30:RXD 串行输入口。串行输入口。P31:TXD 串行输出口。串行输出口。中断:中断:P32:INT0 外部中断外部中断0输入。输入。P33:INT1外部中断外部中断1输入。输入。定时器计数器:定时器计数器:P34:T0 的外部输入。的外部输入。P35:T1的外部输入。的外部输入。数据存储器选通:数据存储器选通:P36:WR,片外数据存储器或,片外数据存储器或I/O端口
13、写选通。端口写选通。P37:RD,片外数据存储器或,片外数据存储器或I/O端口读选通。端口读选通。3.控制线控制线 RST:复位输入信号。:复位输入信号。在振荡器工作时,在在振荡器工作时,在RST上作用两个机器周期以上的上作用两个机器周期以上的高电平,将单片微机复位。高电平,将单片微机复位。EA/Vpp:片外程序存储器访问允许信号。:片外程序存储器访问允许信号。EA=1,选择片内程序存储器,选择片内程序存储器 EA=0,则程序存储器全部在片外。,则程序存储器全部在片外。使用使用80C31时,时,EA必须接地,使用必须接地,使用8751编程时,编程时,EA施加施加 21V的编程电压。的编程电压。
14、ALE/PROG:地址锁存允许信号。:地址锁存允许信号。在访问片外存储器或在访问片外存储器或I/O时,用于锁存低时,用于锁存低8位地址,位地址,以实现低地址与以实现低地址与8位数据的隔离。位数据的隔离。ALE以以 1/6的振荡频率固定速率输出,可作为对外的振荡频率固定速率输出,可作为对外输出的时钟或用作外部定时脉冲。输出的时钟或用作外部定时脉冲。PSEN:片外程序存储器读选通信号。:片外程序存储器读选通信号。在从片外程序存储器取指期间,在每个机器周期中,在从片外程序存储器取指期间,在每个机器周期中,当当PSEN有效时,程序存储器的内容被送上有效时,程序存储器的内容被送上 P0口(数据总口(数据
15、总线)。线)。2.3 80C51 CPU的结构和特点的结构和特点 中央处理器中央处理器CPU是单片微机内部的核心是单片微机内部的核心部件,主要包括控制器、运算器和工作寄存部件,主要包括控制器、运算器和工作寄存器及时序电路。器及时序电路。2.3.1中央控制器中央控制器 识别指令,并根据指令性质控制计算机各组成部件进识别指令,并根据指令性质控制计算机各组成部件进行工作的部件,与运算器一起构成中央处理器。行工作的部件,与运算器一起构成中央处理器。在在80C51中,控制器包括程序计数器中,控制器包括程序计数器PC、程序地、程序地址寄存器、指令寄存器址寄存器、指令寄存器IR、指令译码器、条件转移逻辑、指
16、令译码器、条件转移逻辑电路及定时控制逻辑电路。电路及定时控制逻辑电路。功能:控制指令的读出、译码和执行,对指令的执行功能:控制指令的读出、译码和执行,对指令的执行过程进行定时控制,并根据执行结果决定是否分支转移。过程进行定时控制,并根据执行结果决定是否分支转移。1.程序计数器程序计数器PC(Program Counter)一个独立的计数器,不属于内部的特殊功能寄存器。一个独立的计数器,不属于内部的特殊功能寄存器。存放下一条将要从程序存储器中取出的指令的地址存放下一条将要从程序存储器中取出的指令的地址。PC基本的工作过程是:读指令时,基本的工作过程是:读指令时,PC将其中的数将其中的数作为所取指
17、令的地址输出给程序存储器,然后程序存作为所取指令的地址输出给程序存储器,然后程序存储器按此地址输出指令字节,同时储器按此地址输出指令字节,同时PC本身自动加本身自动加1,指向下一条指令地址。指向下一条指令地址。PC变化的轨迹决定程序的流程。变化的轨迹决定程序的流程。在执行条件转移或无条件转移指令时,在执行条件转移或无条件转移指令时,PC将将被置入转移的目的地址,程序的流向发生变化。被置入转移的目的地址,程序的流向发生变化。在执行调用指令或响应中断时,将子程序的入在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送入口地址或者中断矢量地址送入PC,程序流向发生变化。,程序流向发生变化
18、。2.数据指针数据指针 DPTR 16位特殊功能寄存器位特殊功能寄存器.作为片外数据存储器或作为片外数据存储器或I/O寻址用的地址寄存器寻址用的地址寄存器。既可以作为一个既可以作为一个16位寄存器处理,也可以作为两位寄存器处理,也可以作为两个个8位寄存器处理,其高位寄存器处理,其高8位用位用DPH表示,低表示,低8位用位用DPL表示表示。访问片外数据存储器或访问片外数据存储器或I/O的指令为:的指令为:MOVX A,DPTR 读读 MOVX DPTR,A 写写作为访问程序存储器时的基址寄存器。寻址程序存储器作为访问程序存储器时的基址寄存器。寻址程序存储器中的表格、常数等单元,而不是寻址指令。中
19、的表格、常数等单元,而不是寻址指令。MOVCA,ADPTR JMPADPTRPC与与DPTR:都是与地址有关的都是与地址有关的16位的寄存器。位的寄存器。PC与程序存与程序存储器的地址有关,储器的地址有关,DPTR与数据存储器或与数据存储器或I/O的地址有关的地址有关。作为地址寄存器使用时,。作为地址寄存器使用时,PC与与DPTR都是通过都是通过P0和和P2口输出的。口输出的。PC的输出与的输出与ALE及及PSEN信号有关;信号有关;DPTR的的输出,则与输出,则与ALE、WR、RD信号有关。信号有关。PC只能作为只能作为16位寄存器对待,是不可以访问的位寄存器对待,是不可以访问的。DPTR可
20、以作为可以作为16位寄存器,也可以作为两个位寄存器,也可以作为两个8位特位特殊功能寄存器,殊功能寄存器,DPTR是可以访问的是可以访问的。3.指令寄存器指令寄存器IR、指令译码器及控制逻辑、指令译码器及控制逻辑 IR是用来存放指令操作码的专用寄存器。执行程是用来存放指令操作码的专用寄存器。执行程序时,首先进行程序存储器的读操作,也就是根据程序时,首先进行程序存储器的读操作,也就是根据程序计数器给出的地址从程序存储器中取出指令,送指序计数器给出的地址从程序存储器中取出指令,送指令寄存器令寄存器IR,IR的输出送指令译码器;的输出送指令译码器;指令译码器对该指令进行译码,译码结果送定时控指令译码器
21、对该指令进行译码,译码结果送定时控制逻辑电路,如制逻辑电路,如图图24所示。所示。定时控制逻辑电路则根据指令的性质发出一系列定时定时控制逻辑电路则根据指令的性质发出一系列定时控制信号,控制计算机的各组成部件进行相应的工作,执控制信号,控制计算机的各组成部件进行相应的工作,执行指令。行指令。条件转移逻辑电路主要用来控制程序的分支转移。条件转移逻辑电路主要用来控制程序的分支转移。转移条件分为两部分:转移条件分为两部分:内部条件,程序状态标志位(内部条件,程序状态标志位(PSW)和累加器的零状态;)和累加器的零状态;外部条件,外部条件,F0和所有位寻址空间的状态。和所有位寻址空间的状态。2.3.2
22、运算器运算器运算器主要用来实现对操作数的算术逻辑运算和位操作的。运算器主要用来实现对操作数的算术逻辑运算和位操作的。对传送到对传送到CPU的数据进行加、减、乘、除、比较、的数据进行加、减、乘、除、比较、BCD码校正码校正等算术运算。等算术运算。“与与”、“或或”、“异或异或”等逻辑操作;移位、置位、清零、等逻辑操作;移位、置位、清零、取反、加取反、加1、减、减1等操作。等操作。80C51的的ALU还具有极强的位处理功能,如位置还具有极强的位处理功能,如位置1、位清零、位、位清零、位“与与”、位、位“或或”等操作,对等操作,对“面向控制面向控制”特别有用。特别有用。包括包括:算术逻辑运算单元算术
23、逻辑运算单元ALUALU、累加器、累加器A A、暂存寄存器、暂存寄存器、B B寄存器、寄存器、程序状态标志寄存器程序状态标志寄存器PSWPSW以及以及BCDBCD码运算修正电路等。码运算修正电路等。ALU有有两个输入两个输入:通过暂存器通过暂存器1的输入:输入数据来自寄存器、直接寻的输入:输入数据来自寄存器、直接寻址单元(含址单元(含I/O口)、内部口)、内部RAM、寄存器、寄存器B或是立即数。或是立即数。通过暂存器通过暂存器 2或累加器或累加器 的输入:通过暂存器的输入:通过暂存器 2的运算的运算的指令有的指令有 ANL direct,data ORL direct,data XRL dir
24、ect,data其它的运算,其输入之一大多数也要通过累加器其它的运算,其输入之一大多数也要通过累加器。ALU有有两个输出两个输出:数据经过运算后,其结果又通过内部总数据经过运算后,其结果又通过内部总线送回到累加器线送回到累加器A中;中;数据运算后产生的标志位输出至程序状数据运算后产生的标志位输出至程序状态字态字 PSW。2.累加器累加器A简称简称ACC或或A寄存器。寄存器。主要功能:累加器主要功能:累加器A存放操作数,是存放操作数,是ALU单元单元的输入之一,也是的输入之一,也是ALU运算结果的暂存单元。运算结果的暂存单元。单片微机中大部分数据操作都要通过累加器单片微机中大部分数据操作都要通过
25、累加器A进行,容易产生进行,容易产生“瓶颈瓶颈”现象。现象。3B寄存器寄存器 乘法中,乘法中,ALU的两个输入分别为的两个输入分别为A、B,运算结果,运算结果,A中放积的低中放积的低8位,位,B中放积的高中放积的高8位。位。除法中,被除数取自除法中,被除数取自A,除数取自,除数取自B,商数存放于,商数存放于A,余,余数存放于数存放于B。在其它情况下,在其它情况下,B寄存器可以作为内部寄存器可以作为内部RAM中的一个单中的一个单元来使用。元来使用。4.程序状态字程序状态字PSW(Program Status Word)主要部分是主要部分是算术逻辑运算单元(算术逻辑运算单元(ALU)的输出)的输出
26、。其。其中有些位中有些位(如如F0)状态可用软件方法设定。状态可用软件方法设定。奇偶校验位奇偶校验位P、溢出标志位、溢出标志位OV、辅助进位标志位、辅助进位标志位AC及进及进位标志位位标志位CY都是都是ALU运算结果的直接输出。运算结果的直接输出。CYAC F0 RS1RS0OVP (1)P 奇偶标志位奇偶标志位 每个指令周期都由硬件来置位或清除。每个指令周期都由硬件来置位或清除。用以表示累加器用以表示累加器A中值为中值为1的个数的奇偶性的个数的奇偶性:若累加器:若累加器值为值为1的位数是奇数,的位数是奇数,P置位(奇校验);否则置位(奇校验);否则P清除清除(偶校验偶校验)。如如(A)=00
27、001010,则,则P=0。在串行通信中,常以传送奇偶校验位来检验传输数据的在串行通信中,常以传送奇偶校验位来检验传输数据的可靠性。可靠性。(2)OV 溢出标志位溢出标志位 当执行运算指令时,由硬件置位或清除。当执行运算指令时,由硬件置位或清除。OV置位:运算结果超出了目的寄存器置位:运算结果超出了目的寄存器A所能表示的带符所能表示的带符号数的范围(一号数的范围(一128127)。)。若以若以Ci表示位表示位 i向位向位il有进位,则有进位,则OV=C6 C7;当位当位6向位向位7有进位有进位(借位借位)而位而位7不向不向CY进位进位(借位借位)时;或时;或当位当位7向向C进位进位(借位借位)
28、而位而位6不向位不向位7进位进位(借位借位)时,时,OV标标志置位,表示带符号数运算时运算结果是错误的;否则,志置位,表示带符号数运算时运算结果是错误的;否则,清除清除OV标志,运算结果正确。标志,运算结果正确。对于对于MUL乘法,当乘法,当A、B两个乘数的积超过两个乘数的积超过255时时OV置位;否则,置位;否则,OV0。若。若OV0时,只需从时,只需从A寄存器中取积。寄存器中取积。对于对于DIV除法,若除数为除法,若除数为0时,时,OV=1;否则,;否则,OV=0。(3)RS1、RS0 工作寄存器组选择位工作寄存器组选择位用于设定当前工作寄存器的组号。工作寄存器共用于设定当前工作寄存器的组
29、号。工作寄存器共有有4组,其对应关系见组,其对应关系见表表21 (4)AC 辅助进位标志位辅助进位标志位 当进行加法或减法运算时,若低当进行加法或减法运算时,若低4位向高位向高4位数发位数发生进位或借位时,生进位或借位时,AC将被硬件置位;否则,被清除。将被硬件置位;否则,被清除。在十进制调整指令在十进制调整指令DA中要用到中要用到AC标志位状态。标志位状态。(5)CY 进位标志位。进位标志位。在进行算术运算时,可以被硬件置位或清除,以表在进行算术运算时,可以被硬件置位或清除,以表示运算结果中高位是否有进位或借位。示运算结果中高位是否有进位或借位。在布尔处理机中在布尔处理机中CY被认为是位累加
30、器被认为是位累加器。(6)F0 用户标志位。用户标志位。开机时该位为开机时该位为“0”。用户可根据需要,通过位操作指令置用户可根据需要,通过位操作指令置“l”或者清或者清“0”。2.3.3 时钟电路及时钟电路及CPU的工作时序的工作时序时钟电路用于产生单片微机工作所需要的时时钟电路用于产生单片微机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间钟信号,而时序所研究的是指令执行中各信号之间的相互关系。的相互关系。单片微机本身就如一个复杂的同步时序电路,单片微机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时为了保证同步工作方式的实现,电路应在唯一的时钟信号控
31、制下严格地按时序进行工作。钟信号控制下严格地按时序进行工作。1.时钟电路时钟电路 在在80C51内带有时钟电路,只需要在片外通过内带有时钟电路,只需要在片外通过XTALI和和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。在可构成一个稳定的自激振荡器。在80C51芯片内部有一个高芯片内部有一个高增益反相放大器,而在芯片的外部,增益反相放大器,而在芯片的外部,XTAL1和和XTAL2之间之间跨接晶体振荡器和微调电容。跨接晶体振荡器和微调电容。80C51的时钟电路如的时钟电路如图图26所示。所示。时钟电路由下列几部分组成
32、:振荡器及定时控制时钟电路由下列几部分组成:振荡器及定时控制元件、时钟发生器、地址锁存允许信号元件、时钟发生器、地址锁存允许信号 ALE。(1)振荡器及定时控制元件振荡器及定时控制元件 在在80C51芯片内部有一个高增益反相放大器,其输入端为引芯片内部有一个高增益反相放大器,其输入端为引脚脚XTAL1,其输出端为引脚,其输出端为引脚XTAL2。需要在片外通过需要在片外通过XTAL1和和XTAL2引脚跨接晶体振荡器和微调引脚跨接晶体振荡器和微调电容,形成反馈电路,振荡器即可工作。振荡器的结构和振荡电容,形成反馈电路,振荡器即可工作。振荡器的结构和振荡电路原理如电路原理如图图27所示。所示。振荡器
33、的工作可以由振荡器的工作可以由PD位(特殊功能寄存器位(特殊功能寄存器PCON中的一位)中的一位)控制。当控制。当PD置置1时,振荡器停止工作,系统进入低功耗工作状时,振荡器停止工作,系统进入低功耗工作状态。态。振荡器的工作频率一般在振荡器的工作频率一般在1.212 MHz之间,之间,有些单片微机的频率范围高端可达有些单片微机的频率范围高端可达40 MHz,低,低端可达端可达0Hz。在由多片单片微机组成的系统中,为了各单片在由多片单片微机组成的系统中,为了各单片微机之间时钟信号的同步,应当引入唯一的公微机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片微机的振荡脉冲。用外部脉冲信号
34、作为各单片微机的振荡脉冲。(2)内部时钟发生器内部时钟发生器内部时钟发生器实质上是一个内部时钟发生器实质上是一个2分频的触发器。其输入分频的触发器。其输入由振荡器引入的,输出为两个节拍的时钟信号。输出的前半由振荡器引入的,输出为两个节拍的时钟信号。输出的前半周期,节拍周期,节拍1(P1)信号有效;后半周期,节拍)信号有效;后半周期,节拍2(P2)信号)信号有效。每个输出周期为一个计算机有效。每个输出周期为一个计算机CPU的状态周期,即时钟的状态周期,即时钟发生器的输出为状态时钟。每个状态周期内包括一个发生器的输出为状态时钟。每个状态周期内包括一个P1节拍节拍和一个和一个P2节拍,形成节拍,形成
35、CPU内的基本定时时钟。内的基本定时时钟。(3)ALE信号信号状态时钟经过状态时钟经过3分频之后,产生分频之后,产生ALE引脚上的信号输出。引脚上的信号输出。2时序定时单位时序定时单位 时序是用定时单位来说明的。时序是用定时单位来说明的。80C51的时序定时单的时序定时单位共有位共有4个:节拍、状态、机器周期和指令周期。个:节拍、状态、机器周期和指令周期。(1)节拍节拍P 振荡脉冲的周期称为节拍振荡脉冲的周期称为节拍。(2)状态状态S 一个状态一个状态S包含两个节拍,其前半周期对应的节拍包含两个节拍,其前半周期对应的节拍叫叫P1,后半周期对应的节拍叫,后半周期对应的节拍叫P2。(3)机器周期机
36、器周期80C51采用定时控制方式,有固定的机器周期。采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为规定一个机器周期的宽度为6个状态,并依次表示为个状态,并依次表示为S1S6。一个机器周期共有。一个机器周期共有12个振荡脉冲周期,是振个振荡脉冲周期,是振荡脉冲的荡脉冲的12分频。分频。机器周期是单片微机的最小时间单位。机器周期是单片微机的最小时间单位。(4)指令周期指令周期执行一条指令所需要的时间称为指令周期。执行一条指令所需要的时间称为指令周期。它是最大的时序定时单位。它是最大的时序定时单位。80C51的指令周期的指令周期根据指令的不同,可包含有根据指令的不同,可包含有1、2、3
37、、4个机器个机器周期。周期。3.80C51指令时序指令时序 80C51共有共有111条指令,全部指令按其长度可分条指令,全部指令按其长度可分为单字节指令、双字节指令和三字节指令。为单字节指令、双字节指令和三字节指令。图图28所表示的是几种典型单机器周期和双机器所表示的是几种典型单机器周期和双机器周期指令的时序。周期指令的时序。(1)单机器周期指令,如单机器周期指令,如图图28(a)、()、(b)所示。)所示。双字节时,执行在双字节时,执行在S1P2开始,操作码被读入指令寄开始,操作码被读入指令寄存器;在存器;在S4P2时,再读入第二个字节。单字节时,执时,再读入第二个字节。单字节时,执行在行在
38、S1P2开始,操作码被读入指令寄存器;在开始,操作码被读入指令寄存器;在S4P2时仍有读操作,但被读入的字节(即下一操作码)被时仍有读操作,但被读入的字节(即下一操作码)被忽略,且此时忽略,且此时PC并不增量。并不增量。以上两种情况均在以上两种情况均在S6P2时结束操作。时结束操作。(2)双机器周期指令,如双机器周期指令,如图图28(c)、()、(d)所示。)所示。双字节时,执行在双字节时,执行在S1P2开始,操作码被读入指令寄存器;开始,操作码被读入指令寄存器;在在S4P2时,再读入的字节被忽略。由时,再读入的字节被忽略。由S5开始送出外部数据存储器开始送出外部数据存储器的地址,随后是读或写
39、的操作。在读、写期间,的地址,随后是读或写的操作。在读、写期间,ALE不输出有效不输出有效信号。信号。在第二个机器周期,片外数据存储器也寻址和选通,但不产生在第二个机器周期,片外数据存储器也寻址和选通,但不产生取指操作。取指操作。单字节时,执行在单字节时,执行在S1P2开始,在整个两个机器周期中,共发生开始,在整个两个机器周期中,共发生4次读操作,但是后次读操作,但是后3次操作都无效。次操作都无效。一般,算术一般,算术/逻辑操作发生在节拍逻辑操作发生在节拍1期间,内部寄存器对寄存器期间,内部寄存器对寄存器的传送发生在节拍的传送发生在节拍2期间。期间。图中的图中的ALE信号是为地址锁存而定义的,
40、该信号每信号是为地址锁存而定义的,该信号每有效一次对应单片微机进行一次读指令操作。有效一次对应单片微机进行一次读指令操作。在一个机器周期中,在一个机器周期中,ALE信号两次有效,第一次在信号两次有效,第一次在S1P2和和S2P1期间,第二次在期间,第二次在S4P2和和S5P1期间,有效期间,有效宽度为一个状态周期宽度为一个状态周期S。(1)单字节单周期指令单字节单周期指令(如(如 INC A)只需进行一次读指令操作。当第二个只需进行一次读指令操作。当第二个ALE有效时,由于有效时,由于PC没有加没有加1,所以读出的还是原指令。,所以读出的还是原指令。(2)双字节单周期指令双字节单周期指令(如(
41、如 ADD A,data)ALE的两次读操作都是有效的,第一次是读指令操作码,的两次读操作都是有效的,第一次是读指令操作码,第二次是读指令第二字节。第二次是读指令第二字节。(3)单字节双周期指令单字节双周期指令(如(如 INC DPTR)两个机器周期共进行两个机器周期共进行4次读指令的操作,但其中后次读指令的操作,但其中后3次的读操作次的读操作全是无效的。全是无效的。(4)单字节双周期指令单字节双周期指令(如(如MOVX类指令)类指令)执行执行MOVX类指令时,先在类指令时,先在ROM读取指令,然后对外部读取指令,然后对外部RAM进行读进行读/写操作。写操作。第一机器周期时,与其它指令一样,第
42、一次读指令(操作码)有第一机器周期时,与其它指令一样,第一次读指令(操作码)有效,第二次读指令操作无效。效,第二次读指令操作无效。第二第二机器机器周期时,进行外部周期时,进行外部RAM访问,此时与访问,此时与ALE信号无关,不信号无关,不产生读指令操作。产生读指令操作。2.4 存储器结构和地址空间存储器结构和地址空间单片微机的存储器有两种基本结构:单片微机的存储器有两种基本结构:普林斯顿(普林斯顿(Princeton)结构:程序和数据合用一个存)结构:程序和数据合用一个存储器空间的结构;储器空间的结构;哈佛结构哈佛结构:程序存储器和数据存储器截然分开,分别:程序存储器和数据存储器截然分开,分别
43、寻址的结构。寻址的结构。80C51系列采用哈佛结构。系列采用哈佛结构。图图29为为80C51存储器映象图。存储器映象图。在物理上设有在物理上设有4个存储器空间个存储器空间 程序存储器:程序存储器:片内程序存储器;片内程序存储器;片外程序存储器。片外程序存储器。数据存储器:数据存储器:片内数据存储器;片内数据存储器;片外数据存储器。片外数据存储器。在逻辑上设有在逻辑上设有3个存储器地址空间个存储器地址空间 片内、片外统一的片内、片外统一的 64 KB程序存储器地址空间;程序存储器地址空间;片内片内256(80C52 为为384)B数据存储器地址空间;数据存储器地址空间;片外片外64 KB的数据存
44、储器地址空间。的数据存储器地址空间。片内数据存储器空间,在物理上又包含两部分:片内数据存储器空间,在物理上又包含两部分:80C51:0127B为片内数据存储器空间;为片内数据存储器空间;128255B为特殊功能寄存器空间。为特殊功能寄存器空间。80C52:0127 B为片内数据存储器空间;为片内数据存储器空间;128255B共共128个字节是数据存储器和特殊个字节是数据存储器和特殊 功能寄存器地址重叠空间。功能寄存器地址重叠空间。80C51有三种基本的寻址空间:有三种基本的寻址空间:64 KB的片内、外程序存储器寻址空间;的片内、外程序存储器寻址空间;64 KB的片外数据存储器寻址空间;的片外
45、数据存储器寻址空间;256(或(或384)B的片内数据存储器寻址空间,的片内数据存储器寻址空间,其中包括特殊功能寄存器寻址空间。其中包括特殊功能寄存器寻址空间。2.4.l 程序存储器程序存储器 存放经调试正确的应用程序和表格之类的固定常数存放经调试正确的应用程序和表格之类的固定常数。采用。采用16位位的程序计数器的程序计数器 PC和和16位的地址总线,可扩展的地址空间为位的地址总线,可扩展的地址空间为64 KB。程序存储器分为片内和片外两部分。程序存储器分为片内和片外两部分。EA引脚接高电平时,程序从片内程序存储器引脚接高电平时,程序从片内程序存储器0000H开始执行;当开始执行;当PC值超出
46、片内值超出片内程序存储器程序存储器容量时,会自动转向片外程序存储器空容量时,会自动转向片外程序存储器空间执行。间执行。EA引脚接低电平时,迫使系统全部执行片外程序存储器引脚接低电平时,迫使系统全部执行片外程序存储器0000H开始存放的程序。开始存放的程序。对于片内无对于片内无ROM的的80C31/80C32,应将,应将EA引脚固定接低电平,引脚固定接低电平,以迫使系统全部执行片外程序存储器程序。以迫使系统全部执行片外程序存储器程序。程序存储器的特定的程序入口地址程序存储器的特定的程序入口地址 由于系统复位后的由于系统复位后的PC地址为地址为0000H,故系统从,故系统从0000H单元开始取指,
47、执行程序。从单元开始取指,执行程序。从0003H002DH单元被保留用于单元被保留用于6个中断源的中断服务程序个中断源的中断服务程序的入口地址。的入口地址。复位复位0000H 外部中断外部中断0 0003H 计时器计时器T0溢出溢出 000BH 外部中断外部中断1 0013H 计时器计时器T1溢出溢出 001BH 串行口中断串行口中断 0023H 计时器计时器 T2/T2EX002BH(80C52)片内程序存储器片内程序存储器 类型有:掩膜类型有:掩膜ROM、OTPROM和和MTPROM(包(包括括EPROM及及E2PROM等)。等)。87C51中为中为4KB的可编程、可改写的只读存储器的可编
48、程、可改写的只读存储器EPROM;89C51中为中为4KB的可编程、可改写的只读存储器的可编程、可改写的只读存储器EEPROM;80C31片内没有程序存储器,使用时必须由片外进行扩展。片内没有程序存储器,使用时必须由片外进行扩展。片内程序存储器的容量目前已达到片内程序存储器的容量目前已达到 62KB。由由RAM构成,构成,存放随机数据存放随机数据。片内数据存储器地址只有片内数据存储器地址只有8位,最大寻址范围为位,最大寻址范围为256个字节。个字节。片外数据存储器有片外数据存储器有16位数据指针位数据指针DPTR,用于访,用于访问片外数问片外数据存储器据存储器。80C51具有具有64KB的数据
49、存储器扩展的数据存储器扩展能力。能力。2.4.2 内部数据存储器内部数据存储器片内数据存储器在物理上又分成两个独立的功能不同的区。片内数据存储器在物理上又分成两个独立的功能不同的区。片内数据片内数据RAM区:对区:对80C51,为,为0 127B;对对80C52,为,为0255B。特殊功能寄存器特殊功能寄存器SFR区:地址空间的高区:地址空间的高 128 B。对于对于80C52,高,高128B的的RAM区和区和SFR区的地址空间区的地址空间是重叠的。访问高是重叠的。访问高 128B RAM区时,选用间接寻址方式;区时,选用间接寻址方式;访问访问SFR区,则应选用直接寻址方式。区,则应选用直接寻
50、址方式。图图2-10为片内数据存储器的地址空间分布图。为片内数据存储器的地址空间分布图。片内数据片内数据RAM区区 工作寄存器区工作寄存器区用寄存器直接寻址的区域。用寄存器直接寻址的区域。从从图图 210中可知,其中片内数据中可知,其中片内数据 RAM区的区的 031(00H1FH),共),共 32个单元,是个单元,是 4个通用工作寄存器组个通用工作寄存器组(表表2l),每个组包含),每个组包含 8个个 8位寄存器,编号为位寄存器,编号为 R0R7。在某一时刻,只能选用一个寄存器组使用。其选择是通在某一时刻,只能选用一个寄存器组使用。其选择是通过软件对程序状态字(过软件对程序状态字(PSW)中