单片机原理及应用PPT教学课件第2章MCS51系列单片机的硬件结构.ppt
第2章 MCS-51单片机的硬件结构,2.1 MCS-51系列单片机简介,MCS-51系列单片机可分为两大系列:51子系列与52子系列。51子系列主要有:8031(无程序存储器,需要外扩)、8051(4K ROM,专用)、8751(4K EPROM)。52子系列主要有:8032、8052、8752(分别将8031、8051、8751的内部RAM增到256B,8052、8752片内的程序存储器容量增加到8KB,定时器/计数器增至3个,有六个中断源,其他与51子系列相同),表 2.1 MCS-51 系列单片机配置一览表,片内结构如图2-1所示:,2.2 MCS-51系列单片机内部结构与外部引脚说明,介绍图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.中断系统 5.定时器/计数器,6.串行口 1个全双工的异步串行口,具有四种工作方式。7.P1口、P2口、P3口、P0口 为4个并行8位I/O口。8.特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。,2.2.2 MCS-51的外部引脚说明,40只引脚双列直插封装(DIP),44只引脚方形封装方式(4只无用),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电源;Vss(20脚):接地。,(2)时钟引脚 XTAL1(19脚):当采用内部时钟方式时,接外部石英晶体的一端。XTAL2(18脚):采用内部时钟方式时,接外部晶体的另一端。采用外部时钟方式的具体接法见P14表2.2,(a)内部时钟电路;(b)外部振荡源(HMOS),2.I/O口引脚(1)P0口:双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动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负载。,注意:准双向口与双向三态口的差别。当3个准双向I/O口作输入口使用时,要向该口先写“1”。准双向I/O口无高阻的“浮空”状态。,表 2.2 P3口的第二功能,控制引脚 提供控制信号,有的引脚还具有复用功能。(1)RST/VPD(9脚):复位/备用电源。RST:当振荡器工作时,该引脚需外加两个机器周期的高电平使单片机复位,回复到初始状态。VPD:当VCC发生故障(降低到低电平规定值或掉电)时,该引脚可接上备用电源(V)为内部RAM供电,以保证数据不丢失。,(2)ALE/PROG#(Address Latch Enable/PROGramming)(30脚):ALE:为本引脚第一功能。地址锁存允许信号,可驱动8个LS型TTL负载。PROG#:为本引脚的第二功能。为编程脉冲输入端(对片内含有EPROM型单片机)。,注:若想判断单片机的好坏,可用示波器察看ALE引脚是否有正脉冲信号输出,如有则单片机时好的。,(3)PSEN#(Program Strobe ENable)(29脚):外部程序存储器的读选通信号。当从外部程序存储器读取指令或表格常数期间,每个机器周期该信号两次有效,以通过数据总线P0口读回指令或常数。在访问外部数据存储器期间,此信号将不出现。PSEN#接外部程序存储器的输出允许端(OE#)。,注:若要检查51单片机应用系统上电后,CPU能否正常到外部程序存储器读取指令码,可以用示波器查PSEN#端有无脉冲输出,如有说明单片机系统基本正常工作。,(4)EA#/VPP(External Access Enable/Voltage Pulse of Programing)(31脚)EA#为片外程序存储器选择控制端。EA#=1,访问片内程序存储器,但在PC(程序计数器)值超过0FFFH(对于8051、8751)时,即超出片内程序存储器的4K字节地址范围时,将自动转向执行外部程序存储器内的程序。EA#=0,单片机则只访问外部程序存储器。,VPP为本引脚的第二功能。用于施加编程电压(例如+21V或+12V)。对89C51,加在VPP脚的编程电压为+12V或+5V。,综上所述,MCS-51系列单片机的引脚可归纳一下两点:(1)单片机功能强大,引脚数少,因此许多引脚都具有第二功能。(2)单片机对外呈现3总线形式,即地址总线、数据总线、控制总线。,2.3 MCS-51的微处理器(CPU)由运算器和控制器所构成。,2.3.1 运算器 由算术逻辑单元(ALU)、累加器A、寄存器B、位处理器和程序状态字寄存器(PSW)等构成。作用:对操作数进行算术、逻辑运算和位操作。,1算术逻辑运算单元ALU,2累加器A(8位)使用最频繁的寄存器,可写为Acc。A的作用:(1)是ALU的输入之一,又是运算结果的存放单元。(2)数据传送大多都通过累加器A。,3.寄存器B(8位)是为执行乘、除法操作设置的。在不执行乘、除法操作的情况下,可当作普通寄存器使用。,4程序状态字寄存器PSW(Program Status Word)(1)Cy(PSW.7)进位标志位。(2)Ac(PSW.6)辅助进位标志位,用于BCD码的十 进制调整运算。(3)F0(PSW.5)用户自定义标志位。可用软件使它置1或清0,也可由软件来测试标志F0以控制程序的流向。编成时,该标志很有用。,D0H,D7 D6 D5 D4 D3 D2 D1 D0,PSW,表 2.3 RS1、RS0与片内工作寄存器组的对应关系,(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。,D0H,D7 D6 D5 D4 D3 D2 D1 D0,PSW,(5)OV(PSW.2):溢出标志位 指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂,将在第3章介绍。(6)PSW.1位:保留位,未用(7)P(PSW.0):奇偶标志位 P=1,A中“1”的个数为奇数P=0,A中“1”的个数为偶数注:奇偶标志位对串行口通讯中的数据传输有重要意义,常用奇偶检验的方法来检验数据传输的可靠性。,D0H,D7 D6 D5 D4 D3 D2 D1 D0,PSW,2.3.2 控制器及振荡器1.控制器 由定时和控制逻辑电路、指令寄存器IR、指令译码器ID、程序计数器、条件转移逻辑电路等构成。作用:控制器是单片机的指挥控制部件,控制器 的主要任务是识别指令、并根据指令的性 质控制单片机个各功能部件,从而保证单 片机自动协调的工作。,5布尔处理机(位处理机),(1)程序计数器PC(Program Counter)(16位)存放下一条要执行的指令在程序存储器中的地址,可对64KB的程序存储器进行寻址。基本工作方式有以下几种:1)程序计数器自动加1 2)执行有条件转移或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。3)在执行调用子程序调用或中断调用,完成下列操作:PC的现行值保护 将子程序入口地址或中断向量的地址送入PC。,(2)指令寄存器IR、指令译码器及控制逻辑电路,2.振荡器(时钟电路),时钟电路作用:用于产生MCS-51单片机工作时所必需的时钟信号。(MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,单片机应在唯一的时钟信号控制下,严格的按时序执行指令进行工作。),常用的时钟电路的两种方式:内部时钟方式与外部时钟方式。,(1)内部时钟方式 内部有一个用于构成振荡器的高增益反相放大器,反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。,内部时钟方式接法,C1和C2典型值通常选择为30pF左右。晶体的振荡频率在1.2MHz12MHz之间,通常选6MHz、12MHz。某些高速单片机芯片的时钟频率已达40MHz。注:1)晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。但反过来对存储器的速度要求就高,对印刷电路板的工艺要求也高;2)晶体和电容应尽可能安装得与单片机芯片靠近,以减小寄生电容,更好的保证振荡器稳定、可靠的工作。,二、外部时钟方式 常用于多片MCS-51单片机同时工作。,外部时钟方式接法(HMOS),外部时钟方式接法表(书14页),三、时钟信号的输出为应用系统中的其它芯片提供时钟,但需增加驱动能力。,2.3.3 时序 计算机在执行指令时,是将一条指令分解为若干基本的微操作,这些微操作所对应的脉冲信号在时间上的先后次序称为时序。,MCS-51单片机的时序由下面四种周期构成:(1)振荡周期:是指为单片机提供时钟脉冲信号的振荡源的周期。(2)状态周期:也称时钟周期,每个状态周期为振荡周期的2倍(即振荡周期经二分频)。每个状态又分为两拍:P1和P2。,(3)机器周期:一个机器周期包含 6 个状态周期S1S6,也就是 12 个振荡周期。一个机器周期中的12个振荡周期表示为:S1P1、S1P2、S2P1、S2P2、S6P2。在一个机器周期内,CPU可以完成一个独立的操作。,(4)指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS-51 系统中,有单周期指令、双周期指令和四周期指令。,执行任何一条指令时,都可分为取指令阶段和指令执行阶段。取指令阶段,PC中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。指令执行阶段,对指令操作码进行译码,以产生一系列控制信号完成指令的执行。ALE信号是为地址锁存而定义的,以时钟脉冲1/6的频率出现,在一个机器周期中,ALE信号两次有效(注意,在执行访问外部数据存储器的指令MOVX时,将会丢失一个ALE脉冲),例,若振荡周期fosc=12MHz,则MCS-51的振荡周期,状态周期,机器周期是多少?,MCS-51 单片机指令的取指/执行时序图,2.4 存储器从物理结构上可分为4部分:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。从功能上可分为5部分:程序存储器空间、片内数据存储器空间、特殊功能寄存器SFR(Special Function Register)、位地址空间(211个可寻址位)、片外数据寄存器空间(片外可扩展64K字节RAM)。,2.4.1 程序存储器 计算机的工作是按照事先编制好的程序命令一条条顺序执行。程序存储器就是用来存放已编好的应用程序和表格之类的固定常数。1、编址与访问 CPU是访问片内程序存储器还是片外程序存储器,首先是由单片机EA#引脚的电平来确定的。,2、程序的特殊入口地址 程序存储器中的0000H地址是系统程序的启动地址(复位后,PC的内容为0000H)。5个单元具有特殊用途 5种中断源的中断入口地址(51子系列)外中断0 0003H定时器T0 000BH外中断1 0013H 定时器T1 001BH 串行口 0023H,注:六个入口地址互相离得很近,只隔几个单元,容纳不下稍长的程序段。所以通常在这些入口地址处都放一条转移指令,使分别跳转到用户程序真正的起始地址或所对应的中断服务程序的入口地址。,2.4.1 数据存储器1、编址与访问 MCS-51单片机片内、外数据存储器是两个独立的地址空间,分别单独编址。,注:虽然片内、外数据存储器地址空间有重叠,但访问片内、外用不同的指令(MOV,MOVX),不会引起混乱。2、片内数据存储器 MCS-51单片机的片内数据存储器结构共分为工作寄存器区、位寻址区、用户RAM区3个区域(128个字节(单元),字节地址为00H7FH)。,51子系列单片机片内RAM的结构,1)工作寄存器区 00H1FH:32个单元,是4组通用工作寄存器区。每组都含有8个8位寄存器,用R0R7表示。用户可以通过指令改变PSW中的RS0、RS1这两位来切换当前的工作寄存器组。,RS1、RS0与片内工作寄存器组的对应关系,2)位寻址区 20H2FH:16个单元,可进行128位的位寻址。每一位都赋予了地址,位地址范围为00H7FH。这16个单元也可以进行字节寻址。(详见书18页图2.7)3)数据缓冲区(用户RAM区)30H7FH:共80个单元,用户RAM区,只能进行字节寻址,用作数据缓冲区以及堆栈区。,内部RAM的可寻址位及位地址,3、特殊功能寄存器区 MCS-51单片机中的CPU对各种功能部件(ALU、并行I/O口、串行I/O口、定时器/计数器、中断系统等)的控制是采用特殊功能寄存器SFR的集中控制方式。51子系列共有21个SFR,字节地址为80HFFH。有的SFR可进行位寻址(字节地址的末位是0H或8H)。表2.5(P20)是SFR的名称及其分布。下面介绍SFR块中的某些寄存器。,SFR的名称及其分布,表2-4 SFR中的位地址分布,注意:(1)在SFR区的地址空间中,作为SFR离散的分布在这128个字节范围内,其余字节无定义,但用户不能对这些字节进行读/写操作。(2)有的SFR可进行位寻址,可用“寄存器名.位”来表示,如ACC.0,B.5。,1)堆栈和堆栈指针SP堆栈是按先进后出或后进先出原则进行存取的片内RAM区域。(主要是为子程序调用和中断操作而设立的)堆栈的具体功能是:保护断点(PC的内容);保护现场(保存有关寄存器单元的内容)。MCS-51单片机的堆栈区是不固定的,原则上可设置在内部RAM(00H7FH)的任意单元。但实际应用中要根据对片内RAM的各功能区的使用情况灵活设置,但应避开工作寄存器区、位寻址区、和用户使用的数据区,一般设在2FH地址以后的区域。,堆栈指针SP是一个8位的SFR。SP的内容指示出堆栈顶部在RAM区中的位置。单片机复位后,SP中的内容为07H(即指向07H的RAM单元),使堆栈事实上由08H单元开始。所以在使用堆栈前,先给SP赋值(一般为2FH以后的单元),以规定堆栈的起始位置(栈底)。当数据存入堆栈后,SP的值也随之变化。,MCS-51单片机的堆栈是向上生长型的(即栈顶地址总大于栈底地址),MCS-51单片机堆栈,2)数据指针寄存器DPTR 数据指针DPTR是一个 16 位的专用寄存器,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。既可作为一个 16 位寄存器DPTR来处理,也可作为两个独立的 8 位寄存器DPH和DPL来处理。DPTR 主要用来存放 16 位地址,当对 64 KB外部数据存储器空间寻址时,作为间址寄存器用。在访问程序存储器时,用作基址寄存器。,3)端口P0P3 P0P3分别为I/O端口P0P3的锁存器。每一个都是8位SFR,可进行位寻址。4)串行数据缓冲器SBUF 存放欲发送或已接收的数据,一个字节地址,物理上是由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。5)定时器/计数器 两个16位定时器/计数器T1和T0,各由两个独立的8位寄存器组成:TH1、TL1、TH0、TL0,只能字节寻址,但不能把T1或T0当作一个16位寄存器来寻址访问。,2.5 并行I/O端口 4个双向的8位并行I/O端口(Port),记作P0P3 属于特殊功能寄存器,还可位寻址。2.5.1 P0端口,P0口某一位的电路包括:(1)一个数据输出锁存器,用于数据位的锁存(2)两个三态的数据输入缓冲器。(3)一个多路转接开关MUX,使:P0口可作通用I/O口,或地址/数据线口。(4)数据输出的驱动和控制电路,由两只场效应管(FET)组成,上面的场效应管构成上拉电路。P0口传送地址或数据时,CPU发出控制信号为高电平,打开上面的与门,使多路转接开关MUX打向上边,使内部地址/数据线与下面的场效应管处于反相接通,状态。此时输出驱动电路由于上下两个FET处于反相,形成推拉式电路结构,大大提高负载能力。P0口作通用的I/O口使用。这时,CPU发来的“控制”信号为低电平,上拉场效应管截止,多路转接开关MUX打向下边,与D锁存器的Q*端接通。(1)P0作输出口使用来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。注意:由于输出电路是漏极开路(因为这时上拉场效,应管截止),必须外接上拉电阻才能有高电平输出。(2)P0作输入口使用区分“读引脚”和“读锁存器”。“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线;“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。2.5.2 P1端口 字节地址90H,位地址90H97H。,P1口只作通用的I/O口使用,在电路结构上与P0口有两点区别:(1)因为只传送数据,不再需要多路转接开关MUX。(2)由于P1口用来传送数据,因此输出电路中有上拉电阻,这样电路的输出不是三态的,所以P1口是准双向口。因此:(1)P1口作为输出口使用时,外电路无需再接上拉电 阻。(2)P1口作为输入口使用时,应先向其锁存器先写入“1”,使输出驱动电路的FET截止。,2.5.3 P2端口 字节地址为A0H,位地址A0HA7H。,在实际应用中,因为P2口用于提供高位地址,有一个多路转接开关MUX。但MUX的一个输入端不再是“地址/数据”,而是单一的“地址”,因为P2口只作为地址线使用。当P2口用作为高位地址线使用时,多路转接开关应接向“地址”端。正因为只作为地址线使用,口的输出用不着是三态的,所以,P2口也是一个准双向口。P2口也可以作为通用I/O口使用,这时,多路转接开关接向锁存器Q端。,2.5.4 P3端口 P3口的字节地址为B0H,位地址为B0HB7H。P3口的第二功能定义,应熟记。,表2-2 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)作通用的I/O输出,“第二输出功能”线应保持高电平,与非门开通,使锁存器Q端输出畅通。作第二功能信号输出,锁存器预先置“1”,使与非门对“第二输出功能”信号的输出是畅通的。(2)作第二功能信号输入,在口线引脚的内部增加了一个缓冲器,输入的信号就从这个缓冲器的输出端取得。而作为通用I/O输入,仍取自三态缓冲器的输出端。P3口无论作哪种输入,锁存器输出和“第二输出功能”线都应保持高电平。,P0P3端口功能总结使用中应注意的问题:(1)P0P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。由于P0口可作为地址/数据复用线使用,需传送系统的低8位地址和8位数据,因此MUX的一个输入端为“地址/数据”信号。而P2口仅作为高位地址线使用,不涉及数据,所以MUX的一个输入信号为“地址”。,(2)在4个口中只有P0口是一个真正的双向口,P1P3口都是准双向口。原因:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。为此,P0口的输出缓冲器应为三态门。在P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。而P1P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的准双向口,(3)P3口的口线具有第二功能,为系统提供一些控制信号。因此在P3口电路增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。,2.6 MCS-51的定时器/计数器 在工业检测、控制中,很多场合都要用到计数或者定时功能。例如对外部脉冲进行计数、产生精确的定时时间、作串行口的波特率发声器等。MCS51单片机内部有两个可编程的16位定时器/计数器,以满足这方面的需要。它们具有两种工作模数(计数器模式、定时器模式)和四种工作方式(方式0方式3),其控制寄存器均在相应的特殊功能寄存器SFR中,通过对它的SFR的编程,可以方便的选择工作模式和工作方式。,本质上都是加法计数器,当对固定周期的脉冲信号计数时是定时器,对脉冲长度不确定的信号计数时是计数器。1、计数工作模式 计数功能是对外来脉冲进行计数。MCS-51单片机的T0(P3.4)和T1(P3.5)两个输入引脚,分别是这两个计数器的计数脉冲输入端。每当外部输入的脉冲有下降沿时,计数器加1。计数器溢出时可向CPU发出中断请求信号。,2、定时工作模式 定时功能也是通过计数器的计数来实现的,但是此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过一个机器周期的时间,计数器加1。例,MCS-51单片机采用12MHz晶体,则计时频率为1MHz,即每经过1s的时间计数器加1。若计数值为100,相当于定时100s。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。,2.6.1 定时器/计数器的结构,图 2.13 定时器/计数器T0、T1结构框图,TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。单片机复位时,两个寄存器的所有位都被清0。1、定时器/计数器的方式控制寄存器TMOD 8位分为两组,高四位控制T1,低4位控制T0。,89H,对TMOD的各个位的说明:GATE:门控位。用于控制定时器/计数器的 启动是否受外部中断请求信号的影响。GATE=0:仅由运行控制位TRX(X=0,1)=1来启动定时器/计数器运行。GATE=1:由运行控制位TRX(X=0,1)=1和外中断引脚(INT0#或INT1#)上的高电平共同来启动定时器/计数器运行。(2)C/T#计数器模式和定时器模式选择位 0:定时器模式。1:计数器模式。,(3)M1 M0:四种工作方式的选择位,表 2.6定时器/计数器工作方式选择表,1、定时器/计数器控制寄存器TCON低4位与外部中断有关,2.8节介绍。高4位的功能如下:(1)TF0(TF1):定时器/计数器T0(T1)计数溢出标志位,计数溢出时,由硬件置1,申请中断,响应转向中断服务程序时由硬件清0。(2)TR0(TR1):计数运行控制位(可由软件设置)TR0(TR1)=1,启动定时器/计数器工作的必要条 件,还与GATE位有关。TR0(TR1)=0,停止定时器/计数器工作。,2.6.2 定时器/计数器的四种工作方式1、工作方式0M1、M0为00,13 位定时器/计数器。定时器/计数器的框图(以定时器/计数器T1为例):,图2.14 定时器/计数器方式 0(13位计数器)的逻辑结构,13 位定时器/计数器,C/T#位决定工作模式:0:开关打在上面,为定时器工作模式;1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。GATE位:决定定时器/计数器的运行只取决于TRX一个条件还是TRX和INTX#引脚两个条件(X=1,2)。(1)GATE=0:A点(见图2.14),是否计数,仅取决于TRX的状态。(2)GATE=1:B点电位由INTX#的输入电平和TRX的状态这两个条件来确定。是否计数是由TRX和INTX#二个条件来控制的。,方式0,T0和T1工作在 13 位的定时/计数器方式,由THX(X=0,1)的高 8 位和TLX的低 5 位组成(TLX的高 3 位未用)的加法计数器。TLX低 5 位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX。最大计数值为 8192()。可以将 08191(-1)范围的某一数送入THX、TLX作为初值。注:THX溢出后,必须用程序重新对THX、TLX设置初值,否则下一次计数THX、TLX将从 0 开始计数。,(1)定时器/计数器T0、T1工作在计数状态,是对TX(X=0,1)引脚输入的外部脉冲进行计数。计数值 N 由下式确定:N=-x=8192-x(x 是THX,TLX的初值)x=8191时,为最小计数,此时 N=1;x=0时,为最大计数,此时 N=8192。即计数范围18192。注:外部计数脉冲的频率应小于fosc/24,且高电平与低电平的延续时间不得小于1个机器周期。,(2)定时器/计数器T0、T1工作在定时状态时,计数器对机器周期脉冲进行计数,即每个机器周期THX、TLX加 1。定时时间 T 由下式确定:T=N*Tcy=(8192-x)*TcyN为计数值,x是THX,TLX的初值,Tcy为单片机的机器周期。如,振荡周期fosc=12MHz,则Tcy=1s,定时范围18192s。,2、工作方式1M1、M0为01,16位定时器/计数器。定时器/计数器的框图(以定时器/计数器T1为例):,图 定时器/计数器方式 1(16位计数器)的逻辑结构,方式1,T0和T1工作在 16 位的定时/计数器方式。THX(X=0,1)作为高 8 位,TLX作为低 8 位组成16位加法计数器。最大计数值为 65536。与方式0的基本工作原理相同。(1)定时器/计数器T0、T1工作在计数状态。计数值 N 由下式确定:N=-x=65536-x(x 是THX,TLX的初值)计数范围165536。(2)定时器/计数器T0、T1工作在定时状态。定时时间 T 由下式确定:T=N*Tcy=(65536-x)*TcyN为计数值,x是THX,TLX的初值,Tcy为单片机的机器周期。如,振荡周期fosc=12MHz,则Tcy=1s,定时范围165536s。,3、工作方式2M1、M0为10,计数满后自动重装入计数初值的 8 位定时器/计数器。定时器/计数器的框图(以定时器/计数器T1为例):,图2.15 定时器/计数器方式2(8位计数器)的逻辑结构,工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。工作方式2就针对这个问题而设置,它具有自动重装载功能,即自动加载计数初值,所以也称为自动重加载工作方式。,在工作方式2中,16位计数器分为两部分,THX作为常数缓冲器,TLX作为8位加法计数器,初始化时把计数初值分别加载至TLX和THX中,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。定时器/计数器的方式2工作过程如下图(X=0,1)。,省去用户软件中重装初值的程序,精确的定时。,方式 2 工作过程,4、工作方式3 只适用于定时器/计数器T0。T1不能工作在方式3。T1工作在方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。(1)工作方式 3 下的定时器/计数器T0 定时器/计数器T0分为两个独立的8位计数器:TL0和TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时器/计数器T0的各控制位(C/T*、GATE、TR0)和引脚信号(INT0#)全归TL0使用。其功能和操作与方式0或方式1完全相同。,TH0就没有那么多“资源”可利用了,被固定为一个8位定时器(不能作外部计数模式),而且由于定时/计数器T0的控制位已被TL0占用,因此只能借用定时/计数器T1的控制位TR1和TF1,也就是以计数溢出置位TF1,TR1则负责控制TH0定时的启动和停止。各引脚与T0的逻辑关系如下图所示:,图2.13 定时器/计数器方式3 的逻辑结构,(2)T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时,T0才工作在方式3。T0处于方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。T1工作在方式0,T1工作在方式1 T1工作在方式2,2.7 串行输入/输出口 2.7.1 串行通信的基本概念 通信的基本方式分为并行通信 和 串行通信 并行通信的优点是速度快,效率高,缺点是不适合远距离通信。串行通信刚好相反。串行通信可分为异步传送方式和同步传送方式。,(1)同步传送方式 将一大批数据分成几个数据块,数据块之间用同步字符予以隔开,而传输的各位二进制码之间都没有间隔。其基本特征是发送与接收时钟始终保持严格同步。(2)异步传送方式 按帧传送数据,它利用每一帧的起、止信号来建立发送与接收之间的同步,每帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志,它是以字符为单位一个个地发送和接收的。,在串行异步传送中通信双方必须事先约定:(1)字符格式(帧格式)。(2)波特率。发送端与接收端的波特率必须一致。波特率是数据的传送速率,即每秒钟传送二进制位数,单位为位/秒。,串行通信的数据传送方向有三种形式:单工方式、半双工方式 和 全双工方式。单工:信息只能沿着一个方向传播。半双工:信息可以沿一条线双向传播,但不能同 时实现双向传播。全双工:使用两条独立的数据通道,收发可同时 进行。,2.7.2 MCS-51 单片机的串行口1、功能与结构全双工的异步通信串行口。4种工作方式,波特率由片内定时器/计数器控制。每发送或接收一帧数据,均可发出中断请求。除用于串行通讯,还可用来扩展并行I/O口。,串行口内部结构如下图,两个物理上独立地接收和发送缓冲器,可同时收、发数据。两个缓冲器共用一个特殊功能寄存器字节地址:SBUF(99H)。控制寄存器共两个:特殊功能寄存器SCON和PCON。,SM0、SM1:串行口4种工作方式的选择位 表 串行口的4种工作方式,(1)串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示。,SCON,SM2:多机通信控制位 用于方式2或方式3中。当串行口以方式2或方式3接收时,如果SM2=1,只有当接收到的第9位数据(RB8)为“1”时,才将接收到的前8位数据送入SBUF,并置“1”RI,产生中断请求;当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。如果SM2=0,则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并置“1”RI,产生中断请求。在方式1时,如果SM2=1,则只有接收到有效的停止位时,才会激活RI。在方式0时,SM2必须为0。,REN:允许串行接收控制位 由软件置“1”或清“0”。REN=1,允许串行口接收数据。REN=0,禁止串行口接收数据。TB8:发送的第9位数据方式2和3时,TB8是要发送的第9位数据,可作为奇偶校验位使用;在多机通信中,以TB8位的状态表示主机发送是地址还是数据,TB8=1 为地址帧,TB8=0 为数据帧,RB8:接收到的第9位数据 方式2和3时,RB8存放接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧。方式1时,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。,TI:发送中断标志位 方式0时,串行发送第8位数据结束时由硬件置“1”,其它工作方式,串行口发送完停止位时由硬件置“1”。TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须由软件清0。,RI:接收中断标志位 方式0时,接收完第8位数据时,RI由硬件置1。其它工作方式,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。,(2)电源控制寄存器PCON 字节地址为87H,没有位寻址功能。,特殊功能寄存器PCON中,只有一位(最高位)SMOD与串行口的工作有关。SMOD:波特率系数控制位。SMOD=1,波特率加倍;SMOD=0,波特率不加倍。,2、串行口的4种工作方式1)方式0 同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行I/O口。8位数据为一帧,不设起始位和停止位,先发送或接收最低位。波特率固定为fosc/12。方式0发送 当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据置“1”中断标志位TI。,方式0接收 方式0接收时,REN为串行口允许接收控制位,REN=0,禁止接收。REN=1,允许接收。当向CPU串行口的SCON寄存器写入控制字(置为方式0,并置“1”REN位,同时RI=0)时,产生一个正脉冲,串行口即开始接收数据。引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器也以fosc/12的固定波特率采样RXD引脚的数据信息,当接收到8位数据时置“1”中断标志RI。表示一帧数据接收完毕,可进行下一帧数据的接收。,方式0下,SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件置“1”TI或RI中断标志位,CPU响应中断。TI或RI标志位须由用户软件清“0”,可采用如下指令:CLR TI;TI位清“0”CLR RI;RI位清“0”方式0时,SM2位(多机通讯控制位)必须为0。,2)方式1 SM0、SM1=01。方式1为波特率可变的 8 位异步通信接口。数据位由 P3.0(RXD)端接收,由P3.1(TXD)端发送。收发一帧的数据为 10 位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如图所示。波特率是可变的,它取决于定时器 T1 的溢出速率及SMOD的状态。,方式1发送 当CPU执行一条数据写发送缓冲器SBUF的指令,就启动发送过程。数据由TXD引脚输出,此时的发送移位脉冲是由定时器/计数器 T1 送来的溢出信号经过 16 或 32 分频而取得的。一帧信号发送完时,将置位发送中断标志TI=1,向CPU申请中断,完成一次发送过程。,方式1接收 当允许接收位REN被置位1时,接收器以选定波特率的 16 倍的速率采样RXD引脚上的电平,即在一个数据位期间有 16 个检测脉冲,并在第 7、8、9 个脉冲期间采样接收信号,然后用三中取二的原则确定检测值,以抑制干扰。并且采样是在每个数据位的中间,避免了信号边沿的波形失真造成的采样错误。当检测到有从“1”到“0”的负跳变时,则启动接收过程,在内部接收移位脉冲的控制下,数据逐位移入移位寄存器,当 8 位数据及停止位全部移入后,根据以下状态,进行相应的操作。,若RI=0,SM2=0,则将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=1,向CPU申请中断。若RI=0,SM2=1,那么只有接收到的停止位为1,则将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=1,向CPU申请中断。若RI=0,SM2=1,且停止位为0,则所接收的数据不装入接收数据缓冲器SBUF,数据将会丢失。若RI=1,则所接收的数据不装入接收数据缓冲器SBUF,数据将会丢失。无论出现哪一种情况,都将继续采样RXD引脚 的负跳变,以便接收下一帧信息。注意:接收中断标志RI应由软件清除。,3)方式2与方式3 串行口工作于方式2和方式3时,被定义为 9位异步通信接口。收发一帧信息由 11 位组成,其中最低位是起始位(0),其后是 9 位数据位,最后一位是停止位(1)。方式2和方式3工作原理相似,唯一的差别是方式2的波特率是固定的;而方式3的波特率是可变的,与定时器 T1的溢出率有关。,在方式 2、方式 3 时,发送、接收数据的过程与方式 1 基本相同,所不同的仅在于对第9位数据的处理。发送时,第 9 位数据由SCON中的 TB8