1第二章89C51的CPU由运算器和控制器所构成,算术逻辑运算单元ALU进行算术、逻辑运算,还具有位操作功能累加器A使用最频繁的寄存器,可写为Acc。A的作用(1)是ALU的输入之一,又是运算结果的存放单元。(2)数据传送大多都通过累加器A。MCS-51增加了一部分可以不经过累加器的传送指令,即可加快数据的传送速度,又减少A的“瓶颈堵塞”现象。A的进位标志Cy同时又是位处理机的位累加器。(1)Cy(PSW.7)进位标志位(2)Ac(PSW.6)辅助进位标志位,用于BCD码的十进制调整运算(3)F0(PSW.5)用户使用的状态标志位。(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。RS1RS0所选的4组寄存器0区(内部RAM地址00H~07H)1区(内部RAM地址08H~0FH)2区(内部RAM地址10H~17H)3区(内部RAM地址18H~1FH)(5)OV(PSW.2)溢出标志位指示运算是否溢出。注意各种算术运算指令对该位的影响(6)PSW.1位:保留位,未用(7)P(PSW.0)奇偶标志位P=1,A中“1”的个数为奇数P=0,A中“1”的个数为偶数控制器1.程序计数器PC存放下一条要执行的指令在程序存储器中的地址。基本工作方式有以下几种:(1)程序计数器自动加1(2)执行有条件转移或无条件转移指令时,PC将被置入新的数值,从而使程序的流向发生变化。(3)执行子程序调用或中断调用,完成下列操作:①PC的现行值保护②将子程序入口地址或中断向量的地址送入PC。存储器空间可划分为5类:1.程序存储器空间片内程序存储器为4KB的Flash存储器2.片内数据存储器空间:128B3.特殊功能寄存器SFR-SpecialFunctionRegister4.位地址空间:211个可寻址位。5.外部数据寄存器空间:片外可扩展64K字节RAM。程序存储器存放应用程序和表格之类的固定常数。分为片内和片外两部分,由EA*引脚上所接的电平确定。程序存储器中的0000H地址是系统程序的启动地址。5个单元具有特殊用途。为5个中断源的中断入口地址外中断00003H定时器T0000BH外中断10013H定时器T1001BH串行口0023H。内部数据存储器128个,字节地址为00H~7FH。00H~1FH:32个单元,是4组通用工作寄存器区20H~2FH:16个单元,可进行128位的位寻址,30H~7FH:用户RAM区,只能字节寻址,用作数据缓冲区以及堆栈区。特殊功能寄存器(SFR)CPU对片内各种功能部件的控制采用特殊功能寄存器集中控制方式,共21个。有的SFR可进行位寻址。其字节地址的末位是0H或8H可位寻址。堆栈指针SP指示堆栈顶部在内部RAM块中的位置,复位后,SP中的内容为07H。(1)保护断点(2)现场保护。堆栈向上生长2.数据指针DPTR高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。3.寄存器B为执行乘法和除法操作设置的。在不执行乘、除的情况下,可当作一个普通寄存器来使用。位地址空间211个(128个+83个)寻址位。位地址范围为:00H~FFH。内部RAM的可寻址位128个(字节地址20H~2FH)见表2-5(P24)。特殊功能寄存器SFR为83个可寻址位。外部数据存储器最多可外扩64K字节的RAM或I/O。使用各类存储器,注意几点:(1)地址的重叠性程序存储器(ROM)与数据存储器(RAM)全部64K字节地址空间重叠)。(2)程序存储器(ROM)与数据存储器(RAM)在使用上是严格区分的。(3)位地址空间共有两个区域。(4)片外数据存储区中,RAM与I/O端口统一编址。所有外围I/O端口的地址均占用RAM单元地址,使用与访问外部数据存储器相同的传送指令。并行I/O端口4个双向的8位并行I/O端口(Port),记作P0~P3属于特殊功能寄存器,还可位寻址。1.位电路结构P0口某一位的电路包括:(1)一个数据输出锁存器,用于数据位的锁存(2)两个三态的数据输入缓冲器。(3)一个多路转接开关MUX,使P0口可作通用I/O口,或地址/数据线口。(4)数据输出的驱动和控制电路,由两只场效应管(FET)组成,上面的场效应管构成上拉电路。2.工作过程分析(1)P0口作为地址或数据总线使用CPU发出控制信号为高电平,打开上面的与门,使MUX打向上边,使内部地址/数据线与下面的场效应管反相接通。此时由于上下两个FET处于反相,形成推拉式电路结构,大大提高负载能力。2(2)P0口作通用的I/O口使用CPU发来的“控制”信号为低电平,上拉场效应管截止,MUX打向下边,与D锁存器的Q*端接通。a.P0作输出口使用来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。注意:由于输出电路是漏极开路。必须外接上拉电阻才能有高电平输出(这时就不为双向口)。b.P0作输入口使用区分“读引脚”和“读锁存器”。“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。3.P0口的特点P0口具有如下特点:P0口为双功能口——地址/数据复用口和通用I/O口。(1)当P0口用作地址/数据复用口时,为一个真正的双向口,用作外扩存储器,输出低8位地址和输出/输入8位数据。(2)当P0口用作通用I/O口时,由于需要在片外接上拉电阻,端口不存在高阻抗(悬浮)状态,因此为一个准双向口。一般情况下,如果P0口已作为地址/数据复用口,就不能再作为通用I/O口使用。2.5.2P1端口字节地址90H,位地址90H~97H。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。P2口字节地址为A0H,位地址A0H~A7H。P2口是一个双功能口。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引脚上的电平经下方的输入缓冲器进入内部总线。3.P2口的特点作为地址输出线使用时,P2口可以输出外存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址线。作为通用I/O口使用时,P2口为一个准双向口。功能与P1口一样。2.5.4P3口由于89C51的引脚有限,因此在P3口电路中增加了引脚的第二功能。P3的每一位都可以分别定义为第二功能。P3口的第二功能定义,P3口的字节地址为B0H,位地址为B0H~B7H。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进入内部总线,完成“读引3脚”操作。当P3口实现第一功能通用输入时,也可以执行“读锁存器”操作,此时Q端信息经过缓冲器BUF1进入内部总线。3.P3口的特点P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。P3口作为第二功能的输出/输入,或第一功能通用输入,均须将相应位的锁存器置1。实际应用中,由于复位后P3口锁存器自动置1,满足第二功能条件,所以不需要任何设置工作,就可以进入第二功能操作。当某位不作为第二功能使用时,可作为第一功能通用I/O使用。引脚输入部分有两个缓冲器,第二功能的输入信号取自缓冲器BUF3的输出端,第一功能的输入信号取自缓冲器BUF2的输出端。2.6时钟电路与时序时钟电路用于产生89C51单片机工作所必需的时钟控制信号。2.6.1时钟电路时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。1.内部时钟方式片内一个用于构成振荡器的高增益反相放大器,反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。C1和C2典型值通常选择为30pF左右。晶体的振荡频率在1.2MHz~12MHz之间。某些高速单片机芯片的时钟频率已达40MHz2.外部时钟方式常用于多片89C51单片机同时工作。外部时钟源直接接到XTAL1端,XTAL2端悬空时钟信号的输出为应用系统中的其它芯片提供时钟,但需增加驱动能力。2.6.2机器周期、指令周期与指令时序单片机执行的指令的各种时序均与时钟周期有关1.时钟周期。单片机的基本时间单位。若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。;例如:fosc=6MHz,Tosc=166.7ns。2.机器周期CPU完成一个基本操作所需的时间称为机器周期。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个时钟周期为1个机器周期,一个机器周期又分为6个状态:S1~S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、…、S6P2。三、指令周期执行一条指令所需的时间。89C51单片机中按字节可分为单字节、双字节、三字节指令。因此执行一条指令的时间也不同。对于简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期。从指令的执行时间看,单字节和双字节指令一般为单机器周期和和双机器周期,三字节指令都是双机器周期,只有乘、除指令占用4个机器周期。复位操作和复位电路2.7.1复位操作单片机的初始化操作,摆脱死锁状态。引脚RST加上大于2个机器周期的高电平就可使MCS-51复位。复位时,PC初始化为0000H,使MCS-51单片机从0000H单元开始执行程序。除PC之外,复位操作还对其它一些寄存器有影响:SP=07H,P0-P3的引脚均为1(高电平)。在复位有效期间,ALE脚和PSEN*脚均为高电平,内部RAM