《第6章 串行口与通信.ppt》由会员分享,可在线阅读,更多相关《第6章 串行口与通信.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本章学习目标本章学习目标:了解并行通信与串行通信的含义了解并行通信与串行通信的含义理解波特率的概念,学会波特率的计算方法理解波特率的概念,学会波特率的计算方法能按要求正确设置特殊功能寄存器能按要求正确设置特殊功能寄存器SCON和和PCON的的SMOD位位能区分串行口的能区分串行口的4种工作方式,种工作方式,熟悉方式熟悉方式0和方式和方式1程序程序的编制方法的编制方法知道知道RS-232C、RS-422A和和RS485 基本性能基本性能理解双机通信和多机通信的基本过程理解双机通信和多机通信的基本过程能读懂教材中的控制实例,学会编写同等难度的控制程能读懂教材中的控制实例,学会编写同等难度的控制程序
2、序第第6章章 通信功能的实现通信功能的实现6.1串行通信的基础知识 在实际应用中,在实际应用中,8051单片机经常要与外设进行信息交换;单片机经常要与外设进行信息交换;单片机与单片机之间或单片机与计算机之间往往也要交换信息,单片机与单片机之间或单片机与计算机之间往往也要交换信息,这些信息交换都可以称为这些信息交换都可以称为通信通信。并行通信:并行通信:并行通信:并行通信:数据的各位同时送出。占用数据的各位同时送出。占用数据的各位同时送出。占用数据的各位同时送出。占用I/OI/O多,速度快。多,速度快。多,速度快。多,速度快。串行通信:串行通信:串行通信:串行通信:数据的各位逐位送出。线路简单,
3、速度慢。数据的各位逐位送出。线路简单,速度慢。数据的各位逐位送出。线路简单,速度慢。数据的各位逐位送出。线路简单,速度慢。数据通信的传输方式数据通信的传输方式数据通信的传输方式数据通信的传输方式:并行通信和串行通信并行通信和串行通信并行通信和串行通信并行通信和串行通信传送数据传送数据1101 0010B时并行通信和串行通信的示意图。时并行通信和串行通信的示意图。1.串行通信的制式串行通信的制式按照信息传送的方向,串行通信可分为按照信息传送的方向,串行通信可分为3种制式。种制式。1单工制式单工制式2半双工制式半双工制式3全双工制式全双工制式 2.串行通信的串行通信的分类分类串行通信有两种基本的通
4、信方式:串行通信有两种基本的通信方式:同步通信与异步通信。同步通信与异步通信。1.异步通信异步通信(Asynchronous Communication)在异步通信中,数据通常是以字符在异步通信中,数据通常是以字符(或字节或字节)为单位组成为单位组成字符帧传送的。字符帧由发送端逐帧发送,接收端逐帧接收。字符帧传送的。字符帧由发送端逐帧发送,接收端逐帧接收。发送端和接收端由各自的时钟来控制。这两个时钟源可以彼发送端和接收端由各自的时钟来控制。这两个时钟源可以彼此独立、互不同步。此独立、互不同步。在帧格式中,一个字符由在帧格式中,一个字符由4个部分组成:起始位、二进个部分组成:起始位、二进制数据位
5、、奇偶校验位和停止位。下图给出了典型的异步帧制数据位、奇偶校验位和停止位。下图给出了典型的异步帧格式。格式。2.串行通信的方式串行通信的方式2同步通信(同步通信(Synchronous Communication)同步通信是一种连续的串行传送数据的通信方同步通信是一种连续的串行传送数据的通信方式,一次通信只传输一帧信息,该信息帧由同步字式,一次通信只传输一帧信息,该信息帧由同步字符、数据字符和校验字符符、数据字符和校验字符3部分组成。在同步通信部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可由用中,同步字符可以采用统一的标准格式,也可由用户约定。户约定。同步串行通信进行数据传送时,
6、发送和接收同步串行通信进行数据传送时,发送和接收双方要保持完全的同步,因此要求接收和发送必须双方要保持完全的同步,因此要求接收和发送必须使用同一时钟。使用同一时钟。3.串行通信的传输速率串行通信的传输速率 所谓传输速率就是指每秒传输二进制数所谓传输速率就是指每秒传输二进制数码的位数,传输速率也称波特率(码的位数,传输速率也称波特率(bps)。)。如果数据传送的速率是如果数据传送的速率是120帧帧/秒秒,每个,每个帧包含帧包含10位位,则波特率为,则波特率为 10120=1200 bps,于是每位传送的时间,于是每位传送的时间 T=1/1200=0.833ms 标准波特率系列为标准波特率系列为1
7、10、300、600、1200、1800、2400、4800、9600和和19200bps。通常,异步通信的波特率为通常,异步通信的波特率为509600bps.8051 8051单片机常与其它单片机常与其它5151单片机或单片机或PCPC机进行串行通机进行串行通信。信。在串行通信时,要求双方都采用一个标准接口,在串行通信时,要求双方都采用一个标准接口,使不同设备可以方便地联系起来进行通信。为了提高使不同设备可以方便地联系起来进行通信。为了提高串行通信的可靠性,延长通信距离,工程设计人员一串行通信的可靠性,延长通信距离,工程设计人员一般采用标准串行接口,如般采用标准串行接口,如RS-232CRS
8、-232C、RS-422ARS-422A和和RS-485RS-485等。这三种接口最初都是由美国电子工业协会等。这三种接口最初都是由美国电子工业协会(EIAEIA)制订并发布的。)制订并发布的。6 6.1.2 1.2 串行通信的常用标准接口串行通信的常用标准接口1 1.RS-232CRS-232C接口接口 RS-232C(又称(又称 EIA RS-232-C)是目前)是目前PC机与通信工机与通信工业中应用最广泛的一种串行接口。图业中应用最广泛的一种串行接口。图5-7是利用是利用RS-232C通过通过电话网实现远程通信的示意图。电话网实现远程通信的示意图。图图6-7 RS-232C通过电话网实现
9、远程通信的示意图通过电话网实现远程通信的示意图1 1接口信号接口信号 RS-232C是美国电子工业协会(是美国电子工业协会(EIA)在)在1969年推出的。年推出的。全名是全名是“数据终端设备数据终端设备DTE(如计算机和各种终端机)和数据(如计算机和各种终端机)和数据通讯设备通讯设备DCE(如调制解调器(如调制解调器MODEM)之间串行二进制数据)之间串行二进制数据交换接口技术标准交换接口技术标准”。它适合于数据传输速率在。它适合于数据传输速率在020 000bps范围内的通信。范围内的通信。图图6-8 RS-232C串口结构串口结构 目前较为常用的目前较为常用的RS-232C有有9针串口(
10、针串口(DB9)和)和25针串针串口(口(DB25),结构分别如图),结构分别如图6-8所示。在保证通信准确性所示。在保证通信准确性的前提下,如果通信距离较近的前提下,如果通信距离较近(小于小于12米米),可以用电缆线,可以用电缆线直接连接,图直接连接,图6-9是这种连接方式的示意图;若距离较远,是这种连接方式的示意图;若距离较远,需附加调制解调器(需附加调制解调器(MODEM),见图),见图6-7。图图6-9 近程通信示意图近程通信示意图 实际上实际上DB25中有许多引脚很少使用,在计算机与终端通讯中有许多引脚很少使用,在计算机与终端通讯中一般只使用中一般只使用3-9条引线。最常用的条引线。
11、最常用的9条引线的信号内容见表条引线的信号内容见表6-2所示。所示。最为简单且常用的是三线制接法,即地、接收数据和最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。发送数据三脚相连。传输线采用屏蔽双绞线。如图传输线采用屏蔽双绞线。如图6-10 所示。所示。图图6-10 RS-232C串口结构串口结构表表6-2 DB96-2 DB9和和DB25DB25的常用信号脚说明的常用信号脚说明 2.2.逻辑电平逻辑电平 RS-232C是早期为促进公用电话网络进行数据通是早期为促进公用电话网络进行数据通信而制定的标准。它采用负逻辑,即信而制定的标准。它采用负逻辑,即-5V-15V规定为规定为“
12、1”;+5V+15V规定为规定为“0”;-5V+5V为过渡区,不做定义。为过渡区,不做定义。3 3电平转换芯片与接口电路电平转换芯片与接口电路 RS232C信号的电平和单片机串口信号的电平不一致,信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。常用芯片有必须进行二者之间的电平转换。常用芯片有MC1488(TTL转换成转换成RS232C信号)、信号)、MC1489(RS232C信号转换成信号转换成TTL)等。另一种常用的集成电平转换芯片)等。另一种常用的集成电平转换芯片MAX232可以实可以实现现RS232CTTL电平的双向转换,它只使用单一的电平的双向转换,它只使用单一的5
13、V电源供电,配接电源供电,配接4个个1F电解电容即可完成电解电容即可完成RS232电平与电平与TTL电平之间的转换。其原理图如图电平之间的转换。其原理图如图6-11所示。转换完毕的所示。转换完毕的串口信号串口信号TXD、RXD直接和直接和8051的串行口连接。的串行口连接。图图6 6-11 -11 电平匹配原理图电平匹配原理图注:注:1.为提高电路抗干扰能力,为提高电路抗干扰能力,C1C4要用钽电容要用钽电容1.0F/16V,且尽,且尽 量靠量靠近近MAX232;2.MAX232对噪声很敏感,在对噪声很敏感,在VCC与与GND之间加之间加C5=0.1F,起去耦作,起去耦作用用 1 1性能特点性
14、能特点 RS-485RS-485以良好的抗噪声干扰性,长距离传输特性和多站能力等优点成为以良好的抗噪声干扰性,长距离传输特性和多站能力等优点成为首选的串行接口。表现为:首选的串行接口。表现为:接口信号电平比接口信号电平比RS-232CRS-232C低(低(1.5V1.5V6V6V),不易损坏接口电路芯片,),不易损坏接口电路芯片,且该电平与且该电平与TTLTTL电平兼容,可方便与电平兼容,可方便与TTL TTL 电路连接。电路连接。RS-485 RS-485传输数据的速度较快,最高速率达到传输数据的速度较快,最高速率达到10Mbps 10Mbps。采用平衡驱动器和差分接收器的组合,抗共模干扰能
15、力增强,即抗噪声采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性能好。干扰性能好。最大传输距离标准值为最大传输距离标准值为40004000英尺,折合英尺,折合12191219米,实际上可达米,实际上可达 30003000米。米。RS-485 RS-485接口允许在总线上同时连接接口允许在总线上同时连接3232个发送器和个发送器和3232个接收器,即具有多个接收器,即具有多站能力,这样用户可以利用单一的站能力,这样用户可以利用单一的RS-485RS-485接口方便地建立起设备网络。接口方便地建立起设备网络。因因RS-485RS-485接口组成的半双工网络一般只需二根连线,所以
16、接口组成的半双工网络一般只需二根连线,所以RS-485RS-485接口均接口均采用屏蔽双绞线传输。采用屏蔽双绞线传输。RS-485RS-485接口连接器采用接口连接器采用DB9DB9的的9 9芯插头座。与智能终端芯插头座。与智能终端RS-485RS-485接口采用接口采用DB9DB9(孔);与键盘连接的键盘接口(孔);与键盘连接的键盘接口RS-485RS-485采用采用DB9DB9(针)。(针)。2 RS-4852 RS-485接口接口2 2、与其它标准接口的对照、与其它标准接口的对照表表6-3 列出了列出了RS-485与其它标准接口的对照表与其它标准接口的对照表接口标准RS-232CRS-4
17、22ARS-485功能双向,全双工双向,全双工双向,半双工工作方式单端差分差分逻辑“0”电平3V15V2V6V1.5V6V逻辑“1”电平-3V-15V-2V-6V-1.5V-6V节点数1收、1发1发10收1发32收最大传输距离15米1219米1219米最大传输速率20Kb/S10Mb/s10Mb/s驱动器加载输出电压5V15V2V1.5V接收器输入电阻()3K7K4K(最小)12K抗干扰能力弱强强6.2串行口的基本结构和工作方式串行口的基本结构和工作方式 6.2.1串行口的串行口的结构和工作原理结构和工作原理 全双工的串行通信口,可同时接收和发送。接收和发送缓冲器SBUF在物理上共用一个地址9
18、9H。发送缓冲器SBUF只能写入不能读出。接收缓冲器SBUF只能读出不能写入。1.MCS串行口结构.串行口的工作原理 串行端口有两个在物理上独立的接收寄存器SBUF和发送寄存器SBUF,一个用于存放接收的数据,另一个用于存放待发送的数据。两个寄存器共用一个地址99H,为发送和接收所共用。发送时,只写不读;接收时,只读不写。在一定的条件下,向SBUF写入数据就启发了发送过程;读SBUF就完成了接收过程。串行通信的波特率可以程控设定。在不同工作方式下,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便、灵活。串行口的接收和发送是在定时电路和串行口控制寄存器的控制下工作,每当接收到
19、一帧数据或发送完一帧信息时内部接收和发送标志位RI或TI被置位1,从而产生中断请求。串行口的发送和接收都是通过特殊功能寄存器SBUF进行读或写的,当向SBUF发写命令时(执行 MOV SBUF A指令),转载发送缓冲器并开始由TXD引脚向外发送一帧数据,发送完毕置位发送中断标志TI。在串行口接收中断标志RI(SCON.0)=0条件下,置允许接收位REN(SCON.4)=1就会启动接收,一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1.当执行读SBUF的命令时(执行MOV A SBUF指令),由接收缓冲器SBUF取出信息并通过内部总线送CPU。6.2.2串行口的四种工作方式串行口的
20、四种工作方式 80C5180C51单片机串行口有单片机串行口有4 4种工作方式,用特殊功能寄种工作方式,用特殊功能寄存器存器SCONSCON中的中的SM0SM0、SM1SM1两位进行设定,见表两位进行设定,见表5-15-1。(1)特点)特点 用于串行用于串行I/OI/O口扩展,有固定的波特率,为口扩展,有固定的波特率,为fOSC/12/12。同步发送同步发送/接收功能,由接收功能,由TXD提供移位脉冲,提供移位脉冲,RXD用作数据输入用作数据输入/输输出通道。出通道。发送接收发送接收8 8位数据,低位在前,高位在后。位数据,低位在前,高位在后。(2)发送操作)发送操作 由指令由指令MOV SB
21、UF,A 启动发送操作,发送时由启动发送操作,发送时由TXD输出移位输出移位脉冲,脉冲,RXD发送发送SBUF中的数据。发送完中的数据。发送完8位数据后,位数据后,TI自动置自动置1,请,请求中断。要继续发送时,求中断。要继续发送时,TI必须由指令清必须由指令清0(CLR TI)。)。(3)接收操作)接收操作 在在RI=0的前提下,用指令置的前提下,用指令置REN=1,可以启动一帧数据的接收。,可以启动一帧数据的接收。同样由同样由TXD输出移位脉冲,由输出移位脉冲,由RXD接收串行数据。接收完一帧接收串行数据。接收完一帧RI自动自动置置1,请求中断。想继续接收时要用指令清除,请求中断。想继续接
22、收时要用指令清除RI。1 1方式方式0 02 2方式方式1 1(1)特点)特点 8 8位异步串行通信位异步串行通信UART接口。接口。帧结构为帧结构为1010位,包括起始位位,包括起始位0 0,8 8位数据位,位数据位,1 1位停止位。位停止位。波特率由软件设置,由波特率由软件设置,由T1 的溢出率决定。的溢出率决定。(2)发送操作)发送操作 由指令由指令MOV SBUF,A 启动启动A中的数据从中的数据从TXD端异步发送。发端异步发送。发送完一帧数据后,送完一帧数据后,TI自动置自动置1,请求中断。要继续发送时,请求中断。要继续发送时,TI必须由指必须由指令清令清0(CLR TI)。)。(3
23、)接收操作)接收操作 在在RI=0的前提下,用指令置的前提下,用指令置REN=1,启动一帧数据的接收。串,启动一帧数据的接收。串行口采样行口采样RXD,当采样到,当采样到1至至0的跳变时,表明接到串行数据的起始位,的跳变时,表明接到串行数据的起始位,开始接收一帧数据,直到停止位到来时,把停止位送到开始接收一帧数据,直到停止位到来时,把停止位送到RB8中,此时中,此时RI自动置自动置1,请求中断并通知,请求中断并通知CPU从从SBUF中取走已接收到的数据中取走已接收到的数据。想继续接收时要用指令清除想继续接收时要用指令清除RI。方式方式2 2和方式和方式3 3具有多机通信功能,两种方式具有多机通
24、信功能,两种方式除了波特率设置不同外,其余功能完全相同。除了波特率设置不同外,其余功能完全相同。(1 1)特点)特点 8 8位异步串行通信位异步串行通信UARTUART接口。帧结构为接口。帧结构为1111位,位,包括起始位包括起始位0 0,8 8位数据位,位数据位,1 1位可编程位位可编程位TB8/RB8TB8/RB8,1 1位停止位。位停止位。方式方式2 2的波特率固定,由的波特率固定,由PCONPCON中的中的SMODSMOD位选位选择,当择,当SMOD=0SMOD=0时,波特率为时,波特率为fOSC/64fOSC/64;当;当SMOD=1SMOD=1时,波特率为时,波特率为fOSC/32
25、fOSC/32;SMODSMOD位状态用软件设置。位状态用软件设置。见表见表6-16-1。3 3方式方式2 2和方式和方式3 3(2 2)发送操作)发送操作 发送操作前,用指令定义发送操作前,用指令定义TB8TB8(如作为奇偶校(如作为奇偶校验位或地址验位或地址/数据标志位),由指令数据标志位),由指令MOV SBUFMOV SBUF,A A 将将A A中的数据送入中的数据送入SBUFSBUF后启动发送操作;在发后启动发送操作;在发送操作中,已定义的送操作中,已定义的TB8TB8位能自动加入待发送的位能自动加入待发送的8 8位数据之后构成第位数据之后构成第9 9位,这样组成的一帧完整数位,这样
26、组成的一帧完整数据自动从据自动从TXDTXD端异步发送;发送完成后,端异步发送;发送完成后,TITI自动自动置置1 1,请求中断。要继续发送时,请求中断。要继续发送时,TITI必须由指令必须由指令清清0 0(CLR TICLR TI)。)。在多机通信的发送操作中,用在多机通信的发送操作中,用TB8TB8作地址作地址/数数据标志位。据标志位。TB8=1TB8=1,地址帧;,地址帧;TB8=0TB8=0,数据帧。,数据帧。3 3方式方式2 2和方式和方式3 3(3 3)接收操作)接收操作 在在RI=0RI=0的前提下,用指令置的前提下,用指令置REN=1REN=1,启动一帧数,启动一帧数据的接收,
27、将接收数据的第据的接收,将接收数据的第9 9位送入位送入RB8RB8。该数据能否。该数据能否接收,要由接收,要由SM2SM2和和RB8RB8的状态决定:的状态决定:SM2=0SM2=0时,串行口不看时,串行口不看RB8RB8状态,无条件接收。状态,无条件接收。SM2=1SM2=1是多机通信方式,接收到的是多机通信方式,接收到的RB8RB8是地址是地址/数据标数据标志位:志位:若若RB8=1RB8=1,接收的信息是地址,此时,接收的信息是地址,此时RIRI自动置自动置1 1,串行口接收发送来的数据。串行口接收发送来的数据。若若RB8=0RB8=0,接收的信息是数据。对于,接收的信息是数据。对于S
28、M2=1SM2=1的从机,的从机,RIRI不置不置1 1,此数据丢失;对于,此数据丢失;对于SM2=0SM2=0的从机,的从机,SBUFSBUF自动自动接收发来的数据。接收发来的数据。3 3方式方式2 2和方式和方式3 36.3串行口的特殊功能控制寄存器串行口的特殊功能控制寄存器 与串行口有关的特殊功能寄存器有与串行口有关的特殊功能寄存器有SBUFSBUF、SCONSCON、PCONPCON,与串行口中断有关的特殊功能寄存器有,与串行口中断有关的特殊功能寄存器有IEIE、IP.IP.1 1串行口发送串行口发送/接收缓冲器接收缓冲器SBUFSBUF(99H99H)2 2串行口控制寄存器串行口控制
29、寄存器SCONSCON SCONSCON的各位的定义和功能如下:的各位的定义和功能如下:SM0、SM1:串行口工作方式选择位(内容见6.2.3节)。SM2:多机通信控制位。具体用法见6.3.2节。REN:串行接收允许位。由软件置1或清0。软件置1时,串行口允许接收,清0后禁止接收。TB8:在方式2和方式3中是发送的第9位数据。RB8:在方式2和方式3中是接收的第9位数据。TI:发送中断标志位。发送结束时由硬件置位。该位必须用软该位必须用软件清零。件清零。RI:接收中断标志位。结束接收时由硬件置位。该位必须用软该位必须用软件清零件清零。3电源控制寄存器电源控制寄存器PCON 串行口借用了电源控制
30、寄存器串行口借用了电源控制寄存器PCONPCON的最高位。的最高位。PCONPCON是是8 8位寄存器,字节地址为位寄存器,字节地址为87H87H,不可进行位寻址。它的,不可进行位寻址。它的低低4 4位全部用于位全部用于80C51/80C3180C51/80C31子系列单片机的电源控制。子系列单片机的电源控制。只有最高位只有最高位SMODSMOD位用于串行口波特率系数的控制。当位用于串行口波特率系数的控制。当SMODSMODl l时,方式时,方式1 1、2 2、3 3的波特率加倍,否则不加倍。的波特率加倍,否则不加倍。PCONPCON的格式如下:的格式如下:6.4.16.4.1应用指导应用指导
31、1 1串行通信中的常用波特率串行通信中的常用波特率6 6.4.4串行口串行口的编程应用的编程应用 8051的四种工作方式中,方式的四种工作方式中,方式0和方式和方式2的波特率固的波特率固定,见表定,见表6-1和方式和方式0、方式、方式2的特点。方式的特点。方式1和方式和方式3的的波特率可变,其具体数值由定时器波特率可变,其具体数值由定时器T1的溢出率和的溢出率和SMOD位共同决定,公式见表位共同决定,公式见表6-1。定时器定时器T1作波特率发生器时,为了防止溢出中断,作波特率发生器时,为了防止溢出中断,应保持应保持T1为中断禁止状态。表为中断禁止状态。表6-4列出了列出了T1的常用波特的常用波
32、特率。率。表表6 6-4 T1-4 T1的常用波特率的常用波特率 2 2利用串行口扩展利用串行口扩展I/OI/O口口 8051单片机串行口方式单片机串行口方式0为同步移位寄存器方式,可进行为同步移位寄存器方式,可进行8位并位并行行I/O口的扩展。当串行口别无它用时,可通过使用串行输入并行输口的扩展。当串行口别无它用时,可通过使用串行输入并行输出移位寄存器(如出移位寄存器(如74LS164)扩展并行输出口;或使用并行输入串)扩展并行输出口;或使用并行输入串行输出移位寄存器(如行输出移位寄存器(如74LS165)扩展并行输入口。这种方法不占)扩展并行输入口。这种方法不占用片外用片外RAM地址,而且
33、还能简化单片机系统的硬件结构。但缺点是地址,而且还能简化单片机系统的硬件结构。但缺点是操作速度较慢,且扩展芯片越多,速度越慢。操作速度较慢,且扩展芯片越多,速度越慢。图图6-12是利用一片是利用一片74LS165扩展扩展8位并行输入口的实用电路。位并行输入口的实用电路。当移位当移位/置入端置入端S/由由“1”变为变为“0”时,并行输入端的数据被置入寄时,并行输入端的数据被置入寄存器。当存器。当S/1,且时钟禁止端(,且时钟禁止端(15脚)接地时,在时钟脉冲的作脚)接地时,在时钟脉冲的作用下,数据由用下,数据由QA向向QH方向(即方向(即D7D0)移动。)移动。图图6-12 6-12 利用一片利
34、用一片74LS16574LS165扩展扩展8 8位并行输入口电路位并行输入口电路 图中图中RXD(P3.0)作为)作为8051的串行输入端与的串行输入端与74LS165的串行输出端的串行输出端相连,相连,TXD(P3.1)为移位脉冲输出端,与)为移位脉冲输出端,与74LS165芯片的移位脉冲输入芯片的移位脉冲输入端连接,用一根端连接,用一根I/O口线口线P1.0与与74LS165芯片的芯片的S/相连来控制移位与置位相连来控制移位与置位过程。过程。注:图中注:图中74LS16574LS165的的SINSIN引脚为串行输入端,用于两片引脚为串行输入端,用于两片74LS16574LS165的串行扩展
35、的串行扩展连接。连接。3 3串行通信编程基础串行通信编程基础 (1)串行口初始化编程)串行口初始化编程 串行口初始化应该包括对串行口初始化应该包括对SCON、PCON和和T1的初始化。对的初始化。对T1的初始化又的初始化又包含包含TMOD寄存器初始化(将寄存器初始化(将T1设置为波特率发生器)、根据波特率求时间常设置为波特率发生器)、根据波特率求时间常数并对数并对TH1和和TL1赋值、启动赋值、启动T1等过程,串口初始化格式如下,其中加括号的等过程,串口初始化格式如下,其中加括号的指令可根据情况选择使用:指令可根据情况选择使用:SIO:MOV SCON,#控制状态字控制状态字;写方式字且;写方
36、式字且TI=RI=0 (MOV PCON,#80H);波特率加倍;波特率加倍 (MOV TMOD,#20H);T1作波特率发生器作波特率发生器 (MOV TH1,#X);选定波特率;选定波特率 (MOV TH1,#X)(SETB TR1);启动;启动T1 (SETB EA);开串行口中断;开串行口中断 (SETB ES)(2 2)发送程序)发送程序 发送程序可以采用中断和查询两种方式设计。发送程序可以采用中断和查询两种方式设计。查询方式:查询方式:TRAM:MOV A,R0 ;取数据;取数据 MOVSBUF,A ;发送一个字符;发送一个字符WAIT:JBCTI,NEXT ;等待发送结束;等待发
37、送结束 SJMPWAITNEXT:INCR0 ;准备下一次发送;准备下一次发送 SJMPTRAM 中断方式:中断方式:ORG 0023H ;串行口中断入口;串行口中断入口 AJMP SINT MAIN:;初始化编程;初始化编程 TRAM:MOV A,R0 ;取数据;取数据MOV SBUF,A ;发送第一个字符;发送第一个字符 SJMP$;其它工作;其它工作 SINT:CLR TI ;中断服务程序;中断服务程序INC R0MOV A,R0 ;取数据;取数据MOV SBUF,A ;发送下一个字符;发送下一个字符RETI 与发送相类似,接收也可以采用中断和查询两种方式设计。与发送相类似,接收也可以采
38、用中断和查询两种方式设计。当当REN=1、RI=0时时80C51处于等待接收状态;一旦检测到处于等待接收状态;一旦检测到RI=1,80C51开始从开始从SBUF读取数据。读取数据。查询方式:查询方式:WAIT:JBCRI,NEXT;查询等待;查询等待 SJMPWAIT NEXT:MOVA,SBUF ;读取接收数据;读取接收数据MOVR0,A ;保存数据;保存数据INC R0 ;准备下一次接收;准备下一次接收SJMPWAIT思考中断方式的接收程序?思考中断方式的接收程序?(3 3)接收程序)接收程序6 6.4.2.4.2 基本训练基本训练 1初始化训练初始化训练 要求:某要求:某8051单片机通
39、信系统,晶振频率为单片机通信系统,晶振频率为12MHz,要求串行口发送,要求串行口发送8位位数据,波特率数据,波特率1200bmp,请编写它的初始化程序。,请编写它的初始化程序。思路与计算:要选择串行口和定时器思路与计算:要选择串行口和定时器T1的工作方式,计算时间常数并赋值给的工作方式,计算时间常数并赋值给TH1、TL1。我们可以利用表。我们可以利用表6-1中求波特率的公式:中求波特率的公式:初始化程序:初始化程序:MOV SCON,#40H ;串口工作于方式;串口工作于方式1 MOV PCON,#80H ;SMOD=1 MOV TMOD,#20H ;T1 作定时器,工作于方式作定时器,工作
40、于方式2 MOV TH1,#0CCH ;装入时间常数初值;装入时间常数初值 MOV TL1,#0CCH ;自动重装时间常数;自动重装时间常数 CLR ET1 ;禁止;禁止T1中断中断 SETB TR1 ;启动;启动T1波特率发生器波特率发生器 总结:用上述公式计算出的波特率不为整数,近似取整后,波特率也就不总结:用上述公式计算出的波特率不为整数,近似取整后,波特率也就不能精确地等于能精确地等于1200bps。但在异步传送中,每接收一个字符实际上都要整步一。但在异步传送中,每接收一个字符实际上都要整步一次,因此这点微小误差并不影响收发。次,因此这点微小误差并不影响收发。要求:要求:利用利用805
41、1的串行口实现一个数据块的发送。设发送数据区首的串行口实现一个数据块的发送。设发送数据区首地址为地址为58H,数据块长度(字节数)为,数据块长度(字节数)为10,串行口工作于方式,串行口工作于方式1,波,波特率特率1200bps,晶振频率为,晶振频率为11.0592MHz。思路:思路:串行口工作于方式串行口工作于方式1时,波特率要编程设定。通常使时,波特率要编程设定。通常使T1工作工作在方式在方式2,当波特率取,当波特率取1200bps时,可以查表或计算时间常数初值,时,可以查表或计算时间常数初值,得得0E8H(SMOD=0时)。时)。发送子程序发送子程序TRAM清单:清单:TRAM:MOV
42、TMOD,#20H ;T1工作在方式工作在方式2 MOV TH1,#0E8H;装入时间常数初值;装入时间常数初值 MOV TL1,#0E8H ;自动重装时间常数;自动重装时间常数2 2串行传送训练串行传送训练 CLR ET1 ;禁止;禁止T1中断中断 SETB TR1 ;启动;启动T1波特率发生器波特率发生器 MOV SCON,#40H ;串口工作于方式;串口工作于方式1 MOV PCON,#00H ;SMOD=0,该指令可不写,该指令可不写 MOV R1,#58H ;数据发送区首址送;数据发送区首址送R1 MOV R5,#10 ;发送长度送;发送长度送R5LOOP:MOV A,R1 ;发送一
43、帧数据;发送一帧数据 MOV SBUF,A WAIT:JBC TI,NEXT ;发送等待,发完一帧转去;发送等待,发完一帧转去NEXT SJMP WAIT NEXT:INC R1 ;准备取下一数据;准备取下一数据 DJNZ R5,LOOP ;数据块发完?未发完转;数据块发完?未发完转LOOP RET ;发完,结束;发完,结束 发送等待时为什么不用发送等待时为什么不用“JB TI,NEXT”指令,而用指令,而用“JBC TI,NEXT”指令?指令?6.5.1 6.5.1 单片机与显示器的串行通信单片机与显示器的串行通信 例:某车间拟设置一块生产进度显示板,显示当天已完成的产品数量例:某车间拟设置
44、一块生产进度显示板,显示当天已完成的产品数量(不超过(不超过256),所需的产量数据,要从主单片机传送到显示板,请帮助设),所需的产量数据,要从主单片机传送到显示板,请帮助设计相应的传送程序。计相应的传送程序。分析与设计分析与设计 该任务中,每当生产线上完成一台合格产品时,通过自动计数装置向主该任务中,每当生产线上完成一台合格产品时,通过自动计数装置向主单片机外部中断输入端送出一个低电平单片机外部中断输入端送出一个低电平“0”,作为请求中断信号;主单片,作为请求中断信号;主单片机响应中断后,在中断服务程序中,将产量值(存放在机响应中断后,在中断服务程序中,将产量值(存放在50H中)加中)加1,
45、并通,并通过串口将其送给显示板。过串口将其送给显示板。显示版接收主单片机送来的显示数据。显示板的显示版接收主单片机送来的显示数据。显示板的CPU平时运行显示程序,平时运行显示程序,显示当前的产量显示当前的产量(产量数据存放在数据存储区产量数据存放在数据存储区50H单元中单元中)。只有当显示板的。只有当显示板的串口接收到主单片机发来的显示数据时,才会因串口中断,转去执行中断服串口接收到主单片机发来的显示数据时,才会因串口中断,转去执行中断服务程序,以便将新接收到的产量数据存放到务程序,以便将新接收到的产量数据存放到50H单元中,再返回到主程序执单元中,再返回到主程序执行显示程序。行显示程序。6.
46、5 单片机串行口应用举例1主单片机主单片机主程序主程序发送端的主程序要完成外部中断和串行口的初始化工作,然后等待外部中断。发送端的主程序要完成外部中断和串行口的初始化工作,然后等待外部中断。ORG 0000H AJMP MAIN ORG 0013H AJMP SUBG ;中断入口;中断入口 ORG 0100H MAIN:MOV 50H,#00H ;当天产量从;当天产量从0开始开始 MOV SP,#60H SETB IT1;采用边沿触发方式;采用边沿触发方式 MOV SCON,#40H;串口工作于方式;串口工作于方式1,禁止接收,禁止接收 MOV PCON,#00H;波特率不加倍;波特率不加倍
47、MOV TMOD,#20H;T1工作于方式工作于方式2 软件设计软件设计 MOV TH1,#0E8H;波特率为;波特率为1200bps MOV TL1,#0E8H SETB EX1;开中断;开中断 SETB EA;开中断;开中断 SETB TR1;打开波特率发生器;打开波特率发生器 AJMP$;等待中断;等待中断中断服务子程序中断服务子程序 当外部中断申请中断时,表示生产线上已完成一台成品,因此中断服务当外部中断申请中断时,表示生产线上已完成一台成品,因此中断服务程序的任务就是将产量单元程序的任务就是将产量单元50H加加1,并将加,并将加1后的数值从串口输出。程序如后的数值从串口输出。程序如下
48、:下:ORG 0200HSUBG:PUSH ACC INC 50H MOV A,50H MOV SBUF,AWAIT:JBC TI,NEXT SJMP WAITNEXT:POP ACC RETI2显示板的显示板的CPU主程序主程序主程序的初始化部分与发送端基本相同,只是要将主程序的初始化部分与发送端基本相同,只是要将SCON的禁止接收改的禁止接收改成允许接收。并且要一边执行显示程序,一边等待中断。显示程序从略,成允许接收。并且要一边执行显示程序,一边等待中断。显示程序从略,可参看第可参看第6章。章。ORG 0000H AJMP MAIN ORG 0023H AJMP SUBG ;串口中断入口;
49、串口中断入口 ORG 0100H MAIN:MOV 50H,#00H ;当天产量从;当天产量从0开始开始 MOV SP,#60H MOV SCON,#50H;串口工作于方式;串口工作于方式1,允许接收,允许接收 MOV PCON,#00H;波特率不加倍;波特率不加倍 MOV TMOD,#20H;T1工作于方式工作于方式2 MOV TH1,#0E8H;波特率为;波特率为1200bps MOV TL1,#0E8H SETB ES;开串口中断;开串口中断 SETB EA;开中断;开中断 SETB TR1;打开波特率发生器;打开波特率发生器 WAIT:ACALL DISPLAY;转显示子程序;转显示子
50、程序 AJMP WAIT;等待中断;等待中断中断服务子程序中断服务子程序当接收端的串口收到单片机发来的数据时,串口申请中断。在中断服务程序当接收端的串口收到单片机发来的数据时,串口申请中断。在中断服务程序中,要保护现场,将新接收到的产量数据存放到中,要保护现场,将新接收到的产量数据存放到50H单元中,再返回主程序。单元中,再返回主程序。ORG 0200HSUBG:PUSH ACC CLR RI MOV A,SBUF MOV 50H,ANEXT:POP ACC RETI一实训目的一实训目的1学习双机通信的常识。学习双机通信的常识。2掌握双机通信程序状态字的设置方法。掌握双机通信程序状态字的设置方