第2章MCS-51单片机的硬件结构第2章MCS-51单片机的硬件结构2.1MCS-51单片机的基本结构2.2MCS-51单片机的引脚及片外总线结构2.3微处理器、CPU的时序及辅助电路2.4MCS-51单片机的存储器配置2.1.1MCS-51单片机的基本组成图2-1MCS-51单片机基本结构示意图时钟电路SFR和RAMROMCPU定时/计数器并行端口中断系统串行端口系统总线时钟源T0T1P0P1P2P3TXDRXDINT0INT1MCS-51单片机的基本组成(1)一个8位微处理器CPU。(2)数据存储器RAM和特殊功能寄存器SFR。(3)内部程序存储器ROM。(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。(6)一个串行端口,用于数据的串行通信。(7)中断控制系统。(8)内部时钟电路。返回本节2.1.2MCS-51单片机的外部引脚说明803180518751•1.I/O口线功能4个8位并行I/O接口引脚P0.0~P0.7、P1.0~P1.7、P2.0~P2.7和P3.0~P3.7为多功能引脚,可自动切换用作数据总线、地址总线、控制总线和或I/O接口外部引脚。40个引脚分为四类:电源、地2条;时钟2条;控制4条;I/O线32条。P0.0--P0.7(39-32):双向I/O口P0.第二功能是在访问外部存储器时,可分时用作低8位地址和8位数据线;在对8751编程和校验时,用于数据的输人/输出。PO口能以吸收电流的方式驱动8个LS型TTL负载Pl.0--Pl.7(1-8):双向I/O口Pl。P1口能驱动(吸收或输出电流)4个LS型TTL负载。在对EPROM编程和程序验证时,它接收低8位地址。在8052单片机中P1.0还用作定时器2的计数触发输人端T2,P1.1还用作定时器2的外部控制端T2EX。P2.0--P2.7(21-28):双向I/O口P2。P2口可以驱动(吸收或输出电流)4个LS型TTL负载。第二功能是在访问外部存储器时,输出高8位地址。在对EPROM编程和校验时,它接收高位地址。P3.0--P3.7(10-17):双向I/O口P3。P3口能驱动(吸收或输出电流)4个LS型TTL负载。P3口的每条引脚都有各自的第二功能,详见2.6节。2.控制线ALE:地址锁存允许信号端PSEN:外部程序存储器读选通信号端EA/VPP:程序存储器选择信号端和编程电源输入端803180518751RST/VPD(9):RST是复位信号输人端ALE/(30):ALE是地址锁存允许信号PROGPROG在访问外部存储器时,用来锁存由PO口送出的低8位地址信号。在不访问外部存储器时,ALE以振荡频率1/6的固定速率输出脉冲信号。因此它可用作对外输出的时钟。但要注意,只要外接有存储器,ALE端输出的就不再是连续的周期脉冲信号。第二功能用于对8751片内EPROM编程的脉冲输人端。它是外部程序存储器ROM的读选通信号。在执行访问外部ROM指令时,会自动产生PSEN信号;而在访问外部数据存储器RAM或访问内部ROM时,不产生PSEN信号。PSEN(29):访问外部存储器的控制信号。当EA高电平时,访问内部程序存储器;但当程序计数器PC的值超过OFFFH(对8051/80051/8751)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,只访问外部程序存储器,不管是否有内部程序存储器。第二功能VPP为对8751片内EPROM的21V编程电源输入。/PPEAV(31):RST/VPD(9):RST是复位信号输人端。当此输人端保持两个机器周期(24个振荡周期)的高电平时,就可以完成复位操作。第二功能是VPD,即备用电源输人端。当主电源发生故障,降低到规定的低电平以下时,vl,1。将为片内RAM提供备用电源,以保证存储在RAM中的信息不丢失。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。21个特殊功能寄存器复位后的状态为确定值。。XTALl(19):接外部晶体的一个引脚。当单片机采用外部时钟信号时,此脚应接地。XTAL2(18):接外部晶体的一个引脚。当单片机采用外部时钟信号时,外部时钟信号由此引脚接入。使用单片机内部振荡电路时,用来接外部晶体的两端和微调电容。当单片机采用外部时钟信号时,则用来输入时钟脉冲。Vss(20):接地端。Vcc(40):电源端,接十5V。2.2微处理器1.运算器运算器由8位算术逻辑运算单元ALU(ArithmeticLogicUnit)、8位累加器ACC(Accumulator)、8位寄存器B、程序状态字寄存器PSW(ProgramStatusWord)、8位暂存寄存器TMP1和TMP2等组成。主要进行数据的处理和加工。1)、ALU功能:用来完成二进制数的算术四则运算和值的逻辑运算。并通过对运算结果的判定,影响程序状态字寄存器PSW相关位的状态。2)ACC:8位专用寄存器,作ALU的一个输入端,同时ALU的输出运算结果也送到ACC,最忙。运算器通道0驱动器通道2驱动器RAM地址锁存器RAM通道0锁存器通道2锁存器ROM/EPROMB寄存器程序地址寄存器缓冲器PC递增器程序计数器PC0驱动器DPTR指针VCCGNDP1.0~P1.7堆栈指针SPACCTMP2PSW通道3锁存器通道1锁存器通道1驱动器通道3驱动器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中断、串行口和定时器逻辑振荡器P3.0~P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令寄存器定时和控制逻辑指令译码器图2-2MCS-51片内总体结构框图内部总线思考题1、ALU的功能是什么?解释ADDA,#24H。2、ALU的两个输入端的操作数来自何处?3、暂存寄存器TMP起作用?4、什么总线?有何特点?什么是内部总线?什么是外部总线?(P7)5、什么是缓冲器?工作原理?3)程序状态字寄存器PSW定义格式:C:进借位标志;AC:辅助进借位标志;F0:用户标志;RS1、RS0:工作寄存器组选择。D7D6D5D4D3D2D1D0CACF0RS1RS0OVXPRS1RS0选择工作寄存器组000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)OV:溢出标志P:奇偶标志2.控制器是CPU的大脑中枢,主要由控制部件、时钟发生器、指令寄存器IR、指令译码器ID、数据指针DPTR、程序计数器PC、堆栈指针SP等组成。功能:对逐条指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作,从而使指令得以执行。存入指令寄存器寄存指令译码器译码由定时与控制电路产生一系列控制信号思考题:一条指令如何执行?通道0驱动器通道2驱动器RAM地址锁存器RAM通道0锁存器通道2锁存器ROM/EPROMB寄存器程序地址寄存器缓冲器PC递增器程序计数器PC0驱动器DPTR指针VCCGNDP1.0~P1.7堆栈指针SPACCTMP2PSW通道3锁存器通道1锁存器通道1驱动器通道3驱动器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中断、串行口和定时器逻辑振荡器P3.0~P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令寄存器定时和控制逻辑指令译码器图2-2MCS-51片内总体结构框图通道0驱动器通道2驱动器RAM地址锁存器RAM通道0锁存器通道2锁存器ROM/EPROMB寄存器程序地址寄存器缓冲器PC递增器程序计数器PC0驱动器DPTR指针VCCGNDP1.0~P1.7堆栈指针SPACCTMP2PSW通道3锁存器通道1锁存器通道1驱动器通道3驱动器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中断、串行口和定时器逻辑振荡器P3.0~P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令寄存器定时和控制逻辑指令译码器图2-2MCS-51片内总体结构框图P0.0~P0.7P2.0~P2.7返回本节单片机时钟电路通常有两种形式:1.内部振荡方式:MCS-51单片机片内有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。把放大器与作为反馈元件的晶体振荡器或陶瓷谐振器连接,就构成了内部自激振荡器并产生振荡时钟脉冲(如图2-10所示)。2.外部振荡方式:外部振荡方式就是把外部已有的时钟信号引入单片机内(如图2-11所示)。3、单片机时钟电路及CPU基本时序3、单片机时钟电路及CPU基本时序向CPU提供两相时钟信号振荡器输出信号一、机器周期、状态、振荡周期一个机器周期=6个状态=12个振荡周期1、振荡周期:振荡器输出的振荡时钟脉冲信号的周期。单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。2、时钟周期:又称状态周期、状态时间S,是振荡周期的两倍。分为P1、P2节拍。P1节拍通常完成逻辑操作,P2节拍通常完成内部寄存器间数据传送。3、机器周期若把一条指令执行过程分为几个基本操作,则执行每个基本操作所需要的时间,称为机器周期。单片机的一个机器周期包括12个振荡周期,分为6个S状态:S1-S6。每个状态又分为2拍,即前面介绍的P1和P2信号;个机器周期中的12个振荡周期可表示为S1P1,S1P2,S2P1……S6P1,S6P2o4、指令周期CPU执行一条指令所需要的时间。是以机器周期为单位的,CPU执行一条指令通常需要1~4个机器周期。P1P2S1P2振荡周期时钟周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2MCS-51单片机各种周期的相互关系思考题:若采用12MHZ晶振,各周期是多少?振荡周期=1/fosc=1/12MHZ=0.0833us再读下一条指令再读下一条指令XTAL2(OSC)P2S1ALE读操作码读下一个操作码(丢弃)读第二字节(a)单字节,单周期指令例:MOVAR1(d)单字节,双周期指令,如MOVXP1P2S1P1P2S2P1P2S3P1P2S4P2S5P2S6P2S1P1P1P1P1P2S2P1P2S3P1P2S4P1P2S5P2S6P2S1S2P1P1P1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2S1P1P2S1读操作码P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2S1P1读下一个操作码(丢弃)(b)双字节,单周期指令例:ADDAdir(c)单字节,双周期指令例:INCDPTR读操作码(MOVX)读下一个操作码(丢弃)无取指无ALE无取指地址数据(DATA)访问外部存储器P2S1读操作码P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2S1P1P2S2P1P2S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2S1P1P2S2P1二、CPU执行指令时序2.3MCS-51单片机的存储器配置2.3.1片内数据存储器2.3.2片外数据存储器2.3.3程序存储器返回本章首页2.3.1片内数据存储器见下张幻灯片特殊功能寄存器SFR通用RAM区00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能寄存器中位寻址外部RAM(I/O口地址)0000HFFFFH内部数据存储器(a)外部数据存储器(