第2章 MCS51单片机硬件结构

上传人:s9****2 文档编号:570833656 上传时间:2024-08-06 格式:PPT 页数:115 大小:1.33MB
返回 下载 相关 举报
第2章 MCS51单片机硬件结构_第1页
第1页 / 共115页
第2章 MCS51单片机硬件结构_第2页
第2页 / 共115页
第2章 MCS51单片机硬件结构_第3页
第3页 / 共115页
第2章 MCS51单片机硬件结构_第4页
第4页 / 共115页
第2章 MCS51单片机硬件结构_第5页
第5页 / 共115页
点击查看更多>>
资源描述

《第2章 MCS51单片机硬件结构》由会员分享,可在线阅读,更多相关《第2章 MCS51单片机硬件结构(115页珍藏版)》请在金锄头文库上搜索。

1、第2章MCS-51单片机硬件结构本章学习要点 本章主要讲述单片机的硬件结构。通过学习本章内容要求掌握MCS-51单片机内部硬件组成,管脚的定义、功能、作用,熟练掌握单片机各种存储器物理空间配置及内部特殊功能寄存器的定义、作用,掌握单片机的最小系统组成部分。 重点与难点:51单片机内部结构、存储空间、I/O端口、时钟电路、复位电路。2.1概述 单片微型计算机 ( Single Chip Microcomputer ) 简称单片机,是指在一块芯片体上集成了中央处理器CPU、随机存储器RAM、程序存储器ROM或EPROM、定时器/计数器、中断控制器以及串行和并行I/O接口等部件,构成一个完整的微型计

2、算机。目前,新型单片机内还有A/D及D/A转换器、高速输入/输出部件、DMA通道、浮点运算等特殊功能部件。由于它的结构和指令功能都是按工业控制要求设计的,特别适用于工业控制及其数据处理场合,因此,确切的称谓是微控制器Microcontroller,单片机只是其习惯称呼。2.2 MCS -51单片机硬件结构 2.2.1 总体结构 MCS-51系列单片机的内部结构框图如图2-1所示。 从图2-1中可看出,MCS-51系列单片机组成结构中包含运算器、控制器、片内存储器、4个I/O口、串行口、定时器/计数器、中断系统、振荡器等功能部件。图中SP是堆栈指针寄存器,PC是程序计数器,PSW是程序状态字寄存

3、器,DPTR是数据指针寄存器。 图2-1单片机的内部结构框图2.2.2 中央处理器CPU 中央处理器又称CPU,是单片机的核心部件,它决定了单片机的主要功能特性。它由运算部件和控制部件两大部分组成。1. 运算部件 运算部件是以算术逻辑单元ALU为核心,包括累加器ACC、寄存器B、暂存器、程序状态字PSW等许多部件。它能实现数据的算术逻辑运算、位变量处理和数据传输操作。2. 控制部件 控制部件是单片机的神经中枢,它包括定时和控制电路、指令寄存器、译码器以及信息传送控制等部件。它先以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来协调单片机内部

4、各功能部件之间的数据传送、数据运算等操作。 2.2.3 单片机的引脚及其功能 MCS-51系列单片机芯片均为40条引脚,HMOS 工艺制造的芯片用双列直插(DIP)方式封装,其引脚示意及功能分类如图2-2所示。各引脚功能说明如下:1. 主电源引脚Vcc(40脚): 接+5V电源正端。Vss(20脚): 接+5V电源地端。2. 外接晶体引脚 XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。 XTAL2(18脚):接外部石英晶体的另一端。在单片机内部,它是片内振荡器的反相放大器的输出端。表2-1 P3口的第二功能引 脚第 二 功 能

5、P3.0RXD 串行口输入端P3.1TXD 串行口输出端P3.2 外部中断0请求输入端,低电平有效P3.3 外部中断1请求输入端,低电平有效P3.4T0 定时器/计数器0计数脉冲输入端P3.5T1 定时器/计数器1计数脉冲输入端P3.6 外部数据存储器写选通信号输出端,低电平有效P3.7 外部数据存储器读选通信号输出端,低电平有效图2-2 51单片机的引脚3. 输入/输出引脚 (1) P0口(3932脚):P0.0P0.7统称为P0口。在不接片外存储器或扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。 (2) P1口(1

6、8脚):P1.0P1.7统称为P1口,可作为准双向I/O口使用。对于52子系列,P1.0与P1.1还有第二功能:P1.0可用作定时器/计数器2的计数脉冲输入端T2,P1.1可用作定时器/计数器2的外部控制端T2EX。 (3) P2口(2128脚):P2.0P2.7统称为P2口,一般可作为准双向I/O口使用。在接有外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。 (4) P3口(1017脚):P3.0P3.7统称为P3口。除作为准双向I/O口使用外,还可以将每一位用于第二功能,且P3口的每一条引脚均可独立定义为第一功能的输入、输出或第二功能的输入、输出。P3口的第2功

7、能如表2-1所示。4. 控制线 (1) ALE/ (30脚):地址锁存有效信号输出端。ALE在每个机器周期内输出两个脉冲。在访问片外程序存储器期间,下降沿用于控制锁存P0输出端的低8位地址;在不访问片外程序存储器期间,可作为对外输出的时钟脉冲或用于定时目的。 (2) (29脚):片外程序存储器读选通信号输出端,低电平有效。在从外部程序存储器读取指令或常数期间,每个机器周期内该信号两次有效,并通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,PSEN信号将不出现。 (3) RST/Vpd(9脚):RST即为RESET,Vpd为备用电源。该引脚为单片机的上电复位或掉电保护端。当单片机振荡

8、器工作时,该引脚上将出现持续两个机器周期的高电平,这时可实现复位操作,使单片机回复到初始状态。上电时,考虑到振荡器有一定的起振时间,该引脚上高电平必须持续10ms以上才能保证有效复位。 (4) /Vpp(31脚):为片外程序存储器选通端。该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器。2.2.4 存储器的结构 MCS-51单片机的芯片内部有RAM和ROM两类存储器,其基本结构如图2-3所示。1. MCS-51内部程序存储器 MCS-51的程序存储器用于存放编好的程序和表格常数。8051片内有4 KB的ROM,8751片内有4 KB的EPROM,8031片

9、内无程序存储器。 MCS-51的片外最多能扩展64 KB程序存储器,片内外的ROM是统一编址的。如端 保持高电平,8051的程序计数器PC在0000H0FFFH地址范围内 (即前4 KB地址) 是执行片内ROM中的程序,当PC在1000HFFFFH地址范围时,自动执行片外程序存储器中的程序;当保持低电平时,只能寻址外部程序存储器,片外存储器可以从0000H开始编址。图2-3 MCS-51单片机存储器结构 特殊功能寄存器通用RAM区位寻址区00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能寄存器中位寻址外部ROM内部ROM(

10、EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH外 部RAM(I/O口地址)0000HFFFFH内部数据存储器(a)外部数据存储器(b)程序存储器(c)工作寄存器区 MCS-51的程序存储器中有些单元具有特殊功能,使用时应注意。 其中一组特殊单元是0000H0002H。系统复位后,(PC)=0000H,单片机从0000H单元开始取指令执行程序。如果程序不从0000H单元开始,应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。 还有一组特殊单元是0003H002AH,共40个单元。这40个单元被均匀地分为5段,作为5个中断源的中断地址

11、区。其中:0003H000AH 外部中断0中断地址区000BH0012H 定时/计数器0中断地址区0013H001AH 外部中断1中断地址区001BH0022H 定时/计数器1中断地址区0023H002AH 串行中断地址区一般单片机汇编程序执行过程0000H0001H0002H0003H0100H0101H1000H1001HFFFFHPCLJMP MAINMAIN:INT0:中断入口中断中断程序2. MCS-51内部数据存储器 (1) 内部数据存储器 8051的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H7FH)和高128单元(单元地址8

12、0HFFH)。 (2) 寄存器区 8051共有4组寄存器,每组8个寄存单元,各组都以R0R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H1FH单元地址。 通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度。此外,使用通用寄存器还能提高编程的灵活性。因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。 单片机内部数存空间分配低128单元高128单元00H(R0)通用寄存器1FH(R7)01H(R1)位寻址区20H2FH21H30H

13、7FH31H用户RAM区(堆栈)80HFFH81H07H01H 00H7FH78H 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定,其对应关系如表2-2所示。表 2-2 RS1、 RS0与片内工作寄存器组的对应关系 (3) 位寻址区 内部RAM的20H2FH单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16个RAM单元,共128位,地址为00H7FH,其对应关系如表2-3所示。MCS-51具有布尔处理机功能,

14、这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。 (4) 用户RAM区 在内部RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H7FH。对用户RAM区的使用没有任何规定或限制,但在一般应用中常把堆栈设在此区中。 (5) 内部数据存储器高128单元 内部RAM的高128单元是供给专用寄存器使用的,其单元地址为80HFFH。因这些寄存器的功能已作专门规定,故称之为专用寄存器(Special Function Register),也可称为特殊功能寄存器。表2-3 字节地址与位

15、地址之间的对应关系字节地址位地址20H070605040302010021H0F0E0D0C0B0A090822H171615141312111023H1F1E1D1C1B1A191824H272625242322212025H2F2E2D2C2B2A292826H373635343332313027H3F3E3D3C3B3A393828H474645444342414029H4F4E4D4C4B4A49482AH57565554535251502BH5F5E5D5C5B5A59582CH67666564636261602DH6F6E6D6C6B6A69682EH777675747372717

16、02FH7F7E7D7C7B7A79783. 特殊功能寄存器SFR 特殊功能寄存器又称为专用寄存器,用于控制、管理片内算术逻辑部件、串行I/O口、并行I/O口、定时器/计数器、中断系统等功能模块的工作。在51系列单片机中,各专用寄存器(PC除外)与片内RAM统一编址,且作为直接寻址字节,可直接寻址。除PC外,51系列有18个专用寄存器,其中3个为双字节寄存器,共占用21个字节;52子系列有21个专用寄存器,其中5个为双字节寄存器,共占用26个字节。按地址排列的各种特殊功能寄存器名称、表示符、地址等如表2-4所示。其中有11个专用寄存器可以位寻址,它们字节地址的低半字节都为0H或8H(即可位寻址

17、的特殊功能寄存器的字节地址具有能被8整除的特征),共有可寻址位1185(未定义)=83位。在表2-4中也显示 了这些位的地址与位名称。现把其中部分寄存器简单介绍如下:表2-4特殊功能寄存器名称、表示符、地址一览表C/C/C/C/C/专用寄存器名称序号地址位地址与位名称D7D6D5D4D3D2D1D0P0口P080H8786858483828180堆栈指针SP81H数据指针低字节DPL82H数据指针高字节DPH83H定时器/计数器控制TCON88HTF18FTR18ETF08DTR08CIE18BIT18AIE089IT088定时器/计数器方式控制TMOD89HGATEM1M0GATEM1M0定

18、时器/计数器0低字节TL08AH定时器/计数器1低字节TL18BH定时器/计数器0高字节TH08CH定时器/计数器1高字节TH18DHP1口P190H9796959493929190电源控制PCON97HSMODGF1GF0PDIDL串行控制SCON98HSM09FSM19ESM29DREN9CTB89BRB89ATI99RI98串行数据缓冲器SBUF99HP2口P2A0HA7A6A5A4A3A2A1A0中断允许控制IEA8HEAAFET2ADESACET1ABEX1AAET0A9EX0A8P3口P3B0HB7B6B5B4B3B2B1B0中断优先级控制IPB8HPT2BDPSBCPT1BBPX

19、1BAPT0B9PX0B8C/定时器/计数器2控制T2CON*CBHTF2CFEXF2CERCLKCDTCLKCCEXENCBTR2CA2C9CP/RL2C8定时器/计数器2自动重装低字RLDL*CAH定时器/计数器2自动重装高字RLDH*CBH定时器/计数器2低字节TL2*CCH定时器/计数器2高字节TH2*CDH程序状态字PSWD0HCD7ACD6F0D5RS1D4RS0D3OVD2D1PD0累加器AE0HE7E6E5E4E3E2E1E0B寄存器BF0HF7F6F5F4F3F2F1F0 (1) 程序计数器(PCProgram Counter) PC是一个16位的计数器,它的作用是控制程序的

20、执行顺序。PC有自动加1功能,从而实现程序的顺序执行。PC没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。因地址不在SFR(专用寄存器)之内,一般不计作专用寄存器。 (2) 累加器(ACCAccumulator) 累加器为8位寄存器,是最常用的专用寄存器,功能较多,地位重要。它既可用于存放操作数,也可用来存放运算的中间结果。MCS-51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。 (3) B寄存器 B寄存器是一个8位寄存器,主要用于乘除运算。乘法运算时,B存乘数。乘法操作后,乘积的高

21、8位存于B中,除法运算时,B存除数。除法操作后,余数存于B中。此外,B寄存器也可作为一般数据寄存器使用。 (4) 程序状态字(PSWProgram Status Word) 程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则是用软件方法设定。PSW的位状态可以用专门指令进行测试,也可以用指令读出。一些条件转移指令将根据PSW有些位的状态,进行程序转移。PSW(字节地址D0H )的各位定义如下: PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 除PSW.1位保留未用外

22、,其余各位的定义及使用如下: CY(PSW.7)进位标志位。CY是PSW中最常用的标志位。其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位时,CY由硬件置“1”,否则清“0”;二是在位操作中,作累加位使用。CACF0RS1RS0OVP AC(PSW.6)辅助进位标志位。在进行加减运算中,当低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”。在BCD码调整中也要用到AC位状态。 F0(PSW.5)用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。 RS1和RS0(PSW.4,PSW.3)寄存器组选

23、择位。它们被用于选择CPU当前使用的通用寄存器组。通用寄存器共有4组,其对应关系如下: 00:0组 01:1组 10:2组 11:3组 OV(PSW.2)溢出标志位。在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128 +127),即产生了溢出,因此运算结果是错误的。 OV=0表示运算正确,即无溢出产生。 P(PSW.0)奇偶标志位。表明累加器A中内容的奇偶性。如果A中有奇数个“1”,则P置“1”,否则置“0”。凡是改变累加器A中内容的指令均会影响P标志位。此标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的方法来校验数据传输的可靠性。

24、 (5) 数据指针(DPTR) 数据指针为16位寄存器。编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即:DPH,DPTR高位字节,DPL,DPTR低位字节。DPTR通常在访问外部数据存储器时作地址指针使用。由于外部数据存储器的寻址范围为64 KB,故把DPTR设计为16位。 (6) 堆栈指针(SPStack Pointer) 堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。由于MCS-51单片机的堆栈设在内部RAM中,因此SP是一个8位寄存器。系统复位后,SP的内容为07H,从而复位后堆栈实际上是从08

25、H单元开始的。但08H1FH单元分别属于工作寄存器13区,若程序要用到这些区,最好把SP值改为1FH或更大的值。2.3 时钟与复位 时序就是CPU总线信号在时间上的顺序关系。CPU控制其实质上是一个复杂的同步时序电路,所有工作都是在时钟信号控制下进行的。每执行一条指令,CPU的控制器都要发出一系列特定的控制信号,这些控制信号在时间上的相互关系就是CPU的时序。 CPU发出的时序控制信号有两大类。一类是用于单片机内部协调控制的,但对用户来说,并不直接接触这些信号,可以不必了解太多。另一类时序信号是通过单片机控制总线对片外的各种IO接口、RAM、EPROM等芯片工作的协调控制,对于这部分时序信号用

26、户应该关心。 2.3.1 时钟输入 MCS-51 单片机芯片内部设有一个反向放大器所构成的振荡器,XTAL1 和XTAL2分别为振荡电路的输入端和输出端,时钟可以由内部或外部产生。内部时钟电路如图2-4(a)所示。在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常是用石英晶体和电容组成的并联谐振回路。晶振频率可以在1.2MHz到12MHz之间选择,通常选择为6MHz,C1、C2电容值取5Pf30Pf,电容的大小可起频率微调的作用。外部时钟电路如图2-4(b)所示,XTAL1接地,XTAL2接外部振荡器,对外部振荡器信号无特殊要求,只需保证脉冲宽度,一般频率为低

27、于12MHz的方波信号。XTAL2XTAL1MCS-51C1C2CYSXTAL2XTAL1MCS-51+5VVSSTTL外部时钟源图2-4 时钟电路2.3.2 单片机工作的基本时序 计算机在执行指令时,是将一条指令分解为若干基本的微操作。这些微操作对应的脉冲信号在时间上的先后次序称为计算机的时序。MCS-51单片机的时序由下面四种周期构成。 振荡周期:振荡周期:振荡脉冲的周期。 状态周期:状态周期:两个振荡周期为一个状态周期,也称为时钟周期时钟周期,用S表示。两个振荡周期作为两个节拍分别为节拍P1和节拍P2。在状态周期的前半周期P1有效时,通常完成算术逻辑操作;在后半周期P2有效时,一般进行内

28、部寄存器之间的传输。 机器周期:机器周期:一个机器周期包含6个状态周期,用S1、S2、S6表示,共12个节拍,依次可表示为S1P1、S1P2、S2P1、S2P2、S6P1、S6P2。 指令周期:指令周期:执行一条指令所占用的全部时间,它以机器周期为单位。MCS-51系列单片机除乘法、除法指令是4周期指令外,其余都是单周期指令和双周期指令。若用12MHZ晶振,则单周期指令和双周期指令的指令周期时间分别为1s和2s,乘法和除法指令为4s. 周期指令的CPU 时序如图2-5所示P1P2S1P2振荡周期时钟周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1

29、P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2 指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令执行速度越快。MCS-51单片机通常可以分为单周期指令、双周期指令和四周期指令等三种。四周期指令只有乘法和除法指令两条,其余均为单周期和双周期指令。单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段。 2.3.3 单片机的复位 单片机复位是使CPU和系统中的其它功能部件都处在一个确定的初始状态,并从这个状态开始工作,无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位 。 单片机复位的条件是:必须使RST/VPD 或RST引(9

30、)加上持续两个机器周期(即24个振荡周期)的高电平。 单片机常见的复位电路如图2-5(a),(b)所示。图2-5(a)为上电复位电路,它是利用电容充电来实现的。在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。图2-5(b)为按键复位电路。若要复位,只需按图2-5(b)中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。 图2-7 单片机的复位(a) 上电复位电路;(b) 按键复位电路 表2-5内部各专用寄存器复位后状态PC:0000HTMOD:00HAC

31、C:00HTCON:00HB:00HTH0:00HPSW:00HTL0:00HSP:07HTH1:00HDPTR:0000HTL1:00HP0P3:FFHSCON:00HIP:*00000BSBUF:不定IE:0*00000BPCON:0*0000复位后,内部各专用寄存器状态如下表所示: SP值为07H,表明堆栈底部在07H。一般需重新设置SP值。 P0-P3口值为FFH。P0-P3口用作输入口时,必须先写入“1”。单片机在复位后,已使P0-P3口每一端线为“1”,为这些端线用作输入口做好了准备。2.4 并行输入/输出接口 MCS-51系列单片机有4个8位并行输入/输出接口:P0、P1、P2和

32、P3口。这4个口既可以并行输入或输出8位数据,又可以按位使用,即每一位均能独立作输入或输出用。每个口虽功能有所不同,但都具有1个锁存器(即特殊功能寄存器P0P3)、1个输出驱动器和2个(P3口为3个)三态缓冲器。 2.4.1 P0口的结构与功能1. P0口结构 P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用I/O接口。其1位的结构原理如图2-8所示。P0口由8个这样的电路组成。锁存器起输出锁存作用,8个锁存器构成了特殊功能寄存器P0;场效应管(FET)V1、V2组成输出驱动器,以增大带负载能力:三态门1是引脚输入缓冲器;三态门2用于读锁存器端口;与门3、反相器4及模拟转换开关

33、构成了输出控制电路。图2-8 P0口1位结构图 2. 地址/数据分时复用功能 当P0口作为地址/数据分时复用总线时,可分为两种情况:一种是从P0口输出地址或数据,另一种是从P0口输入数据。 在访问片外存储器时,需从P0口输出地址或数据信号,这时控制信号应为高电平“1”,转换开关MUX把反相器4的输出端与V1接通,同时把与门3打开。当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现的相应的高电平“1”;当地址或数据为“0”时,经反相器4使V1导通而V2截止,引脚上出现相应的低电平“0”。这样就将地址/数据的信号输出。 3. 通用I/O接口功能 当P0口作为I/

34、O口使用,在CPU向端口输出数据时,对应的控制信号为0,转换开关把输出极与锁存器Q端接通,同时与门3输出为0,使V2截止,此时,输出极是漏极开路电路。当写脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在Q端,又经输出V1反相,在P0引脚上出现的数据正好是内部总线的数据,当要从P0口输入数据时,引脚信息仍输入缓冲器内部总线。 4. 端口操作MCS-51单片机有不少指令可直接进行端口操作,例如:ANL P0,A ;(P0)(P0)(A)ORL P0,#data ;(P0)(P0)VdataDEL P0 ;(P0)(P0)1 这些指令的执行过程分成“读修改写”三步,先将P0口的数

35、据读人CPU,在ALU中进行运算,运算结果再送回P0。执行“读修改写”类指令时,CPU是通过三态门2读回锁存器Q端的数据来代表引脚状态的。如果直接通过三态门1从引脚读回数据,有时会发生错误。例如,用一根口线去驱动一个晶体管的基极,当向此口线输出1时,锁存器Q=1,V2导通驱动晶体管。当晶体管导通后,引脚上的电平被拉到电平(0.7V),因而,若从引脚直接读回来数据,原为1的状态则会错读为0,所以要从锁存器Q端读取数据。2.4.2 P1口的结构与功能 P1口作为准双向口,其1位的内部结构如图2-9所示。它在结构上与P0口的区别在于输出驱动部分。其输出驱动部分由场效应管V1与内部上拉电阻组成。当其为

36、输出高电平时,可以提供拉电流负载,不必像P0口那样需要外接上拉电阻。 P1口只有通用I/O接口一种功能(对51子系列),其输入输出原理特性与P0口作为通用I/O接口使用时一样,请读者自己分析。P1口具有驱动4个LSTTL负载的能力。 另外,对于52子系列单片机P1口,P1.0与P1.1除作为通用I/O接口线外,还具有第二功能,即P1.0可作为定时器/计数器2的外部计数脉冲输入端T2,P1.1可作为定时器/计数器2的外部控制输入端T2EX。图2-9 P1口1位结构图2.4.3 P2口的结构与功能 P2口也是准双向口,其1位的内部结构如图2-10所示。它具有通用I/O口和高8位地址总线输出两种功能

37、,所以其输出驱动结构比P1口输出驱动结构多了一个模拟转换开关MUX和反相器3。当作为准双向通用I/O口使用时,控制信号使转换开关接向左侧,锁存器Q端经反向器3接V1,其工作原理与P1相同,也具有输入、输出、端口操作三种工作方式,负载能力也与P1相同。 当作为外部扩展存储器的高8位地址总线使用时,控制信号使转换开关接向右侧,由程序计数器PC的高8位地址PCH,或数据指针DPTR的高8位地址DPH经反相器3和V1原样呈现在P2口的引脚上,输出高8位地址A8A15。在上述情况下,P2口锁存器的内容不受影响,所以,访问外部存储器结束后,由于转换开关又接至左侧,使输出驱动器与锁存器Q端相连,引脚上将恢复

38、原来的数据。图2-10 P2口1位结构图2.4.4 P3口的结构与功能 P3口的1位结构如图2-11所示。它的输出驱动由与非门3、V1组成,比P0、P1、P2口多了一个缓冲器4。P3口除了可作为通用准双向I/O接口外,每一根口线还具有第二功能。 当P3口作为通用I/O接口时,第二功能输出线为高电平,使与非门3的输出取决于口锁存器的状态。在这种情况下,P3口仍是一个准双向口,它的工作方式、负载能力均与P1、P2口相同。 当P3口作为第二功能(各引脚功能见表2.1)使用时,其锁存器Q端必须为高电平,否则V1管导通,引脚将被箝位在低电平,无法输入或输出第二功能信号。图2-11 P3口1位结构图2.5

39、 中断系统2.5.1 中断技术的概述1. 中断的概念 当MCS-51单片机的CPU正在处理某件事情的时候,单片机外部或内部发生的某一事件请求CPU 迅速去处理,于是,CPU暂时终止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这称为中断。如图2-12所示。对事件的整个处理过程,称为中断处理。如图2-12 中断处理过程 能够实现中断处理功能的部件称为中断系统;产生中断的请求源称为中断请求源(或中断源);中断源向CPU提出的处理请求,称为中断请求(或中断申请)。当CPU暂时终止正在执行的程序,转去执行中断服务程序时,除了硬

40、件自动把断点地址(16位程序计数器PC的值)压入堆栈之外,用户应注意保护有关的工作寄存器、累加器、标志位等信息,这称为保护现场。在完成中断服务程序后,恢复有关的工作寄存器、累加器、标志位内容,这称为恢复现场。最后执行中断返回指令RETI,从堆栈中自动弹出断点地址到PC,继续执行被中断的程序,这称为中断返回。 如果没有中断技术,CPU的大量时间可能会浪费在原地踏步的查询操作上,或者采用定时查询,即不论有无中断请求,都要定时去查询。采用中断技术完全消除了CPU在查询方式中的等待现象,大大地提高了CPU的工作效率。 2. 中断的特点(1)分时操作,高低速配合。(2) 实时处理(3) 故障处理2.5.

41、2 中断源与中断申请标志 MCS-51单片机的中断系统有5个中断请求源,具有2个中断优先级,可实现2级中断服务程序嵌套。每一个中断源可以用软件独立地控制允许中断状态或关中断状态;每一个中断源的中断级别均可用软件来设置。 MCS-51的中断系统结构示意图如图2-13所示。 图2-13 MCS-51的中断系统结构示意图 1. 中断源 MCS-51中断系统共有5个中断请求源,它们是: 外部中断请求0,由P3.2引脚输入,中断请求标志为IE0。 外部中断请求1,由P3.3引脚输入,中断请求标志为IE1。 定时器/计数器T0溢出中断请求,中断请求标志为TF0。 定时器/计数器T1溢出中断请求,中断请求标

42、志为TF1。 串行口中断请求,中断请求标志为TI或RI。 2. 中断请求标志 这些中断请求源的中断请求标志位分别由特殊功能寄存器TCON和SCON的相应位锁存。 TCON为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。该寄存器中既有定时器/计数器T0和T1的溢出中断请求标志位TF1和TF0,也包括了有关外部中断请求标志位IE1与IE0。 TCON中各标志位的功能如下: D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0TCON寄存器中与中断系统有关的各标志位的功能如下:(1) IT0选择外部中断请求0为跳沿触发方式还是电平触发方式。(2)

43、IE0外部中断请求0的中断请求标志位。(3) IT1选择外部中断请求1为跳沿触发方式还是电平触发 方式,其意义与IT0类似。(4) IE1外部中断请求1的中断请求标志位。(5) TF0MCS-51片内定时器/计数器T0溢出中断请求标志位。(6) TF1MCS-51片内的定时器/计数器T1的溢出中断请求标志位,功能和TF0类似。(7) TR1(D6)、TR0(D4)这2个位与中断无关,仅与定时器/计数器T1和T0有关。 当MCS-51复位后,TCON被清0,则CPU关中断,所有中断请求被禁止。 SCON为串行口控制寄存器,字节地址为98H,可位寻址。SCON的低2位锁存串行口的发送中断和接收中断

44、的中断请求标志TI和RI。 SCON中各标志位的功能如下:D7 D6 D5 D4 D3 D2 D1 D0SM0SM1SM2RENTB8RB8TIRI(1)TI串行口发送中断请求标志位。 (2)RI串行口接收中断请求标志位。2.5.3 中断控制与中断响应 1. 中断控制 MCS-51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE,用于控制CPU对各中断源的开放或屏蔽。IE寄存器各位定义如下:D7 D6 D5 D4 D3 D2 D1 D0 EAET2ESET1EX1ET0EX0IE中各为的功能如下:(1) EA中断允许总控制位 (2) ES串行口中断允许位(3) ET1

45、定时器/计数器T1的溢出中断允许位(4) EX1外部中断1中断允许位(5) ET0定时器/计数器T0的溢出中断允许位(6) EX0外部中断0中断允许位 MCS-51复位以后,IE被清0,所有的中断请求被禁止。 2. 中断响应 MCS-51单片机的中断源有两个用户可控的中断优先级,从而可实现二级中断嵌套。中断系统遵循如下三条规则: (1)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。 (2)正在进行的低优先级的中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。 (3)CPU同时接收

46、到几个中断请求时,首先响应优先级最高的中断请求。 每个中断源的优先级可通过中断优先级寄存器IP进行设置并管理。IP字节地址B8H,各位定义格式如下:D7 D6 D5 D4 D3 D2 D1 D0PT2PSPT1PX1PT0PX0中断优先级寄存器IP各个位的含义如下:(1) PS串行口中断优先级控制位(2) PT1定时器T1中断优先级控制位(3) PX1外部中断1中断优先级控制位(4) PT0定时器T0中断优先级控制位(5) PX0外部中断0中断优先级控制位 中断优先级控制寄存器IP的各位都由用户程序置1和清0,MCS51复位以后,IP的内容为0,各个中断源均为低优级中断 若同时到几个同一优先级

47、的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序如表2-6所示下:表2-6中断优先级中断源同级的中断优先级外部中断0定时器/计数器0外部中断1定时器/计数器1串行口中断定时器/计数器2最高最低2.5.4 中断处理过程1中断响应 中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。CPU并非任何时刻都响应中断请求,而是在中断响应条件满足之后才会响应。 CPU响应中断的条件有: 有中断源发出中断请求。 中断总允许位EA = 1。 申请中断的中断源允许。 满足以

48、上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。 CPU正在响应同级或高优先级的中断。 当前指令未执行完。 正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。 若存在上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询,否则,CPU在下一机器周期响应中断。 中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。首先,中断系统通过硬件自动生成长调用指令(LACLL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW和其它寄存器的内容),然后,将对应的中断入口地址装入程序计数器PC(由硬件自动

49、执行),使程序转向该中断入口地址,执行中断服务程序。MCS-51系列单片机各中断源的入口地址由硬件事先设定。分配如下:中断源 入口地址外部中断0 0003H定时器T0中断 000BH外部中断1 0013H定时器T1中断 001BH串行口中断 0023H 2个中断入口间只相隔8个字节,一般情况下难以安排下一个完整的中断服务程序。因此,通常总是在中断入口地址处放置一条无条件转移指令,使程序执行转向其它地址存放的中断服务程序。 图2-14中断嵌套流程图2中断处理 中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令“RETI”为止,一般包括两部分内容,一是保护现场,二是完成中

50、断源请求的服务。 通常,主程序和中断服务程序都会用到累加器A、状态寄存器PSW及其它一些寄存器,当CPU进入中断服务程序用到上述寄存器时,会破坏原来存储在寄存器中的内容,一旦中断返回,将会导致主程序的混乱。因此,在进入中断服务程序后,一般要先保护现场,然后执行中断处理程序,在中断返回之前再恢复现场。 编写中断服务程序时还需注意以下几点: 各中断源的中断入口地址之间只相隔8个字节,容纳不下普通的中断服务程序。因此,在中断入口地址单元通常存放一条无条件转移指令,可将中断服务程序转至存储器的其它任何空间。 若要在执行当前中断程序时禁止其它更高优先级中断,需先用软件关闭CPU中断,或用软件禁止响应高优

51、先级的中断,在中断返回前再开放中断。 在保护和恢复现场时,为了不使现场数据遭到破坏或造成混乱,一般规定此时CPU不再响应新的中断请求。因此,在编写中断服务程序时,要注意在保护现场前关闭中断,在保护现场后若允许高优先级中断,则应开中断。同样,在恢复现场前也应先关闭中断,恢复之后再开中断。3中断返回 中断返回是指中断服务完成后,计算机返回原来断开的位置(即断点),继续执行原来的程序。中断返回由中断返回指令RETI来实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器。特别要注意不能用“RET”指令代替“RETI”指令。2.

52、6 定时器/计数器 在工业检测、控制中,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数,产生精确的定时时间等。MCS51单片机内有两个可编程的定时器/计数器T1、T0以满足这方面的需要,两个定时器/计数器都具有定时和计数两种工作模式。1. 计数器工作模式 计数功能是对外来脉冲进行计数。 每当计数器的计数输入引脚的脉冲发生负跳变时,计数器加1。2. 定时器工作模式 定时器功能也是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机的内部,即每个机器周期产生1个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。这样可以根据计数值计算出定时时间,也可根据定时时间的要求计算出计数器的初

53、值。 MCS51单片机的定时器/计数器具有4种工作方式(方式0、方式1、方式2、和方式3),其控制字均在相应的特殊功能寄存器中,通过对它的特殊功能寄存器的编程,用户可方便的选择定时器/计数器2种工作模式和4种工作方式。2.6.1定时器/计数器T0和T1的结构 1. 组成结构 8051单片机内部有两个16位的可编程定时/计数器,称为定时器0(T0)和定时器1(T1),可编程选择即其作为定时器用还是作为计数器用。此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图2-15所示。图2-15 8051定时器/计数器逻辑结构图 由图可知,8051定时/计数器由定时器0、定时

54、器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。 定时器0、定时器1是16位加法计数器,分别由两个8位专用寄存器组成:定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问地址依次为8AH、8BH、8CH、8DH,每个寄存器均可单独访问。定时器0或定时器1用作计数器时,对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数,每输入一个脉冲,加法计数器加1;其用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,故计数值确定时,时间也随之确定。 TMOD、TCON与定时器0、定时器1通过内部总线及逻辑电路连接,TMOD用于设置定时

55、器的工作方式,TCON用于控制定时器的启动与停止。2. 工作原理 当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关。 当定时/计数器设置为计数工作方式时,外部脉冲的下降沿将触发计数。若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。 当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定的工作方式独立工作,不再占用CPU的操作时间,只有在计数器计满溢出时才可能中断CP

56、U当前的操作。2.6.2 定时/计数器的方式寄存器和控制寄存器1. 定时/计数器方式寄存器TMOD 定时器/计数器T0、T1都有四种工作方式,可通过程序对TMOD设置来选择。TMOD的低4位用于定时器/计数器0,高4位用于定时器/计数器1。其位定义如下:D7 D6 D5 D4 D3 D2 D1 D0C/C/GATEM1M0GATEM1M0表2-7 定时器/计数器工作方式M1MO工作方式方式说明00013位定时器/计数器01116位定时器/计数器102具有自动重装初值的8位定时器/计数器113定时器/计数器0分成两个8位定时器/计数器GATE:门控位,用于控制定时器/计数器的启动是否受外部中断请

57、求信号的影响,如果GATE=1,定时器/计数器0的启动受芯片引脚 (P3.2)控制,定时器/计数器1的启动受芯片引脚 (P3.3)控制;如果GATE=0,定时器/计数器的启动与引脚 、 无关。一般情况下GATE=0。2. 定时器/计数器控制寄存器TCON TCON控制寄存器,字节地址88H,各位定义如下:D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0TF0(TF1):T0(T1)定时器/计数器溢出中断标志位。TR0(TR1):T0(T1)运行控制位。IE1:外部中断1( )请求标志位。IT1:外部中断1触发方式选择位。IE0:外部中断0 ( )请

58、求标志位。 IT0:外部中断0触发方式选择位。 2.6.3 四种工作方式1. 工作方式0 当M1M0=00时,定时器/计数器设定为工作方式0,构成13位定时器/计数器。其逻辑结构如图2-16所示(图中x为0或1,分别代表T0或T1的有关信号)。 图2-16定时器/计数器工作方式0逻辑结构 可用程序将08191(21)的某一数送入THx、TLx作为初值。THx、TLx从初值开始加法计数,直至溢出。所以初值不同,定时时间或计数值不同。必须注意的是:加法计数器THx溢出后,必须用程序重新对THx、TLx设置初值,否则下一次THx、TLx将从0开始计数。 如果C/ =1,图2-14中开关S1自动地接在

59、下面,定时器/计数器工作在计数状态,加法计数器对Tx引脚上的外部脉冲计数。计数值由下式确定: N = 2 x = 8192 - x 式中N为计数值,x是THx、TLx的初值。x=8191时为最小计数值1,x=0时为最大计数值8192,即计数范围为18192。 定时器/计数器在每个机器周期的S5P2期间采样Tx脚输入信号,若一个机器周期的采样值为1,下一个机器周期的采样值为0,则计数器加1。由于识别一个高电平到低电平的跳变需两个机器周期,所以对外部计数脉冲的频率应小于fosc/24,且高电平与低电平的延续时间均不得小于1个机器周期。C/=0时为定时器方式,开关S1自动地接在上面,加法器对机器周期

60、脉冲Tcy计数,每个机器周期THx加1。定时时间由下式确定: T= N Tcy =(8192x)Tcy式中Tcy为单片机的机器周期。如果振荡频率fosc=12MHz,则Tcy=1s,定时范围为18192s。 定时器/计数器的启动或停止由TRx控制。当GATE=0时,只需用软件置TRx=1,开关S2闭合,定时器/计数器就开始工作了;置TRx=0,S2打开,定时器/计数器停止工作。 GATE=1为门控方式。此时,仅当TRx=1且引脚上出现高电平(即无外部中断请求信号),S2才闭合,定时器/计数器开始工作。如果引脚上出现低电平(即有外部中断请求信号),则停止工作。所以,在门控方式下,定时器/计数器的

61、启动受到外部中断请求的影响,可用来测量引脚上出现的正脉冲宽度。2. 工作方式1 当M1M0=01时,定时器/计数器设定工作方式1,构成了16位定时器/计数器。其逻辑结构如图2-17所示。此时THx、TLx都是8位加法计数器。其它与工作方式0相同。图2-17定时器/计数器工作方式1逻辑结构在方式1时,计数器的计数值由下式确定: N = 2 16 x = 65536 x计数范围为165536。定时器的定时时间由下式确定: T = NTcy =(65536 x)Tcy如果fosc=12MHz,则Tcy=1s。3. 工作方式2 当M1M0=10时,定时器/计数器设定为工作方式2。方式2是自动重装初值的

62、8位定时器/计数器。其逻辑结构如图2-18所示。 图2-18定时器/计数器工作方式2逻辑结构 TLx作为8位加法计数器使用,THx作为初值寄存器用。THx、TLx的初值都由软件设置。THx计数溢出时,不仅置位TFx,而且发出重装载信号,使三态门打开,将THx中的初值自动送入TLx,并从初值开始重新计数。重装初值后,THx的内容保持不变。在工作方式2时,计数器的计数值由下式确定: N = x = 256 x计数范围为1256。定时器的定时值由下式确定: T = N Tc y=(256x)Tcy如果fosc=12MHz,则Tcy=1s,定时范围为1256s。4. 工作方式3 当M1M0=11时,定

63、时器/计数器设定为工作方式3。其逻辑结构如图2-19所示。方式3只适用于定时器/计数器T0。 图2-19定时器/计数器工作方式3逻辑结构 方式3只适用于定时器/计数器T0。当T0工作在方式3时,TH0和TL0被分成两个独立的8为计数器。这时,TL0既可作为定时器用,也可作为计数器使用,而TH0只能作为定时器用,并且占用了定时器/计数器T1的两个控制信号TR1和TF1。在这种情况下,定时器/计数器T1虽仍可用于方式0、1、2,但不能使用中断方式。通常是将定时器/计数器T1用作串行口的波特率发生器,由于已没有计数溢出标志位TF1可供使用,因此只能把计数溢出直接送给串行口。当作为波特率发生器使用时,

64、只需设置好工作方式,便可自行运行。如需停止工作,只要送入一个把它设置为方式3的方式控制字就可以了。由于定时器/计数器T1不能在方式3下使用,如果强行把它设置为方式3,就相当于停止工作。2.7 串行接口2.7.1 串行口通信的基本概念1. 通信的两种基本方式 计算机与外界的信息交换称为通信。通信的基本方式分别为并行和串行通信两种。以上两种通信方式的示意图如图2-20所示。 图2-20 通信的两种基本方式 计算机与外界的信息交换称为通信。通信的基本方式分别为并行和串行通信两种。 并行通信是构成一组数据的各位同时进行传送。例如8位数据或16位数据并行传送。其特点是传送速度快,但若距离较远、位数又多时

65、会导致通信线路复杂且成本高。 串行通信是数据一位接一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线)。从而大大地降低了成本,特别适用于远距离通信。缺点是传送速度慢。2. 串行通信的分类 按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。(1) 异步通信 异步传送方式的特点是数据在线路上的传送不连续。传送时,数据是以字符为单位进行传送的。它用一个起始位表示字符的开始,用停止表示字符的结果。一个字符又称为一帧。一帧信息由起始位、数据位、奇偶校验位和停止位4个部分组成。起始位为0信号,占1位;其后就是数据位,它可以是5位、6位、7位或8位。传送时低位在先,

66、高位在后;再后面的是1位奇偶校验位(可要可不要);最后是停止位,它用信号1来表示一帧信息的结束,可以是1位、1位半或2位。异步传送中,字符间隔不固定。在停止位后可以加空闲位,空闲位用高电平表示,用于等待传送。这样接收和发送可以随时或间断进行,而不受时间的限制。图2-21 异步传送的字符格式在串行异步传送中,通信双方必须事先有约: 字符格式。双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用ASCII码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共10位。当然停止位也可以大于1位。 波特率(Baud rate)。波特率就是数据的传送速率,即每秒传送的二进制

67、位数,单位为位/秒。它与字符的传送速率(字符/秒)之间有以下关系:波特率 = 一个字符的二进制编码位数 字符/秒要求发送端与接收端的波特率必须一致。(2) 同步通信 同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图2-22所示。图2-22(a)为单同步字符帧结构,图2-22(b)为双同步字符帧结构,但它们均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。 图2-22 同步通信的字符帧格式(a) 单同步字符帧格式;(b) 双同步字符帧格式3. 串行通信的

68、制式在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种制式。图2-23为三种制式的示意图。图2-23 单工、半双工和全双工三种制式示意图 2.7.2 51单片机串行通信接口 MCS-51单片机内部有一个功能很强的全双工串行口,可同时接收和发送数据。接收、发送数据均可工作在查询方式或中断方式,使用十分灵活,能方便地与其它计算机或串行传送信息的外部设备(如打印机、CRT终端等)实现双机、多机通信。1. MCS-51串行口结构 MCS-51内部有两个独立的接收、发送缓冲器SBUF。S

69、BUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。串行口的结构如图2-24所示。 图2-24串行口结构示意图2. 串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据。3. 串行口控制寄存器SCON 串行口控制寄存

70、器SCON,字节地址98H,各位格式如下:D7 D6 D5 D4 D3 D2 D1 D0SM0SM1SM2RENTB8RB8TIRI SM0、SM1:由软件置位或清零,用于选择串行口四种工作方式,如下表所示。表2-8串行口的工作方式SM0SM1工作方式功 能波特率00方式0移位寄存器方式,用于并行I/O扩展fosc/1201方式18位通用异步接收器/发送器可变10方式29位通用异步接收器/发送器fosc/32或fosc/6411方式39位通用异步接收器/发送器可变SM2:多机通信控制位。在方式2和方式3中,如SM2=1,则接收到的第9位数据(RB8)为0时不启动接收中断标志RI(即RI=0),

71、并且将接收到的前8位数据丢弃;RB8为1时,才将收到的前8位数据送入SBUF,并置位RI,产生中断请求。当SM2=0时,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断请求。在方式为0时,SM2必须为0。REN:允许串行接收控制位。若REN=0,则禁止接收;REN=1,在允许接收该位由软件置位或复位。TB8:发送数据D8位。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据;TB8=1为地址;也可用作数据的奇偶校验位,该位由软件置位或复位。RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据

72、,可作为奇偶校验位或地址帧或数据帧的标志。方式为1时,若SM2=0,则RB8是接收到的停止位。在方式为0时,不使用RB8位。TI:发送中断标志位。在方式为0时,当发送数据第8位结束后,或在其它方式发送停止位后,由内部硬件使TI置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。此外,TI也可供查询使用。RI:接收中断位。在方式为0时,当接收数据的第8位结束后,或在其它方式接收到停止位的中间,由内部硬件使RI置位,向CPU请求中断。同样,在CPU响应中断后,也必须用软件清零。RI也可供查询使用。4. 电源控制寄存器PCON 电源控制寄存器PCON,字节地址87H,各位格式如下:D7 D6

73、 D5 D4 D3 D2 D1 D0SMODGF1GF0PD1DLPCON的最高位SMOD是串行口波特率系数控制位。SMOD=1时,波特率增大一倍。其余各位与串行口无关。2.7.3 串行通信接口工作方式及多机通信 1. 方式0 串行口的工作方式0为移位寄存器方式。数据从RXD引脚上接收或发送。一帧信息由8位数据组成,低位在前。波特率固定,为fosc/12。同步脉冲从TXD引脚上输出。(1) 发送 CPU执行一条写SBUF的指令,如MOV SBUF,A,就启动了发送过程。每一个机器周期从RXD上发送一位数据。故波特率为fosc/12。同时同步移位脉冲,一个机器周期从TXD上输出一次。8位数据(一

74、帧)发送完毕后,向CPU申请中断。如果再次发送数据,必须用软件将T1清零,并再次执行写SBUF指令。(2) 接收 在RI=0的条件下,将REN(SCON.4)置1就启动一次接收过程。此时RXD为串行数据接收端,TXD依然输出同步移位脉冲。 将8位数据并行送入接收数据缓冲器SBUF中保存。与此同时,接收控制器硬件置接收中断标志RI=1,向CPU申请中断。CPU响应中断后,用软件使RI=0,使移位寄存器开始接收下一帧信息,然后通过读接收缓冲器的指令,例如MOV A,SBUF,读取SBUF中的数据。图2-25 串行口工作方式结构示意图2. 方式1 方式1为8位异步通讯接口方式,RXD为接收端,TXD

75、为发送端。一帧信息由10位组成。方式1的波特率可变,由定时器/计数器T1的溢出率以及SMOD(PCON.7)决定,且发送波特率与接收波特率可以不同。(1) 发送 CPU执行一条写SBUF指令并启动了串行口发送,数据从TXD输出。一帧信息发送完毕之后,发送控制硬件置发送中断标志TI=1,向CPU 申请中断。 (2) 接收允许接收控制位REN被置1,接收器就开始工作。 如果RI=0、SM2=0,接收控制器发出“装载SBUF信号”,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=1,向CPU 申请中断。 如果RI=0,SM2=1,那么只有停止位为1才发生上述操作。 RI=0,SM2

76、=1且停止位为0,所接收的数据不装入SBUF,数据将会丢失。 如果RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。 3. 方式2与方式3 方式2、方式3都是9位异步通信接口,其结构示意图如图2-23所示。发送或接收一帧信息由11位组成,其中1位起始位、9位数据位和1位停止位。方式2与方式3仅波特率不同,方式2的波特率为fosc/32(SMOD=1时)或fosc/64(SMOD=0时),而方式3的波特率仅由定时器/计数器T1及SMOD 决定。 在方式2、方式3时,发送、接收数据的过程与方式1基本相同,所不同的是仅在于对第9位数据的处理上。发送时,第9位数据由SCON中的TB8位

77、提供。接收数据时,当第9位数据移入移位寄存器后,将8位数据装入SBUF,第9位数据装入SCON中的RB8。4. 多机通信 在实际应用中,经常需要多个单片机之间协调工作,即多机通信。利用MCS-51单片机串行口可实现多机通信。串行口用于多机通信时必须使用方式2或方式3。 主从式多机通信是多机通信中应用最广,也是最简单的一种。主从式多机通信中只有一台主机,从机则可以有多台。主从发出的信息只能传送到所有从机或指定的从机;而从机发出的信息只能被主机接收,各从机之间不可以直接通信,必须通过主机进行。由8051单片机构成的主从式多机系统如图2-26所示。图2-26 主从式多机系统 在主从式多机系统中,主机

78、发出的信号有两类,而且具有特征,能够有所区分。一类为地址,用来确定需要和主机通信的从机,特征是串行传送的第9位数据为1;另一类是数据,特征是串行传送的第9位数据为0。对从机来说,要利用SCON寄存器中的SM2位的控制功能。在接收时,若RI=0,则只要SM2=1,接收总能实现;而若SM2=0,则发送的第9位TB8必须为0接收才能进行。因此,对于主机来说,在接收地址时,应使SM2=1,以便接收到主机发来的地址,从而确定主机是否打算和自己通信,一经确认后,从机应使SM2=0,以便接收TB8=0的数据。主从多机通信的过程如下:(1) 使所有的从机的SM2位置1,以便接收主机发来的地址。(2) 主机发出

79、一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1。(3) 所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的主机,使SM2位清零以接收主机随后发来的所有信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的数据帧。(4) 主机给已被寻址的从机发送控制指令和数据(数据帧的第9位为0)。2.7.4 波特率设置 在串行通信中,收发双方对传送的数据速率,即波特率要有一定的约定。MCS-51单片机的串行口通过编程可以有4种工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器1的溢出率决定,下面加

80、以分析。 1. 方式0和方式2 在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变。 在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32.即2. 方式1和方式3 在方式1和方式3下,波特率由定时器1的溢出率和SMOD共同决定。波特率= (2SMOD/32) X 定时器1的溢出率。其中,定时器1的溢出率取决于单片机定时器1的计数速率和定时器的预置值。计数速率与TMOD寄存器中的C/位有关。当C/ =0时,计数速率为fosc/12;当C/ =1时,计数速率为外部输入时钟频率。 实际上,当定时器1做波特率

81、发生器使用时,通常是工作在模式2,即自动重装载的8位定时器,此时TL1作计数用,自动重装载的值在TH1内。设计数的预置值(初始值)为X,那么每过256X个机器周期,定时器溢出一次。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。溢出周期为溢出率为溢出周期的倒数,所以波特率为表2-9 定时器1产生的常用波特率C/波特率/(b/s)fosc/MHzSMOD定时器1模式初始值方式0:1方式2:375 k方式1、3:62.5 k19.2 k9.6 k4.8 k2.4 k1.2 k137.5 k11011012121211.05911.05911.05911.05911.05911.9866121110000000000000000222222221FFHFDHFDHFAHF4HE8H1DH72HFEEBH

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号