MCS单片机内的功能模块并行口定时器串行口课件_第1页
MCS单片机内的功能模块并行口定时器串行口课件_第2页
MCS单片机内的功能模块并行口定时器串行口课件_第3页
MCS单片机内的功能模块并行口定时器串行口课件_第4页
MCS单片机内的功能模块并行口定时器串行口课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 MCS-51单片机内的功能模块 MCS-51系列单片机的所有产品一般都具有并行口,定时器和串行口等功能模块。这一章主要介绍这些基本的功能模块使用方法。5.1 并行口 典型的MCS-51单片机有四个双向8位I/O口,分别记作P0、P1、P2、P3,每一个口都由口锁存器、输入缓冲器/输出驱动器所组成。图5-1分别给出了P0、P1、P2、P3口的1位的结构框图。第1页,共71页。并行口结构框图P0.XPIND QCL Q内部总线读锁存器写锁存器读引脚VCC多路开关T1T2地址/数据控制D QCL Q内部总线读锁存器写锁存器读引脚VCC内部提升P1.XPINTD QCL Q内部总线读锁存器写锁

2、存器读引脚VCC内部提升P3.XPINT第二输出功能第二输入功能P2.XPIND QCL Q内部总线读锁存器写锁存器读引脚VCC多路开关T地址控制内部提升第2页,共71页。工作原理:P0P3的口锁存器结构都是一样的, P0P3口的每一位口锁存器都是一个D触发器,复位以后的初态为1。但输入缓冲器和输出驱动器的结构有差别。CPU通过内部总线把数据写入口锁存器。CPU对口的读操作有两种:一种是读-修改-写指令(例如ANL P1,#0FEH),读口锁存器的状态,此时口锁存器的状态由Q端通过上面的三态输入缓冲器送到内部总线。另一种是读指令(例如MOV A,P1),CPU读取口引脚上的外部输入信息,这时引

3、脚状态通过下面的三态输入缓冲器传送到内部总线。P1、P2和P3口内部有拉高电路,称为准双向口。 P0口内部没有拉高电路,是三态双向I/O口。P1、P2、P3口可以驱动四个LSTTL电路,P0口可以驱动八个LSTTL电路。第3页,共71页。5.1.1 P1口一、P1口特性 P1口为准双向口,只能作为通用I/O口使用,用来传送数据。它的每一位可以分别定义为输入线或输出线,即用户可以把P1口的某些位作为输出线使用,另外的一些位作为输入线使用。 P1口的某一位作为输入线时,该位的口锁存器必须保持“1”,使输出场效应管T截止,这时该位引脚由内部拉高电路拉成高电平,也可以由外部的电路拉成低电平,CPU读P

4、1引脚状态时实际上就是读出外部电路的输入信息。P1口作为输入时,可以被任何TTL电路和MOS电路所驱动,由于内部具有提升电路,也可以被集电极开路或漏极开路的电路所驱动。 P1口的某一位作为输出线时,将“1”写入该位口锁存器,则 Q 端上的输出场效应管T截止,该位的输出引脚由内部的拉高电路拉成高电平,输出“1”;将“0”写入口锁存器,输出场效应管T导通,引脚输出低电平,即输出“0”。D QCL Q内部总线读锁存器写锁存器读引脚VCC内部提升P1.XPIN第4页,共71页。二、P1口的操作P1口的字节地址为90H,位地址为90H97H。对P1口的操作,可以采用字节操作,也可以采用位操作。复位以后,

5、口锁存器为1。例:在图5-2中,P1.0P1.3作为输出线,接指示灯L0L3。P1.4P1.7作为输入线接四个开关K0K3。P1.0P1.1P1.2P1.3P1.4P1.6P1.5K0K1K3K2P1.78051-+-+-+-+5vL0L1L2L3第5页,共71页。例1 的子程序采用字节操作指令将开关状态送指示灯显示,Ki闭合,Li亮。例1KLA:MOVA,P1 SWAPA ORLA,#0F0H ;保持P1.4P1.7口锁存器为1 MOVP1,A RET例2用位操作指令实现同样的功能。例2 KLB:MOVC,P1.4 ;位传送不影响P1.4P1.7口锁存器 MOVP1.0,C MOVC,P1.

6、5 MOV P1.1,C MOVC,P1.6 MOVP1.2,C MOVC,P1.7 MOVP1.3,C RET第6页,共71页。5.1.2 P3口一、P3口特性 P3口为多功能口,它的第一功能为准双向口,可以作为通用I/O口使用,其特性和P1口相似 。但在实际应用中它的第二功能信号更多。P3口的每一位可以分别定义为第一功能输入/输出线或第二功能输入/输出线。P3口的某一位作为第一功能输入/输出线时,第二功能输出线总是为高电平,该位引脚输出电平仅取决于口锁存器的状态,为“1”时输出高电平,为“0”时输出低电平。P3口的某一位作为输入线时,该位口锁存器应保持“1”,使输出场效应管T截止,引脚状态

7、由外部输入电平所确定。P3口的某一位作为第二功能输入/输出线时,该位的口锁存器也必须保持“1”,使输出场效应管的状态由第二功能输出确定。D QCL Q内部总线读锁存器写锁存器读引脚VCC内部提升P3.XPINT第二输出功能第二输入功能 P3口的口锁存器Q端接与非门驱动输出场效应管T,该与非门的另一个控制端为第二功能输出线。P3口的引脚状态通过输入缓冲器输入到内部总线和第二功能输入线。第7页,共71页。表5-1 P3口的第二功能定义T0(定时器T0外部计数脉冲输入线)T1(定时器T1外部计数脉冲输入线)WR(外部数据存贮器写脉冲输出线)RD(外部数据存贮器读脉冲输出线)第二功能RXD(串行口输入

8、线)TXD(串行口输出线)INT0(外部中断0输入线)INT1(外部中断1输入线)第二功能P3.4P3.5P3.6P3.7P3.0P3.1P3.2P3.3口引脚口引脚二、P3口的操作 P3口的字节地址为0B0H,位地址为0B0H0B7H。对P3口的操作,可以采用字节操作,也可以采用位操作。例3 ANL P3,#0DFH;0 P3.5 CLR P3.5 ;0 P3.5ORL P3,#20H;1 P3.5SETB P3.5 ;1 P3.5XRL P3,#20H ;P3.5取反CPL P3.5 ;P3.5取反第8页,共71页。5.1.3 P2口一、P2口特性P2口也有两种功能,对于内部有程序存贮器的

9、单片机(如定制的8051),P2口可以作为输入口或输出口使用,直接连接输入/输出设备;也可以作为系统扩展的地址总线口,输出高8位地址A8A15。对于内部没有程序存贮器的单片机,必须外接程序存贮器,一般情况下P2口只能作为系统扩展的高8位地址总线口,而不能作为外部设备的输入/输出口。P2.XPIND QCL Q内部总线读锁存器写锁存器读引脚VCC多路开关T地址控制内部提升第9页,共71页。1、P2口的输出驱动器上有一个多路电子开关(见图5-1(c),当输出驱动器转接至P2口锁存器的Q端时,P2口作为第一功能输入 /输出线,这时P2口的结构和P1口相似,其功能和使用方法也和P1口相同。2、当输出驱

10、动器转接至地址时,P2口作为地址总线口,引脚状态由所输出的地址确定。3、 CPU访问外部的程序存贮器时,P2口输出程序存贮器的高8位地址A8A15,该地址来源于内部的程序计数器PC的高8位;4、当CPU以16位地址指针DPTR访问外部RAM/IO的时候,P2口输出的地址来源于DPH。第10页,共71页。二、P2口操作1、对于内部有程序存贮器的单片机所构成的基本系统(如8751或定制的8051),既不扩展程序存贮器,也不扩展RAM I/O 口,这时P2口作为通用I/O口使用。例4 XRL P2 ,#1 ;P2.0取反 CPL P2.0 ;P2.0取反2、对于只扩展少量外部RAM I/O口,其地址

11、范围在0255之间,P2 口也可以作为I/O口使用。对外部RAM I/O口操作,只能使用R0或R1作地址指针,不能用DPTR作址址指针。 例5 将33H写入外部RAM的50H单元,CPU执行下面的程序段不影响P2口输出状态,因而是正确的:MOVR0 ,#50H MOV A,#33H MOVX R0,ACPU执行下面的程序段将影响P2口的输出状态,因而是错误的; MOV DPTR,#50H MOV A,#33HMOVX DTPR ,A第11页,共71页。例6 将33H写入外部RAM的8200H,下面的程序段都是正确的:(1)MOVP2,#82H MOVR0,#0 MOV A,#33H MOVX

12、R0 ,A(2)MOV P2,#82H MOV R1,#0 MOV A,#33H MOVX R1,A(3)MOV DPTR,#8200H MOV A,#33H MOVX DPTR,A3、对于既扩展程序存贮器,又扩展外部RAM/IO口的系统,P2口不能作为I/O口使用,对外部RAM/IO口操作则可以做DPTR、P2 R0、P2 R1三个16位地址指针的高8位。第12页,共71页。5.1.4 P0口一、P0口特性P0口为三态双向I/O口。对于内部有程序存贮器的单片机基本系统(如定制的8051),P0口可以作为输入/输出口使用,直接连外部的输入/输出设备;也可以作为系统扩展的地址/数据总线口。对于内

13、部没有程序存贮器的单片机(如8031),P0口只能作为地址/数据总线口使用。P0.XPIND QCL Q内部总线读锁存器写锁存器读引脚VCC多路开关T1T2地址/数据控制第13页,共71页。 1、P0口的输出驱动器中也有一个多路电子开关。输出驱动器转接至口锁动器的Q端时,P0口作为双向I/O口使用。 这时,CPU发来的控制信号为低电平,使输出驱动电路的上拉场效应管T1截止。P0口的锁存器为“1”时,输出驱动器中的两个场效应管均截止,引脚浮空;由于P0口输出电路是漏极开路的电路,必须外接10k拉高电阻才能有高电平输出。而写入“0”时,下管导通输出低电平。 2、当输出驱动器转接至地扯/数据时,P0

14、口作为地址/数据总线口使用,分时输出外部存贮器的低8位地址A0A7和传送数据D0D7。低8位地址先由地址允许锁存信号ALE锁存到外部的地址锁存器中,接着P0口便输入/输出数据信息。P0口输出的低8位地址来源于PCL、DPL、R0、R1等。第14页,共71页。二、P0口使用方法 P0口为三态双向I/O口,当用作输入口时,一般接10k左右的拉高电阻。图5-3所示的8751基本系统中,将一个开关K0接至P1.0和P0.0的电路有所差别,其原因是P1口内部具有拉高电阻,P0.0必须外接拉高电阻,才能使开关K0闭合时读P0.0引脚为0,K0断开时读P0.0引脚为1。P1.0K08751P1.0K0+5v

15、10k8751第15页,共71页。MCS-51的并行扩展总线MCS-51的P0口和P2口可以作为并行扩展总线,可以扩展64K字节程序存贮器和64K字节RAM I/O口P2口输出高8位地址A8A15,P0口为复用口,先输出低8位地址A0A7,用ALE信号的负跳变将A0A7送入地址锁存器锁存,P2口和地址锁存器输出作为地址总线,输出地址A0A15。在ALE将A0A7送入地址锁存器锁存以后,接着P0口作为数据总线使用来传送数据。在扩展系统中,P3.6、P3.7作为外部RAM/IO口的读/写选通信号WR、RD,PSEN作为外部程序存贮器的读选通信号。正是由于外部程序存贮器和RAM/IO口使用不同的读选

16、通信号,才使CPU通过16位地址总线访问64K字节程序存贮器和64K字节RAM/IO口。 P2 ALEP0WRRDPSEN地址锁存器A8A15A0A7D0D7(控制总线)(数据总线)(地址总线)MCS-51第16页,共71页。MCS-51并行口电路小结1. P0、P1、P2、P3都是并行I/O口,都可用于数据的输入/输出传送,但P0、P2口可作为并行扩展总线。P0口可作为地址/数据复用线使用,输送系统的低8位地址和8位数据,因此多路开关的一个输入端为“地址/数据”信号。而P2口仅作为高位地址线使用,不涉及数据,所以多路开关的一个输入信号为“地址”。2. P3口的口线具有第二功能,为系统提供一些

17、控制信号。因此在P3口电路中增加了第二功能控制逻辑。这是P3口与其它各不同之处。第17页,共71页。5.2 定时器各种型号的单片机,不管其功能强弱都有定时器,因为定时器对于面向控制型应用领域的单片机特别有用,定时器可以实现下列功能:(1)定时操作:产生定时中断,实现定时采样输入信号,定时扫描键盘、显示器等定时操作; (2)测量外部输入信号:对输入信号累加统计或测量输入信号的周期等参数; (3)定时输出:定时触发输出引脚的电平,使输出脉冲的宽度、占空比、周期达到预定值,其精度不受程序状态影响; (4)监视系统正常工作:一旦系统工作异常时自动复位,重新启动系统正常工作。(监视定时器watchdog

18、);第18页,共71页。5.2.2 定时器/计数器T0和T1MCS-51系列的单片机内,共有两个16位可编程的定时器/计数器,分别称为定时器/计数器T0和定时器/计数器T1。与定时器/计数器有关的特殊功能寄存器有以下几个:1、TH0、TL0为T0的16位计数器的高8位和低8位。2、TH1、TL1为T1的16位计数器的高8位和低8位。3、TMOD为T0、T1的方式寄存器。4、TCON为T0、T1的状态和控制寄存器,存放T0、T1的运行控制位和溢出中断标志位。5、中断控制寄存器IE、IP。通过对TH0、TL0和TH1、TL1的初始化编程来设置T0、T1计数器初值,通过对TCON和TMOD的编程来选

19、择T0、T1的工作方式和控制T0、T1的运行。第19页,共71页。一、方式寄存器TMOD(89H)特殊功能寄存器TMOD为T0、T1的工作方式寄存器,其格式如下: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0TMOD的低4位为T0的方式字段,高4位为T1的方式字段,它们的含义是完全相同的。 工作方式选择位M1、M0(方式 03) 定时方式和外部事件计数方式选择位C/TC/T=1为外部事件计数方式。门控位GATE GATE为1时,定时器的计数受外部引脚输入电平的控制(INT0控制T0的运行,INT1控制T1的运行);GATE为0时定时

20、器计数不受外部引脚输入电平的控制。第20页,共71页。二、控制寄存器TCON(88H) 特殊功能寄存器TCON的高4位为定时器的运行控制位和溢出标志位,低4位为外部中断的触发方式控制位和锁存外部中断请求源(见中断一节)。TCON格式如下: D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT01. 定时器T0运行控制位TR0 TR0 由软件置位和清“0”。门控位GATE为0时,T0的计数仅由TR0控制,TR0为1时允许T0计数,TR0为0时禁止T0计数;门控位GATE为1时,仅当TR0等于1且INT0(P3.2)输入为高电平时T0才计数,

21、TR0为0或INT0输入低电平时都禁止T0计数。2. 定时器T0溢出标志位TF0 当T0被允许计数以后,T0从初值开始加“1”计数,最高位产生溢出时置“1”TF0。TF0可以由程序查询和清“0”。TF0也是中断请求源,当CPU响应T0中断时由硬件清“0”TF0。第21页,共71页。3. 定时器T1运行控制位TR1TR1由软件置位和清“0”。门控位GATE为0时,T1的计数仅由TR1控制,TR1为“1”时允许T1计数,TR1为“0”时禁止T1计数;门控位GATE为1时,仅当TR1为1且INT1(P3.3)输入为高电平时T1才计数,TR1为0或INT1输入低电平时都将禁止T1计数。4. 定时器T1

22、溢出标志位TF1当T1被允许计数以后,T1从初值开始加“1”计数,最高位产生溢出时置“1”TF1。TF1可以由程序查询和清“0”,TF1也是中断请求源,当CPU响应T1中断时由硬件清“0”TF1。第22页,共71页。三、T0、T1的工作方式和计数器结构MCS-51的定时器T0有四种工作方式:方式0、方式1、方式2、方式3;定时器T1有三种工作方式:方式0、方式1、方式2。1. 方式0 当M1M0为00时定时器工作于方式0。定时器T0方式0的结构框图如下图所示。方式0为13位的计数器,由TL0的低5位和TH0的8位组成,TL0低5位计数溢出时向TH0进位,TH0计数溢出时置“1”溢出标志TF0。

23、定时时间设定:fosc12TL0(5位)TH0(8位)TF0中断控制C/T=0C/T=1T0脚(P3.4)INT0脚GATETR0第23页,共71页。例7 已知晶振频率fOSC=6MHz,若使用T0方式0产生10ms定时中断,试对T0进行初始化编程。a=0110001111000BTH0 TL0INI T0:MOV TH0,#63H MOV TL0,#18H MOV TMOD,#00H; 置T0为方式0下的定时方式 SETB TR0;允许T0计数 MOV IE,#82H;EA=1,CPU开放中断 RET;ET0=1, 允许T0中断第24页,共71页。2. 方式1方式1和方式0的差别仅仅在于计数

24、器的位数不同,方式1为16位的定时器/计数器。定时器T0工作于方式1的结构框图如下图所示。T0工作于方式1时,由TH0作为高8位,TL0作为低8位,构成一个16位计数器。若T0工作于方式1定时,计数初值为a,fosc=12MHz,则T0从计数初值加1计数到溢出的定时时间为:fosc12TL0(8位)TH0(8位)TF0中断控制C/T=0C/T=1T0脚(P3.4)INT0脚GATETR0第25页,共71页。与定时器有关的寄存器TCON状态和控制寄存器中断允许寄存器IED7D6D5D4D3D2D1D0EA-ESET1EX1ET0EX0中断优先级控制器IPD7D6D5D4D3D2D1D0-PSPT

25、1PX1PT0PX0D7D6D5D4D3D2D1D0TF1TR1TF0TR0 IE1IT1IE0IT0D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD方式控制寄存器第26页,共71页。应用举例:例8 设fosc=12MHz,T0工作于方式1,产生50ms定时中断,TF0为高级中断源。试编写主程序中的初始化程序和中断服务程序,使P1.0产生周期为1秒的方波。MAIN:MOV SP,#6FH ;栈指针初始化 MOV TH0,#3CH ;T0初始化 MOV TL0,#0B0H MOV TMOD,#1 ;T0工作于方式1,定时 MOV IP,#2 ;PT0=1, T

26、0中断定义为高 ;优先级中断 MOV IE,#82H ;中断初始化(EA=1,ET0=1) SETB TR0 ;允许T0中断 MOV 30H ,#0AH ;工作单元初始化每10次 ;中断(0.5秒)P1.0求反, ;用30H作中断次数计数器单元。 AJMP $ a =3CB0H第27页,共71页。T0中断服务程序:PTF0: ORL TL0 ,#0B0H;恢复T0初值 MOV TH0,#3CH DJNE 30H,PTF0R;判断中断次数=10否? MOV 30H,#0AH;恢复中断次数存贮单元值 CPL P1.0 ;P1.0求反 PTF0R :RETI说明:定时器T0中断入口地址(55页)为:

27、000BH 000B:LJMP PTF0R第28页,共71页。3. 方式2T0工作于方式0和方式1时的最大特点是计数溢出后,计数器全为“0”。因此循环定时或循环计数应用时就存在反复设置计数初值的问题。初值a通常是由中断服务程序恢复的,而CPU响应T0溢出中断的时间随程序状态不同而不同(CPU所执行指令不同或者在执行其它中断程序都影响CPU响应中断的时间),CPU响应T0溢出中断之前T0从0开始继续计数,CPU响应T0溢出中断时又从初值开始计数,这样使定时产生误差。M1M0=10时,T0工作于方式2,方式2为自动恢复初值的8位计数器,TL0作为作为8位计数器,TH0作为计数初值寄存器,当TL0计

28、数溢出时,一方面置“1”溢出标志TF0,向CPU请求中断,同时将TH0内容送到TL0,使TL0从初值开始重新加1计数。因此,T0工作于方式2定时,定时精度比较高,但定时时间小。第29页,共71页。T=定时时间设定:工作原理:fosc12TL0(8位)TH0(8位)TF0中断控制C/T=0C/T=1T0脚(P3.4)INT0脚GATETR0第30页,共71页。4. 方式31)工作方式3下的定时器/计数器T0 方式3只适用于T0,若T1被设置为工作方式3时,则使T1停止工作。T0被分为两个独立的8位计数器TL0和TH0。TL0使用T0的所有状态控制位GATE、TR0、INT0(P3.2)、T0(P

29、3.4)、TF0等,TL0即可以作为8位定时器使用,又可以作为外部事件计数器使用。TL0计数溢出时置“1”溢出标志TF0,TL0计数初值必须由软件每次设定。其功能和操作与方式0或方式1完全相同,而且逻辑结构也极其类似。 TH0只能作为一个8位定时器使用。而且由于T0的所有状态控制位已被TL0独占,因此TH0只好借用T1的状态控制位TR1、TF1。即当TR1为1时,允许TH0定时计数,当TH0计数溢出时置“1”溢出标志TF1。 由于TL0 既能作定时器使用也能作计数器使用,而TH0 只能作为定时器使用却不能作为计数器使用,因此在工作方式3下, T0 可以构成两个定时器或一个定时器一个计数器。第3

30、1页,共71页。控制TH0(8位)TF1中断TR11/12fOSCTL0(8位)TF0中断控制C/T=0C/T=1T0脚(P3.4)INT0脚GATETR01/12fOSCT=定时时间设定:工作原理:第32页,共71页。2)工作方式3下的定时器/计数器T1如果T0已工作在方式3,则T1只能工作在方式0、方式1或方式2下,因为它的运行控制位TR1及计数溢出标志位TF1已被T0借用。在这种情况下, T1通常是作为串行口的波特率发生器使用,以确定串行通信的速率。因为已没有计数溢出标志位TF1可供使用,因此只能把计数溢出直接送给串行口。如要停止T1工作,只需送入一个把T1设置为方式3的方式控制字就可以

31、了。因为T1不能在方式3下使用,如果硬把它设置为方式3,就停止工作。第33页,共71页。5.3 串行接口中央处理器CPU和外界的信息交换(或数据传送)称为通信,通常有并行和串行两种通信方式,数据的各位同时传送的称为并行通信,数据一位一位串行地顺序传送的称为串行通信。并行通信的特点是:各数据位同时传送,传送速度快、效率高。但并行数据传送有多少数据位就需多少根数据线,因此传送成本高。并行数据传送的距离通常小于30米,在计算机内部的数据传送都是并行的。并行通信是通过并行接口来实现的,串行通信的特点是:数据传送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢。计算机与外界的数据传送大多数是串行

32、的,其传送的距离可以从几米到几千公里。串行通信是通过串行口来实现的,MCS-51有一个全双工(数据的传送是双向的,可以同时发送和接收)的异步串行通信接口可以实现串行数据通信。第34页,共71页。 串行通信有两种基本方式:异步通信和同步通信方式。一、异步通信方式是以字符(或字节)为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,通过传输线被接收设备一帧一帧地接收。 典型的异步通信数据格式如下: 停 起 止 始 8位数据 位 位 D0 D1 D2 D3 D4 D5 D6 D7 0/1字符的前面有一个起始位(0),后面有一个停止位(1),这是一种起止式的通信方式,字符之间没有固定的间隔长度。优点

33、:数据传送可靠性高缺点:通信效率低奇偶校验 第35页,共71页。对异步通信数据格式作如下说明:1. 字符帧:字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。如上图。2. 起始位:位于字符帧开头,只占一位,始终为逻辑“0”,用于向接收设备表示发送端开始发送一帧数据。3. 数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前高位在后。若所传数据为ASC字符,则常取7位。4. 奇偶校验位:位于数据位之后,仅占一位。用于对字符传送作正确性检查,因此,奇偶校验位是可选择的,采用奇校验还是偶校验,由用户根据需要决定。5. 停止位:位于字符帧末尾,为逻辑“1”高电平,

34、通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为下一帧字符作准备。 在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可以无空闲位,也可以有若干空闲位,这由用户根据需要决定。这种方式的优点是数据传送的可靠性较高,能及时发现错误,缺点是通信效率较低。 第36页,共71页。二、同步通信说明:1、是按数据块传送的,把传送的字符顺序地连接起来,组成数据块在数据块前面加上特殊的同步字符(有12个),作为数据块的起始符号,在数据块的后面加上校验字符,用于检验通信中的错误。2、接收端不断对传输线采样,并把采样到的字符和双方约定的同步字符比较,只有比较成功

35、后才会把后面接收到的字符加以存储3、在同步通信中字符之间没有间隔,通信效率高。串行通信中,每秒传送的数据位数称为波特率。同步字符1 同步字符2 n个数据字节 校验字节1 校验字节2典型的同步通信数据格式第37页,共71页。5.3.1 串行接口的组成和特性 MCS-51的串行口是一个全双工的异步串行通信接口,可以同时发送和接收数据。 串行口的内部有数据接收缓冲器和数据发送缓冲器。数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出,这两个数据缓冲器都用符号SBUF来表示。 CPU对特殊功能寄存器SBUF执行写操作,就是将数据写入数据发送缓冲器;对SBUF执行读操作,就是读出数据接收缓冲

36、器的内容。与串行通信有关的特殊功能寄存器共有4个:1、特殊功能寄存器SCON:存放串行口的控制和状态信息。2、特殊功能寄存器PCON:最高位SMOD为串行口波特率的倍率控制位。3、中断允许寄存器IE:D4位(ES)为串行口中断允许位。4、中断优先级控制寄存器IP:D4位(PS)为串行口优先级控制位。第38页,共71页。 一、串行口控制寄存器SCON串行口控制寄存器SCON是一个特殊功能寄存器,地址为98H,具有位寻址功能。SCON的格式如下:D7 D6 D5 D4 D3 D2 D1 D0SM0 SM1 SM2 REN TB8 RB8 TI RI各位功能说明如下:1. SM0、SM1:串行口的工

37、作方式选择位。2. SM2:多机通信控制位。 对于于方式2和方式3,如SM2置为1,则只有接收到的第9位数据(RB8)为“1”,才激活接收中断标志位RI;而当SM2置为0时,则不论第9位数据为“0”还是为“1”,都将前8位数据装入SBUF中,并置位RI产生中断请求。对于方式1,如SM2=1,则只有接收到有效的停止位才会激活RI。对于方式0,SM2应该为0。3. REN:允许串行接收位。REN位用于对串行数据的接收进行控制。由软件置位1以允许接收。由软件清“0”来禁止接收。第39页,共71页。 4. TB8:发送的第9个数据位 对于方式2和方式3, TB8的内容是要发送的第9位数据,需要时其值由

38、用户通过软件置位或复位。5. RB8:接收第9个数据位 对于方式2和方式3, RB8存放接收到的第9位数据。对于方式1,如SM2=0,RB8是接收到的停止位。对于方式0,不使用RB8。6. TI:发送中断标志。在方式0下,串行发送完第8位数据后,该位由硬件置位。在其它方式下,串行发送停止位的开始时,由硬件置位。TI必须由软件清“0”。这就是说: TI在发送前必须由软件复位,发送完一帧数据后由硬件置位。 TI=1,表示帧发送结束,其状态既可供软件查询使用,也可请求中断。7. RI:接收中断标志。在方式0下,接收完第8位数据后,该位由硬件置位。在其它方式接收到停止位中间时置位,必须由软件清“0”第

39、40页,共71页。二、特殊功能寄存器PCONPCON的最高位SMOD是串行口波特率系数控制位,当SMOD为1时使波特率加倍。PCON的其它位为掉电方式控制位(仅对CHMOS型单片机80C51等有效,) SMOD D7 D6 D0第41页,共71页。5.3.2 串行接口的工作方式MCS-51串行接口具有四种工作方式,它们是由SCON中的SM0,SM1这两位定义的。下面我们从应用的角度,重点讨论各种工作方式的功能特性和工作原理。一、方式0 方式0是扩展移位寄存器的工作方式,以串行扩展I/O接口。输出时:将发送数据缓冲器中的内容串行地移到外部的移位寄存器。输入时:将外部移位寄存器的内容串行地移入内部

40、的输入移位寄存器,然后写入内部的接收数据缓冲器。 在以方式0工作时,数据由RXD端串行地输入/输出,TXD端输出移位脉冲,使外部的移位寄存器移位。波特率固定为振荡器频率的十二分之一。第42页,共71页。1. 方式0输出 方式0输出时,串行口上外接74LS164(串行输入并行输出移位寄存器)的接口逻辑如图所示。在TXD端输出的移位脉冲控制下,RXD端输出的数据将被逐位移入74LS164。(经过8个机器周期)88031D1D2CLK74LS1643 4 5 6 10 11 12 13D7 D0+5VRXDTXD80518751121497第43页,共71页。例 图5-25中,串行口外接两个74LS

41、164,74LS164的输出接指示灯L0L15,欲使L0L3、L8、L10、L12、L14灯亮,其余灯暗。LSUBO:MOV SBUF,#0FH JNB TI, CLR TI MOV SBUF,#055H JNB TI, CLR TI RET+5VRXDTXD12CLK74LS1643 4 5 6 10 11 12 13CRVccVss12CLK74LS1643 4 5 6 10 11 12 13CRVccVssL7 L6 L5 L4 L3 L2 L1 L0L15 L9 L80000SCONIE11IP1第44页,共71页。2. 方式0输入 方式0输入时,RXD作为串行数据输入线,TXD作为移

42、位脉冲输出线,串行口与外接的并行输入串行输出的移位寄存器74LS166的接口逻辑如下 在REN=1,RI=0 时启动串行口接收,TXD端输出的移位脉冲频率为fosc/12,若fosc=12MHz,移位速率为 1 s/位,经过8次移位,外部移位寄存器内容移入内部移位寄存器,并写入SBUF,置位RI,停止移位,完成一个字节的输入,CPU读SBUF的内容便得到输入结果。 当检测到外部移位寄存器内容再次有效时(设备将数据打入外部移位寄存器,打入信号向CPU请求中断),清 “0” RI,启动串行口接收下一个数据。803174LS1663 4 5 6 10 11 12 13RXDTXD80518751IN

43、T0137156外部数据打入信号第45页,共71页。二、方式1 串行口定义为方式1时,它是一个8位异步串行通信口,TXD为数据输出线,RXD为数据输入线。传送一帧信息的数据格式如下所示。一帧为10位:1位起始位,8位数据位(先低位后高位),1位停止位。 D0 D1 D2 D3 D4 D5 D6 D7起始位停止位1. 方式1输出 CPU向串行口数据发送缓冲器SBUF写入一个数据,然后发送电路就自动在8位发送字符前后分别添加1位起始位“0”和1位停止位“1”,启动串行口发送,在串行口内部一个十六分频计数器的同步移位脉冲控制下,在TXD端输出一帧信息,先发送起始位0,接着从低位开始依次输出8位数据,

44、最后输出停止位1,并使发送中断标志TI置“1” ,串行口输出完一个字符后停止工作。CPU执行程序判断TI=1后,必须由程序清“0” TI ,再向SBUF写入数据,启动串行口发送下一个字符。第46页,共71页。2. 方式1输入REN置“1”以后,就允许接收器接收。接收器以所选波特率的16倍的速率采样RXD端的电平。当检测到RXD端输入电平发生负跳变(从“1”到“0”)时,复位内部的十六分频计数器。如果在第1位时间接收到的值(起始位)不是0,则起始位无效,复位接收电路,重新搜索RXD端上的负跳变。如果起始位有效,则开始接收本帧其余部分的信息。接收到停止位为1时,将接收到的8位数据装入接收数据缓冲器

45、SBUF,并把停止位送入RB8中,置位RI,表示串行口接收到有效的一帧信息,向CPU请求中断。(若程序清RI位后)接着串行口输入控制电路重新搜索RXD端上负跳变,接收下一个数据。第47页,共71页。三、方式2和方式3串行口定义为方式2或方式3时,它是一个9位异步串行通信接口,TXD为数据发送端,RXD为数据接收端。方式2和方式3的通信过程完全相同,所不同的仅在于波特率。方式2的波特率固定为振荡器频率的1/64或1/32,而方式3的波特率由定时器T1或T2(8052)的溢出率所确定,故方式3的波特率是可调的。 在方式2和方式3中,一帧信息为11位:1位起始,8位数据位(先低位后高位),1位附加的

46、第9位数据(发送时为SCON中的TB8,接收时第9位数据为SCON中的RB8),1位停止位,数据的格式如下图。D0 D1 D2 D3 D4 D5 D6 D7 D8 起始位停止位第48页,共71页。1. 方式2和方式3输出方式2和方式3的发送过程类似于方式1输出,所不同的是:方式2和方式3 有9位有效数据位。发送时,CPU除要把发送字符写入数据发送缓冲器“SBUF”外,还要把第9数据位预先写入SCON的TB8中。第9数据位可由用户安排,可以是奇偶校验位,也可以是其他控制位。第9数据位的写入可以用如下指令中的一条来完成: SETB TB8 CLR TB8第9数据位的值写入TB8后,CPU向数据发送

47、缓冲器“SBUF”写入发送数据就启动串行口发送。先发送起始位0,接着从低位开始依次发送SBUF中的8位数据,再发送SCON中TB8,最后发送停止位,置“1”发送中断标志TI,CPU判断TI=1以后若由程序清“0”TI,可以再向TB8和SBUF写入新的数据,再次启动串行口发送。第49页,共71页。方式2和方式3输入 方式2和方式3的接收过程也和方式1输入类似,所不同的是:方式1时RB8中存放的是停止位,方式2或方式3时RB8中存放的是第9数据位。 当REN置“1”以后,接收器就以所选波特率的16倍的速率采样RXD端的输入电平。当检测到RXD上输入电平发生负跳变时,复位内部的十六分频计数器。(计数

48、器的16个状态把一位数据的时间分成16等分,在一位中心,即7、8、9这三个计数状态,位检测器采样RXD的输入电平,接收的值是三次采样中至少是两次相同的值。)如果在第1位时间接收到的值不是0,则起始位无效,复位接收电路,重新搜索RXD上 的负跳变。如果起始位有效,则开始接收本帧其余位信息。REN置“1”以后,就允许接收器接收。在此前提下,串行口采样RXD端,当采样到从“1”向“0”的状态跳变时,就认定是接收到起始位。随后在移位脉冲的控制下,先从低位开始接收8位数据,再接收第9位数据,在RI=0、SM2=0 或 RI=0、SM2=1、接收到的第9位数据为1时,接收的数据装入SBUF和RB8,置位R

49、I;如果条件不满足,把数据丢失,并不置位RI。一位时间以后, 又开始搜索RXD上的负跳变,接收下一个数据。 第50页,共71页。串行口工作方式总结:SM0SM1方式功能说明001101010123扩展移位寄存器方式(用于I/O口扩展),移位速率为fosc/128位UART,波特率可变(T1溢率/n)9位UART,波特率为fosc/64或fosc/329位UART,波特率可变(T1溢率/n)第51页,共71页。5.3.3 波特率一、方式0波特率 串行口方式0的波特率由振荡器的频率所确定:方式0 波特率 = 振荡器频率/12二、方式2波特率 串行口方式2的波特率由振荡器的频率和SMOD(PCON.

50、7)所确定:方式2 波特率 = 2SMOD 振荡器频率/64 SMOD为0时,波特率等于振荡器频率的六十四分之一; SMOD为1时,波特率等于振荡器频率的三十二分之一。三、方式1和方式3的波特率 串行口方式1和方式3的波特率由定时器T1或T2(8052等单片机)的溢出率和SMOD所确定。T1和T2是可编程的,可以选择的波特率范围比较大,因此串行口方式1和方式3是最常用的工作方式。 第52页,共71页。用定时器T1产生波特率 当定时器T1作为串行口的波特率发生器时,串行口方式1和方式3的波特率由下式确定: 方式1和方式3 波特率 = 2SMOD (T1溢出率)/32 SMOD为0时,波特率等于T

51、1溢出率的三十二分之一;SMOD为1时,波特率等于T1溢出率的十六分之一。说明: 定时器T1作波特率发生器时,应禁止T1中断。通常T1工作于定时方式(C/T=0),计数脉冲为振荡器的十二分频信号。T1的溢出率又和它的工作方式有关,一般选方式2定时,此时串行口方式1和方式3波特率的计算公式为: 2 SMOD 振荡器频率/32 12(256-(TH1) 2SMOD 第53页,共71页。表5-7列出了最常用的波特率以及相应的振荡器频率、T1工作方式和计数初值。表5-7常用波特率波特率Fosc(MHZ)SMOD定时器C/T方式重新装入值方式0 最大:1M 12XXX X方式2 最大:375K 121X

52、X X方式1、3:62.5K 12102 FFH 19.2K 11.0592102 FDH 9.6K 11.0592002 FDH 4.8K 11.0592002 FAH 2.4K 11.0592002 F4H 1.2K 11.0592002 E8H 137.6 11.986002 1DH 110 6002 72H 110 12001 FEEBH第54页,共71页。5.3.4 多机通信原理多机通信是指两台以上计算机之间的数据传输,主从式多机通信是多机通信系统中最简单的一种,应用也最为广泛。现以它为例加以讨论。工作原理: 串行口控制寄存器SCON中的SM2为多机通信控制位。串行口以方式2或方式3

53、接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;如果接收到的第9位数据RB8为0,则不产生中断标志RI,信息丢失,CPU不作任何处理。当SM2为0时,则接收到一个数据后,不管第9位数据RB8是1还是0,都将数据装入接收缓冲器SBUF,置位中断标志RI,请求CPU处理,应用这个特性,便可以实现MCS-51的主从式多机通信。第55页,共71页。工作原理:(1) 主机的SM2=0;所有从机的SM2=1,以便接收主机发来的地址。(2) 主机给从机发送地址时,第9数据位上发送1,以指示从机接收这个地址。 (3) 所有从机在SM2=1、

54、RB8=1和RI=0时,接收主机发来的从机地址,进入相应中断服务程序,并和本机地址比较以确定是否为被寻址从机。(4) 未被寻址从机保持SM2=1,并退出各自中断服务程序。被寻址从机通过指令清零SM2,以正常接收主机随之而来发送的数据或命令(每帖数据第9位均为0),并作相应处理。同时向主机发回接收到的从机地址,供主机核对。 (5) 完成主机和被寻址从机之间的数据通信,被寻址从机在通信完成后重新使SM2=1,并退出中断服务程序,等待下一次通信。TXD RXD80310#从机TXD RXD80310#从机TXD RXD 8031主机80310#从机TXD RXDMCS-51多机通信系统结构框图第56

55、页,共71页。5.3.5 串行口的应用和编程一、串行口的应用1、在同一印板上两个单片机之间的TTL电平串行通信 XTAL2 TXD 8031 RXD XTAL1 XTAL2RXD 8031TXD XTAL11M74HC474HC0411.0592MHz30p30p2、单片机和PC机的串行接口连接 TXD8031 RXD VSSRXDTXD PC机GND电 平转换器第57页,共71页。RS-232电平与TTL电平的转换1、分立元件电平转换电路TTL(B)TTL(C)4.7K4.7K4.7K4.7KT1T2+5V+5V1.8K10uRS-232C(A)RS-232C(D)第58页,共71页。2、集成电路电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论