第2章89C51单片机单片机的硬件结构.ppt
第2章 89C51单片机单片机的硬件结构,2.1 89C51单片机的片内结构片内结构如图2-1所示:,图2-1 89C51单片机的片内结构,由如下功能部件组成:对图2-1中的片内各部件做简单介绍。1.CPU(微处理器)2.数据存储器(RAM)片内为128个字节(52子系列的为256个字节)3.程序存储器(ROM/EPROM)8031:无此部件;8051:4K字节ROM;8751:4K字节EPROM;89C51/89C52/89C55:4K/8K/20K 字节闪存。4.4个并行可编程的8位I/O口 P1口、P2口、P3口、P0口5.串行口 1个全双工的异步串行口,具有四种工作方式。,6.定时器/计数器7.中断系统8.特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,Special Function Register)的集中控制方式。,MCS-51系列单片机配置一览表,图2-2 89C51的引脚,2.2 89C51的引脚 40只引脚双列直插封装(DIP)。,从一片集成电路的角度去认识单片机,80C51:40个引脚双排直插DIP封装,大致可分为3类:电源及时钟、控制和I/O引脚。,80C51:40个引脚双排直插DIP封装,大致可分为3类:电源及时钟、控制和I/O引脚。,40只引脚按功能分为3类:(1)电源及时钟引脚:Vcc、Vss;XTAL1、XTAL2。(2)控制引脚:PSEN*、EA*、ALE、RESET(即RST)。(3)I/O口引脚:P0、P1、P2、P3,为4个8位I/O口的外部引脚,1电源引脚(1)Vcc(40脚):+5V电源;(2)Vss(20脚):接地。2时钟引脚(1)XTAL1(19脚):接外部晶体,如果采用外接振荡器时,振荡器的输出应接到此引脚上。(2)XTAL2(18脚):接外部晶体的另一端或采用外接振荡器时悬空。,2.2.1 电源及时钟引脚,1545pfx2,112MHz(MCS-51)024MHz(Atmel-89C),XTAL1,XTAL2,也可以由 XTAL1端接入外部时钟,此时应将 XTAL2接地:,XTAL2,XTAL1,外部时钟,通常外接一个晶振两个电容,2.2.2 控制引脚 提供控制信号,有的引脚还具有复用功能。(1)RST/VPD(9脚):复位与备用电源。(2)EA*/VPP(Enable Address/Voltage Pulse of ProgRaming,31脚)EA*:为内外程序存储器选择控制端。EA*=1,访问片内程序存储器,但在PC(程序计数器)值超过0FFFH(对于8051、8751)时,即超出片内程序存储器的4K字节地址范围时,将自动转向执行外部程序存储器内的程序。EA*=0,单片机则只访问外部程序存储器。不管芯片内有否内ROM。对80C31芯片,片内无ROM,因此EA必须接地。VPP:本引脚的第二功能。用于施加编程电压(例如+21V或+12V)。对89C51,加在VPP脚的编程电压为+12V或+5V。,(3)ALE/PROG*(30脚):地址锁存允许/片内EPROM编程脉冲 第一功能:ALE为地址锁存允许,用来锁存P0口送出的低8位地址,可驱动8个LS型TTL负载。第二功能:PROG*为编程脉冲输入端,片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。,(4)PSEN*(29脚):外部程序存储器的读选通信号(外ROM读选通信号)。或称:寻址外部程序存储器时选通外部EPROM的读控制端(OE)低有效,可驱动8个LS型TTL负载。,单片机,锁存器74LS373,P0.0-P0.7,ALE,PSEN,P2.0-P2.4,8D,8Q,OE,A8-A12,A0-A7,D0-D7,G,EA,OE,CE,EPROM,EPROM,89C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。,2.2.3 I/O口引脚,(1)P0口:当89C51扩展外部存储器及I/O接口芯片时,P0口作为地址总线(低8位)及数据总线的分时复用端口。为双向I/O口。也可作为通用的I/O口使用,但需加上拉电阻,这时为准双向口。当作为普通的I/O输入时,应先向端口的输出锁存器写入1。P0口可驱动8个LS型TTL负载。(2)P1口:8位准双向I/O口,具有内部上拉电阻,可驱动4个LS型TTL负载。(3)P2口:8位准双向I/O口,与地址总线(高8位)复用,具有内部上拉电阻,可驱动4个LS型TTL负载。(4)P3口:8位准双向I/O口,双功能复用口,具有内部上拉电阻,可驱动4个LS型TTL负载。P3口还可提供第二功能,定义如表2-1所列,应熟记。注意:准双向口与双向三态口的差别。(1)当3个准双向I/O口作输入口使用时,要向该口先写“1”。(2)准双向I/O口无高阻“浮空”状态。,2.3 89C51的CPU 由运算器和控制器所构成2.3.1 运算器 1算术逻辑运算单元ALU 进行算术、逻辑运算,还具有位操作功能,2累加器A 使用最频繁的寄存器,可写为Acc。累加器A的作用:(1)是ALU的输入之一,又是运算结果的存放单元。(2)数据传送大多都通过累加器A。MCS-51增加了一部分可以不经过累加器的传送指令,即可加快数据的传送速度,又减少A的“瓶颈堵塞”现象。A的进位标志Cy同时又是位处理机的位累加器。3程序状态字寄存器PSW PSW也称为标志寄存器,存放各有关标志。其结构和定义如图2-3:,(1)Cy(PSW.7)进位标志位,用于表示Acc.7有否 向更高位进位。(2)Ac(PSW.6)辅助进位标志位,用于BCD码的十 进制调整运算。用于表示Acc.3有否 向Acc.4进位(3)F0(PSW.5)用户使用的状态标志位。,图2-3 程序状态字寄存器PSW,(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。如表2-2。RS1、RS0与4组工作寄存器区的对应关系 RS1 RS0 所选的4组寄存器 0 0 0区(内部RAM地址 00H07H)0 1 1区(内部RAM地址 08H0FH)1 0 2区(内部RAM地址 10H17H)1 1 3区(内部RAM地址 18H1FH)(5)OV(PSW.2)溢出标志位 指示运算是否溢出。注意各种算术运算指令对该位的影响(6)PSW.1位:保留位,未用(7)P(PSW.0)奇偶标志位 P=1,A中“1”的个数为奇数P=0,A中“1”的个数为偶数,2.3.2 控制器 1程序计数器PC(Program Counter)存放下一条要执行的指令在程序存储器中的地址。基本工作方式有以下几种:(1)程序计数器自动加1(2)执行有条件转移或无条件转移指令时,PC将被置入新的数值,从而使程序的流向发生变化。(3)执行子程序调用或中断调用,完成下列操作:PC的现行值保护 将子程序入口地址或中断向量的地址送入PC。2指令寄存器IR、指令译码器及控制逻辑电路,2.4 89C51存储器的结构,89C51的存储器配置方式与其他常用的微机系统不同,属哈佛结构(注意:什么是哈佛结构?),它把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能。程序存储器用于存放程序和表格常数;数据存储器用于存放程序运行数据和结果。,89C51的存储器组织结构可以分为三个不同的存储空间,分别是:,64KB程序存储器(ROM),包括片内ROM和片外ROM;,256B内部数据存储器(内RAM)(包括特殊功能寄存器)。,64KB外部数据存储器(外RAM);,89C51存储空间配置图,存储器空间可划分为5类:1.程序存储器空间 片内程序存储器为4KB 的 Flash 存储器 2.片内数据存储器空间:128B 3.特殊功能寄存器 SFR-Special Function Register4.位地址空间:211个可寻址位。5.外部数据寄存器空间:片外可扩展64K字节RAM。,地址范围:0000HFFFFH,共64KB。其中:低段4KB:0000H0FFFH 89C51和87C51在片内,80C31在片外。高段60KB:1000HFFFFH。在片外。读写ROM用MOVC指令,控制信号是PSEN和EA。读ROM是以程序计数器PC作为16位地址指针,依次读相应地址ROM中的指令和数据,每读一个字节,PC+1PC,这是CPU自动形成的。但是有些指令有修改PC的功能,例如转移类指令和MOVC指令,CPU将按修改后PC的16位地址读ROM。,2.4.1 程序存储器,存放应用程序和表格之类的固定常数。分为片内和片外两部分,由EA*引脚上所接的电平确定。程序存储器中的0000H地址是系统程序的启动地址,读外ROM的过程:,CPU从PC(程序计数器)中取出当前ROM的16位地址,分别由P0口(低8位)和P2口(高8位)同时输出,ALE信号有效时由地址锁存器锁存低8位地址信号,地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到外ROM 16位地址输入端,当PSEN信号有效时,外ROM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。,需要指出的是:64KB中有一小段范围是89C51系统专用单元,0003H0023H是5个中断源中断服务程序入口地址,用户不能安排其他内容。89C51复位后,PC=0000H,CPU从地址为0000H的ROM单元中读取指令和数据。从0000H到0003H只有3B,根本不可能安排一个完整的系统程序,而89C51又是依次读ROM字节的。因此,这3B只能用来安排一条跳转指令,跳转到其他合适的地址范围去执行真正的主程序。,5个专用单元具有特殊用途。为5个中断源的中断入口地址,表2-3 5种中断源的中断入口地址外中断0 0003H定时器T0 000BH外中断1 0013H 定时器T1 001BH 串行口 0023H,从广义上讲,89C51内RAM(128B)和特殊功能寄存器(128B)均属于片内RAM空间,读写指令均用MOV指令。但为加以区别,内RAM通常指00H7FH的低128B空间。,2.4.2 内部数据存储器 128个,字节地址为00H7FH。,89C51内RAM又可分成三个物理空间:工作寄存器区、位寻址区和数据缓冲区。,00H1FH:32个单元,是4组通用工作寄存器区20H2FH:16个单元,可进行128位的位寻址30H7FH:用户RAM区,只能字节寻址,用作数据缓冲区以及堆栈区。,作用:,工作寄存器区,工作寄存器区分为4个区:0区、1区、2区、3区。每区有8个寄存器:R0R7,寄存器名称相同。但是,当前工作的寄存器区只能有一个,由PSW中的D4、D3位决定。,有专用于工作寄存器操作的指令,读写速度比一般内RAM要快,指令字节比一般直接寻址指令要短,还具有间址功能,能给编程和应用带来方便。,位寻址区 地址:从20H2FH共16字节(Byte,缩写为英文大写字母B)。每B有8位(bit,缩写为小写b),共128位,每一位均有一个位地址,可位寻址、位操作。即按位地址对该位进行置1、清0、求反或判转。用途:存放各种标志位信息和位数据。注意事项:位地址与字节地址编址相同,容易混淆。区分方法:位操作指令中的地址是位地址;字节操作指令中的地址是字节地址。,数据缓冲区,内RAM中30H7FH为数据缓冲区,用于存放各种数据和中间结果,起到数据缓冲的作用。,2.4.3 特殊功能寄存器(SFR)CPU对片内各种功能部件的控制采用特殊功能寄存器集中控制方式,共21个。有的SFR可进行位寻址。表2-4是SFR的名称及其分布。其字节地址的末位是0H或8H可位寻址。下面介绍SFR块中的某些寄存器。,表2-4 SFR的名称及其分布,共21个,特殊功能寄存器(SFR)地址映象表(一),特殊功能寄存器地址映象表(二),特殊功能寄存器地址映象表(三),注:带括号的字节地址表示每位有位地址可位操作。,1堆栈指针SP 指示堆栈顶部在内部RAM块中的位置 复位后,SP中的内容为07H。(1)保护断点(2)现场保护堆栈向上生长,2.数据指针DPTR 16位,由两个8位寄存器DPH、DPL组成。主要用于存放一个16位地址,作为访问外部存储器(外RAM和ROM)的地址指针。高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。3.寄存器B 为执行乘法和除法操作设置的。在不执行乘、除的情况下,可当作一个普通寄存器来使用。,执行调用子程序或发生中断时,CPU会自动将当前PC值压入堆栈,将子程序入口地址或中断入口地址装入PC;子程序返回或中断返回时,恢复原有被压入堆栈的PC值,继续执行原顺序程序指令。,4.程序计数器PC,PC不属于特殊功能寄存器,不可访问,在物理结构上是独立的。PC是一个16位的地址寄存器,用于存放将要从ROM中读出的下一字节指令码的地址,因此也称为地址指针。PC的基本工作方式有:,自动加1。CPU从ROM中每读一个字节,自动执行PC+1PC;,执行转移指令时,PC会根据该指令要求修改下一次读ROM新的地址;,2.4.4 位地址空间 211个(128个+83个)寻址位。位地址范围为:00HFFH。内部RAM的可寻址位128个(字节地址20H2FH)见表2-5(P24)。特殊功能寄存器SFR为83个可寻址位,见表2-6。,表2-5 内部RAM的可寻址位及位地址,表2-6 SFR中的位地址分布,2.4.5 外部数据存储器最多可外扩64K字节的RAM或I/O。,地址范围:0000HFFFFH 共64KB。,读写外RAM用MOVX指令,控制信号是P3口中的RD和WR。,一般情况下,只有在内RAM不能满足应用要求时,才外接RAM。,外RAM 16位地址分别由P0口(低8位)和P2口(高8位)同时输出,ALE信号有效时由地址锁存器锁存低8位地址信号,地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到外RAM 16位地址输入端,当RD信号有效时,外RAM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。,读外RAM的过程:,写外RAM的过程:,写外RAM的过程与读外RAM的过程相同。只是控制信号不同,信号换成WR信号。当WR信号有效时,外RAM将数据总线(P0口分时传送)上的数据写入相应地址存储单元中。,使用各类存储器,注意几点:(1)地址的重叠性 程序存储器(ROM)与数据存储器(RAM)全部64K字节地址空间重叠)。(2)程序存储器(ROM)与数据存储器(RAM)在使用上是严格区分的。(3)位地址空间共有两个区域。(4)片外数据存储区中,RAM与I/O端口统一编址。所有外围I/O端口的地址均占用RAM单元地址,使用与访问外部数据存储器相同的传送指令。,图2-5为各类存储器在存储器空间的位置的总结。,图2-5,2.5 并行I/O端口,有4个8位并行I/O口,共32条端线:P0、P1、P2和P3口。每一个I/O口都能用作输入或输出。,用作输入时,均须先写入“1”;用作输出时,P0口应外接上拉电阻。,P0口的负载能力为8个LSTTL门电路;P1P3口的负载能力为4个LSTTL门电路。,在并行扩展外存储器或I/O口情况下,P0口用于低8位地址总线和数据总线(分时传送)P2口用于高8位地址总线,P3口常用于第二功能,用户能使用的I/O口只有P1口和未用作第二功能的部分P3口端线。,2.5.1 P0端口,图2-6,1.位电路结构P0口某一位的电路包括:(1)一个数据输出锁存器,用于数据位的锁存(2)两个三态的数据输入缓冲器。(3)一个多路转接开关MUX,使P0口可作通用I/O口,或地址/数据线口。(4)数据输出的驱动和控制电路,由两只场效应管(FET)组成,上面的场效应管构成上拉电路。,2.工作过程分析(1)P0口作为地址或数据总线使用 CPU发出控制信号为高电平,打开上面的与门,使MUX打向上边,使内部地址/数据线与下面的场效应管反相接通。此时由于上下两个FET处于反相,形成推拉式电路结构,大大提高负载能力。(2)P0口作通用的I/O口使用 CPU发来的“控制”信号为低电平,上拉场效应管截止,MUX打向下边,与D锁存器的Q*端接通。a.P0作输出口使用 来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。注意:由于输出电路是漏极开路(因为这时上拉场效应管截止),必须外接上拉电阻才能有高电平输出(这时就不为双向口)。,b.P0作输入口使用 区分“读引脚”和“读锁存器”。“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。3P0口的特点 P0口具有如下特点:P0口为双功能口地址/数据复用口和通用I/O口。(1)当P0口用作地址/数据复用口时,为一个真正的双向口,用作外扩存储器,输出低8位地址和输出/输入8位数据。(2)当P0口用作通用I/O口时,由于需要在片外接上拉电阻,端口不存在高阻抗(悬浮)状态,因此为一个准双向口。一般情况下,如果P0口已作为地址/数据复用口,就不能再作为通用I/O口使用。,补充:单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,地址/数据,控制,引脚P0.X,3,4,Vcc,V1,V2,2,1,D,Q,CK,/Q,读引脚=1,读锁存器,写锁存器,内部总线,地址/数据,控制,引脚P0.X,3,4,0,0,1,0,0,截止,截止,=0,Vcc,单片机的引脚(P0口),P0用作通用I/O时,控制=0:(1)此脚作输入口(事先必须对它写“1”),V2,V1,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,地址/数据,控制,引脚P0.X,3,4,0,0,1,0,0,截止,截止,=0,Vcc,单片机的引脚(P0口),P0用作通用I/O时,控制=0:(2)此脚作输出口时,当P0口用作输出口时,因输出级处于开漏状态,必须外接上拉电阻。当“写锁存器”信号加在锁存器的时钟端CLK上,此时D触发器将“内部总线”上的信号反相后输出到Q端,若D端信号为0,Q=1,v2导通,P0 x引脚输出“0”;若D端信号为1,Q=0,v2截止,虽然V1截止,因P0 x引脚已外接上拉电阻,P0 x引脚输出“1”。,V2,V1,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址/数据,控制=1,引脚P0.X,3,4,1,0,1,1,=0,导通,截止,=0,Vcc,单片机的引脚(P0口),P0口用作地址/数据复用口,控制=1(1)作地址/数据输出:输出地址/数据=0 时,V1,V2,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址/数据,控制=1,引脚P0.X,3,4,1,1,0,0,=1,截止,导通,=1,Vcc,单片机的引脚(P0口),P0口用作地址/数据复用口,控制=1(2)作地址/数据输出:输出地址/数据=1 时,V1,V2,2,1,D,Q,CK,/Q,读引脚=1,读锁存器,写锁存器,内部总线,地址/数据,控制=0,引脚P0.X,3,4,Vcc,单片机的引脚(P0口),P0口用作地址/数据复用口(3)作地址/数据输入:与P0用作通用I/O时输入时情况相同,CPU使V1、V2均截止,从引脚上输入的外部数据经缓冲器U2进入内部数据总线。,V1,V2,2.5.2 P1端口 字节地址90H,位地址90H97H。P1口某一位的位电路结构如图2-7所示。,图2-7,1位电路结构P1口位电路结构由三部分组成:(1)一个数据输出锁存器,用于输出数据位的锁存。(2)两个三态的数据输入缓冲器BUF1和BUF2,分别用于锁存器数据和引脚数据的输入缓冲。(3)数据输出驱动电路,由一个场效应管(FET)和一个片内上拉电阻组成。2工作过程分析P1口只能作为通用的I/O口使用。(1)P1口作为输出口时,若CPU输出1,Q=1,Q*=0,场效应管截止,P1口引脚的输出为1;若CPU输出0,Q=0,Q*=1,场效应管导通,P1口引脚的输出为0。,(2)P1口作为输入口时,分为“读锁存器”和“读引脚”两种方式。“读锁存器”时,锁存器的输出端Q的状态经输入缓冲器BUF1进入内部总线;“读引脚”时,先向锁存器写1,使场效应管截止,P1.x引脚上的电平经输入缓冲器BUF2进入内部总线。3P1口的特点 P1口由于有内部上拉电阻,没有高阻抗输入状态,称为准双向口。作为输出口时,不需要在片外接上拉电阻。P1口“读引脚”输入时,必须先向锁存器写1。,2.5.3 P2口 字节地址为A0H,位地址A0HA7H。P2口是一个双功能口,P2口某一位的位电路结构如图2-8所示。,图2-8,1位电路结构P2口某一位的电路包括:(1)一个数据输出锁存器,用于输出数据位的锁存。(2)两个三态数据输入缓冲器BUF1和BUF2,分别用于锁存器数据和引脚数据的输入缓冲。(3)一个多路转接开关MUX,它的一个输入是锁存器的Q端,另一个输入是内部地址的高8位。(4)输出驱动电路,由场效应管(FET)和内部上拉电阻组成。,2工作过程分析(1)P2口用作地址总线在内部控制信号作用下,MUX与“地址”接通。当“地址”线为0时,场效应管导通,P2口引脚输出0;当“地址”线为1时,场效应管截止,P2口引脚输出1。(2)P2口用作通用I/O口在内部控制信号作用下,MUX与 锁存器的Q端接通。CPU输出1时,Q=1,场效应管截止,P2.x引脚输出1;CPU输出0时,Q=0,场效应管导通,P2.x引脚输出0。输入时,分为“读锁存器”和“读引脚”两种方式。“读锁存器”时,Q端信号经上方的输入缓冲器进入内部总线;“读引脚”时,先向锁存器写1,使场效应管截止,P2.x引脚上的电平经下方的输入缓冲器进入内部总线。,3P2口的特点 作为地址输出线使用时,P2口可以输出外存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址线。作为通用I/O口使用时,P2口为一个准双向口。功能与P1口一样。,2.5.4 P3口 由于89C51的引脚有限,因此在P3口电路中增加了引脚的第二功能。P3的每一位都可以分别定义为第二功能。P3口的第二功能定义,见表2-1,应熟记。P3口的字节地址为B0H,位地址为B0HB7H。P3口某一位的位电路结构如图2-8所示。,图2-8,表2-1 P3口的第二功能定义(复习)口引脚 第二功能 P3.0 RXD(串行输入口)-输入 P3.1 TXD(串行输出口)-输出 P3.2 INT0*(外部中断0)-输入 P3.3 INT1*(外部中断1)-输入 P3.4 T0(定时器0外部计数输入)P3.5 T1(定时器1外部计数输入)P3.6 WR*(外部数据存储器写选通)-输出 P3.7 RD*(外部数据存储器读选通)-输出,1位电路结构 P3口某一位的电路包括:(1)一个数据输出锁存器,用于输出数据位的锁存。(2)3个三态数据输入缓冲器BUF1、BUF2和BUF3,分别用于读锁存器、读引脚数据和第二功能数据的输入缓冲。(3)输出驱动电路,由“与非门”、场效应管(FET)和内部上拉电阻组成。2工作过程分析(1)P3口用作第二输入/输出功能 当选择第二输出功能时,该位的锁存器需要置“1”,使“与非门”为开启状态。当第二输出为1时,场效应管截止,P3.x引脚输出为1;当第二输出为0时,场效应管导通,P3.x引脚输出为0。当选择第二输入功能时,该位的锁存器和第二输出功能端均应置1,保证场效应管截止,P3.x引脚的信息由输入缓冲器BUF3的输出获得。,(2)P3口用作第一功能通用I/O口 当P3口用作第一功能通用输出时,第二输出功能端应保持高电平,“与非门”为开启状态。CPU输出1时,Q=1,场效应管截止,P3.x引脚输出为1;CPU输出0时,Q=0,场效应管导通,P3.x引脚输出为0。当P3口用作第一功能通用输入时,P3.x位的输出锁存器和第二输出功能均应置1,场效应管截止,P3.x引脚信息通过输入BUF3和BUF2进入内部总线,完成“读引脚”操作。当P3口实现第一功能通用输入时,也可以执行“读锁存器”操作,此时Q端信息经过缓冲器BUF1进入内部总线。,3P3口的特点P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。P3口作为第二功能的输出/输入,或第一功能通用输入,均须将相应位的锁存器置1。实际应用中,由于复位后P3口锁存器自动置1,满足第二功能条件,所以不需要任何设置工作,就可以进入第二功能操作。当某位不作为第二功能使用时,可作为第一功能通用I/O使用。引脚输入部分有两个缓冲器,第二功能的输入信号取自缓冲器BUF3的输出端,第一功能的输入信号取自缓冲器BUF2的输出端。P3口的第二功能定义(表2-1),读者应熟记。,2.6 时钟电路与时序 时钟电路用于产生89C51单片机工作所必需的时钟控制信号。,CPU总是按照一定的时钟节拍与时序工作,2.6.1 时钟电路 时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。1.内部时钟方式 片内一个用于构成振荡器的高增益反相放大器,反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。见图2-10。,图2-10,按图2-10连接即可构成自激振荡电路,振荡频率取决于石英晶体的振荡频率.C1和C2典型值通常选择为30pF左右。晶体的振荡频率在1.2MHz12MHz之间。某些高速单片机芯片的时钟频率已达40MHz(如89S52)。,2.外部时钟方式 常用于多片89C51单片机同时工作。外部时钟源直接接到XTAL1端,XTAL2端悬空,其电路见图2-11。,图2-11,3.时钟信号的输出为应用系统中的其它芯片提供时钟,但需增加驱动能力。,图2-12,2.6.2 机器周期、指令周期与指令时序 单片机执行的指令的各种时序均与时钟周期有关1.时钟周期 单片机的基本时间单位。若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。;例如:fosc=6MHz,Tosc=166.7ns。2.机器周期 CPU完成一个基本操作所需的时间称为机器周期。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个时钟周期为1个机器周期,一个机器周期又分为6个状态:S1S6。每个状态又分为两拍:P1和P2。,因此,一个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、S6P2。,图2-13,机器周期是6个状态周期、12个时钟周期。当时钟频率为12MHz时,机器周期为1S;当时钟频率为6MHz时,机器周期为2S。,3、指令周期 指CPU执行一条指令占用的时间(用机器周期表示)。89C51单片机中按字节可分为单字节、双字节、三字节指令。因此执行一条指令的时间也不同。对于简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期。从指令的执行时间看,单字节和双字节指令一般为单机器周期和和双机器周期,三字节指令都是双机器周期,只有乘、除指令占用4个机器周期。,图:89C51的取指执行时序 a)单字节单周期指令,例:INC A b)双字节单周期指令,例:ADD A,#data c)单字节双周期指令,例 INC DPTR d)双字节双周期指令:例 PHSH direct,牢牢记住:振荡周期(时钟周期)=晶振频率fosc的倒数;1个机器周期=6个状态周期1个机器周期=12个时钟周期;1个指令周期=1、2、4个机器周期,2.7 复位操作和复位电路2.7.1 复位操作 单片机的初始化操作,摆脱死锁状态。引脚RST加上大于2个机器周期的高电平就可使MCS-51复位。例如,若时钟频率为12MHz,每机周为1 S,则只需持续2 S以上时间的高电平;若时钟频率为6MHz,每个机器周期为2S,则需要持续4S以上时间的高电平。复位时,PC初始化为0000H,使MCS-51单片机从0000H单元开始执行程序。除PC之外,复位操作还对其它一些寄存器有影响:SP=07H,P0-P3的引脚均为1(高电平)。见表2-7。在复位有效期间,ALE脚和PSEN*脚均为高电平,内部RAM的状态不受复位的影响。,2.7.2 复位电路 片内复位结构:,图2-14,复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路:,图2-15,按键手动复位,有电平方式和脉冲方式两种。电平方式(按键电平复位是通过使RST端经电阻与Vcc电源接通而实现的),图2-16,脉冲方式:,图2-17,按键复位电路。该电路除具有上电复位功能外,若要复位,只需按下图中RESET键,R1C2仍构成微分电路,使RST端产生一个微分脉冲复位,复位完毕C2经R2放电,等待下一次按下复位按键。,两种实用的兼有上电复位与按钮复位的电路。,图2-18,图2-18中(b)的电路能输出高、低两种电平的复位控制信号,以适应外围I/O接口芯片所要求的不同复位电平信号。74LS122为单稳电路,实验表明,电容C的选择约为0.1F较好。,OVER!,