1、1单片机串行接口27 71 1 串行通信概述串行通信概述 计算机与外界的信息交换称为通信。基本计算机与外界的信息交换称为通信。基本的通信方式有两种。的通信方式有两种。并行通信并行通信(parallel communication):所传:所传送数据的各位送数据的各位同时同时发送或接收。发送或接收。串行通信串行通信(serial communication):所传送:所传送数据的各位数据的各位按顺序按顺序一位一位地发送或接收。一位一位地发送或接收。3 在在并行通信并行通信中,一个并行数据占多少中,一个并行数据占多少位二进制数,就要多少根传输线,这种位二进制数,就要多少根传输线,这种方式的特点是方
2、式的特点是通信速度快通信速度快,但,但传输线多传输线多,价格较贵价格较贵,适合,适合近距离近距离传输。传输。串行通信串行通信仅需仅需12根传输线,故在根传输线,故在长长距离距离传输数据时比较传输数据时比较经济经济,但由于它每,但由于它每次只能传送次只能传送1位,所以位,所以传送速度较慢传送速度较慢。4图图7.1 7.1 基本通信方式图示基本通信方式图示57 71 11 1 同步通信和异步通信方式同步通信和异步通信方式串行通信分串行通信分同步同步和和异步异步两种方式。两种方式。61 1异步通信异步通信ASYNCASYNC在异步通信中数据或字符是逐帧(在异步通信中数据或字符是逐帧(framefra
3、me)传送)传送的。的。帧定义为一个字符的完整的通信格式,通常也称帧定义为一个字符的完整的通信格式,通常也称为帧格式。最常见的帧格式一般是先用一个起始位为帧格式。最常见的帧格式一般是先用一个起始位“0”0”表示字符的开始;然后是表示字符的开始;然后是5 58 8位数据,规定低位在前,位数据,规定低位在前,高位在后;其后是奇偶校验位;最后是停止位,用以高位在后;其后是奇偶校验位;最后是停止位,用以表示字符的结束,停止位可以是表示字符的结束,停止位可以是1 1位、位、1.51.5位、位、2 2位,不位,不同的计算机规定有所不同。从起始位开始到停止位结同的计算机规定有所不同。从起始位开始到停止位结束
4、就构成完整的束就构成完整的1 1帧。帧。7 起始位起始位通信线上没有数据传送时,为通信线上没有数据传送时,为高电平(逻辑高电平(逻辑1 1);当要发送数据时,首先);当要发送数据时,首先发发1 1个低电平信号(逻辑个低电平信号(逻辑0 0),此信号称为),此信号称为“起始位起始位”,表示开始传输,表示开始传输1 1帧数据。帧数据。数据位数据位起始位之后的位即数据位。数起始位之后的位即数据位。数据位可以是据位可以是5 5、6 6、7 7或或8 8位(不同计算机的位(不同计算机的规定不同),上图的数据位为规定不同),上图的数据位为8 8位。一般从位。一般从最低位开始传送,最高位在最后。最低位开始传
5、送,最高位在最后。8 奇偶校验位奇偶校验位数据位之后的位为奇偶校验位数据位之后的位为奇偶校验位(有的方式具有)。此位可用于判别字符传送的(有的方式具有)。此位可用于判别字符传送的正确性,其有正确性,其有3 3种可能的选择,即奇、偶、无校验,种可能的选择,即奇、偶、无校验,用户可根据需要选择(在有的格式中,该位可省用户可根据需要选择(在有的格式中,该位可省略)。在略)。在80C5180C51单片机中,此位还可以用来确定该单片机中,此位还可以用来确定该帧字符信息的性质(地址或数据)。帧字符信息的性质(地址或数据)。停止位停止位校验位后为停止位,用于表示校验位后为停止位,用于表示1 1帧结束,帧结束
6、,用高电平(逻辑用高电平(逻辑1 1)表示。停止位可以是)表示。停止位可以是1 1、1 15 5或或2 2位,不同计算机的规定有所不同。位,不同计算机的规定有所不同。9 异步通信的主要特点如下:异步通信的主要特点如下:进行串行通信的单片机的时钟相互独立;其进行串行通信的单片机的时钟相互独立;其时钟频率可以不相同;在通信时不要求有同步时时钟频率可以不相同;在通信时不要求有同步时钟信号。由于异步通信是逐帧进行传输的,各位钟信号。由于异步通信是逐帧进行传输的,各位之间的时间间隔应该相同,所以之间的时间间隔应该相同,所以必须保证必须保证2 2个单片个单片机之间有相同的传送波特率。机之间有相同的传送波特
7、率。如果传送波特率不如果传送波特率不同,则时间间隔不同;当误差超过同,则时间间隔不同;当误差超过5 5时,就不能时,就不能正常进行通信。由于信息传输可以是随时不间断正常进行通信。由于信息传输可以是随时不间断地进行的,因而帧与帧之间的时间间隔可以是不地进行的,因而帧与帧之间的时间间隔可以是不固定的,间隙处为高电平。固定的,间隙处为高电平。10由于异步通信每传送一帧有固定格式,由于异步通信每传送一帧有固定格式,通信双方只需按约定的帧格式来发送和接收通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单。数据,所以硬件结构比同步通信方式简单。此外,它还能利用校验位检测错误,所以这
8、此外,它还能利用校验位检测错误,所以这种通信方式应用较广泛。种通信方式应用较广泛。在单片机中主要是在单片机中主要是采用异步通信方式。采用异步通信方式。112 2同步通信同步通信SYNCSYNC在同步通信中,数据或字符开始处是用一同步字在同步通信中,数据或字符开始处是用一同步字符来指示(一般约定为符来指示(一般约定为l l2 2个字符),以实现发个字符),以实现发送端和接收端同步,一旦检测到约定同步字符,送端和接收端同步,一旦检测到约定同步字符,下面就连续、顺序地发送和接收数据下面就连续、顺序地发送和接收数据。12 由于同步通信数据块传送时去掉了每个数字由于同步通信数据块传送时去掉了每个数字都必
9、须具有的字符开始和结束的标志,且它一次都必须具有的字符开始和结束的标志,且它一次可以发送一个数据段(多个数据),因此,可以发送一个数据段(多个数据),因此,其速其速度高于异步通信度高于异步通信;但这种方式要求接收和发送时;但这种方式要求接收和发送时钟严格钟严格保持同步保持同步,在通信时通常要求有同步时钟,在通信时通常要求有同步时钟信号,对硬件结构要求较高。由于这种方式易于信号,对硬件结构要求较高。由于这种方式易于进行串行外围扩展,所以目前很多型号的单片机进行串行外围扩展,所以目前很多型号的单片机都增加了串行同步通信接口,如目前已得到广泛都增加了串行同步通信接口,如目前已得到广泛应用的应用的I
10、I2 2C C串行总线和串行总线和SPISPI串行接口等。串行接口等。137 71 12 2 串行通信的数据传送速率串行通信的数据传送速率 传送速率传送速率是指数据传送的速度。是指数据传送的速度。用用b/sb/s或或bpsbps(比(比特秒)表示,称为特秒)表示,称为比特率比特率。在二进制的情况下,比。在二进制的情况下,比特率与波特率数值相等,因而在单片机的串行通信中,特率与波特率数值相等,因而在单片机的串行通信中,常称为常称为波特率波特率。假如数据传送的速率为假如数据传送的速率为120120个字符每秒,每个字个字符每秒,每个字符由符由1 1个起始位、个起始位、8 8个数据位和个数据位和1 1
11、个停止位组成,则其个停止位组成,则其传送波特率为:传送波特率为:10b10b120120s s1200b1200bs s12001200波特波特每一位的传送时间即为波特率的倒数:每一位的传送时间即为波特率的倒数:mssbbtd833.012001114 异步通信的数据传送速率一般为异步通信的数据传送速率一般为50b/s50b/s100kb/s100kb/s,常用于计算机到,常用于计算机到CRTCRT终端,以及双机或多机之间的通信等。终端,以及双机或多机之间的通信等。157 71 13 3 串行通信的方式串行通信的方式在串行通信中,数据是在两机之在串行通信中,数据是在两机之间传送的。按照数据传送
12、方向,串行通间传送的。按照数据传送方向,串行通信可分为单工(信可分为单工(SimplexSimplex)制式、半双)制式、半双工(工(half duplexhalf duplex)制式和全双工)制式和全双工(full duplexfull duplex)制式。)制式。16图图72 串行通信方式示意图串行通信方式示意图(1)单工制式)单工制式 在单工制式下,数据在甲机和乙机之间只在单工制式下,数据在甲机和乙机之间只允许允许单方向单方向传送。两机之间只需传送。两机之间只需1条数据线。条数据线。17MOVA,SBUF;MOVA,#55H;1串行口控制寄存器SCONMOVR6,#00H;723 80C
13、51的帧格式4中断允许控制寄存器IE乙机接收甲机发送的数据,并写入以300H为首址的外部数据存储器中。在实际应用中,因为单片机功能有限,因而在较大的测控系统中,常常把单片机应用系统作为前端机(下位机或从机)直接用于控制对象的数据采集与控制,而把PC机作为中央处理机(上位机或主机)用于数据处理和对下位机的监控管理。数据位起始位之后的位即数据位。采用定时器T1方式2作波特率发生器,波特率为4800,fosc=11.MOVTH1,#0F3HDJNZR6,L1;不管是中断方式,还是查询方式,都不会清除TI或RI标志,必须用软件清0。MOVPCON,#80H;其帧格式可有8位、10位和11位,并能设置各
14、种波特率,使用灵活方便。通过软件编程可使串行通信有4种工作方式。设定时器T1工作在方式2每一位的传送时间即为波特率的倒数:80C51串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的。在任何方式中,都必须由软件清除RI。(2 2)半双工制式)半双工制式 在半双工制式下,数据在甲机和乙机之间在半双工制式下,数据在甲机和乙机之间允许双方向传送,但它们之间只有一个通允许双方向传送,但它们之间只有一个通信回路,信回路,接收和发送接收和发送不能同时不能同时进行,只能进行,只能分时发送和接收(即甲机发送,乙机接收,分时发送和接收(即甲机发送,乙机接收,或者乙机发送,甲机接收),因而两机之或者
15、乙机发送,甲机接收),因而两机之间只需间只需1 1条数据线。条数据线。18(3 3)全双工制式)全双工制式 在全双工制式下,甲、乙两机之间数据的在全双工制式下,甲、乙两机之间数据的发送和接收可以同时进行,称为发送和接收可以同时进行,称为“全双工全双工传送传送”。全双工形式的串行通信必须使用。全双工形式的串行通信必须使用2 2条数据线。条数据线。不管哪种形式的串行通信,在两机之间均不管哪种形式的串行通信,在两机之间均应有应有公共地线公共地线。19*信号的调制与解调信号的调制与解调 当异步通信的距离在当异步通信的距离在15m15m之内时,计算机之间之内时,计算机之间可以直接进行通信。而当传输距离较
16、远时,通常是可以直接进行通信。而当传输距离较远时,通常是用电话线传送。由于电话线频带不够宽,再加上远用电话线传送。由于电话线频带不够宽,再加上远距离传输时信号不可避免地衰减,因而使信号发生距离传输时信号不可避免地衰减,因而使信号发生明显的畸变。明显的畸变。在在发送发送时要用时要用调制器调制器(modulatormodulator)把数字信)把数字信号转换为模拟信号,并加以放大再传送,这个过程号转换为模拟信号,并加以放大再传送,这个过程叫做调制。叫做调制。在在接收接收时,时,再用再用解调器解调器(demodulatordemodulator)检测此模拟信号,并把它转换成数字信号再送入计检测此模拟
17、信号,并把它转换成数字信号再送入计算机接口,这个过程即解调。算机接口,这个过程即解调。207 71 14 4 通信协议通信协议 通信协议是指在计算机之间进行数据传输通信协议是指在计算机之间进行数据传输时的一些约定,包括通信方式、波特率、命令时的一些约定,包括通信方式、波特率、命令码的约定等。为保证计算机之间能准确、可靠码的约定等。为保证计算机之间能准确、可靠地通信,相互之间必须遵循统一的通信协议。地通信,相互之间必须遵循统一的通信协议。在通信之前一定要先设置好通信协议。在通信之前一定要先设置好通信协议。217 72 80C512 80C51串行口简介串行口简介80C5180C51的串行口是一个
18、的串行口是一个可编程的全可编程的全双工串行通信接口双工串行通信接口,通过软件编程它可,通过软件编程它可以 作 通 用 异 步 接 收 和 发 送 器以 作 通 用 异 步 接 收 和 发 送 器 U A R TU A R T(Universal Asynchronous ReceiverUniversal Asynchronous ReceiverTransmitterTransmitter)用,也可作同步移位)用,也可作同步移位寄存器用。其帧格式可有寄存器用。其帧格式可有8 8位、位、1010位和位和1111位,位,并能设置各种波特率并能设置各种波特率,使用灵活,使用灵活方便。方便。227
19、72 21 1 串行口结构与工作原理串行口结构与工作原理80C5180C51串行口主要由串行口主要由接收与发送接收与发送缓冲寄存缓冲寄存器器SBUFSBUF、输入移位寄存器以及串行控制寄存、输入移位寄存器以及串行控制寄存器器SCONSCON等组成。波特率发生器可以利用定时等组成。波特率发生器可以利用定时器器T1T1或或T2T2控制发送和接收的速率。控制发送和接收的速率。SCONSCON用于用于存放串行口的控制和状态信息;存放串行口的控制和状态信息;发送数据缓发送数据缓冲寄存器冲寄存器SBUFSBUF用于存放准备发送出去的数据;用于存放准备发送出去的数据;接收数据缓冲寄存器接收数据缓冲寄存器SB
20、UFSBUF用于接收由外部输用于接收由外部输入到输入移位寄存器中的数据。入到输入移位寄存器中的数据。80C5180C51串行口串行口正是通过对上述专用寄存器的设置、检测与正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的。读取来管理串行通信的。23图图73 串行口结构框图串行口结构框图24在进行串行通信时,外界数据通过引脚在进行串行通信时,外界数据通过引脚RXDRXD(P3.0P3.0)输入。输入数据首先逐位进入输入移位)输入。输入数据首先逐位进入输入移位寄存器,由串行数据转换为并行数据,然后再送寄存器,由串行数据转换为并行数据,然后再送入接收寄存器。在接收寄存器中采用了双缓冲结入接收
21、寄存器。在接收寄存器中采用了双缓冲结构,以避免在接收到第构,以避免在接收到第2 2帧数据前,帧数据前,CPUCPU未及时响未及时响应接收寄存器前一帧的中断请求,没把前一帧数应接收寄存器前一帧的中断请求,没把前一帧数据读走,而造成据读走,而造成2 2帧数据重叠的错误。在发送时,帧数据重叠的错误。在发送时,串行数据通过引脚串行数据通过引脚TXDTXD(P3.1P3.1)输出。由于)输出。由于CPUCPU是是主动的,因此不会产生写重叠问题,一般不需要主动的,因此不会产生写重叠问题,一般不需要双缓冲器结构。要发送的数据通过发送控制器控双缓冲器结构。要发送的数据通过发送控制器控制逻辑门电路逐位输出。制逻
22、辑门电路逐位输出。257 72 22 2 串行口寄存器串行口寄存器 与串行口工作有关的寄存器共有与串行口工作有关的寄存器共有6 6个,个,分别是串行口控制寄存器分别是串行口控制寄存器SCONSCON、接收与发、接收与发送缓冲寄存器送缓冲寄存器SBUFSBUF、电源控制寄存器、电源控制寄存器PCONPCON、中断允许控制寄存器中断允许控制寄存器IEIE、中断优先级寄存、中断优先级寄存器器IPIP。261 1串行口控制寄存器串行口控制寄存器SCONSCON 串行口控制寄存器串行口控制寄存器SCONSCON用于串行通用于串行通信的方式选择、接收和发送控制,并可信的方式选择、接收和发送控制,并可反映串
23、行口的工作状态。反映串行口的工作状态。27SETBREN;MOVSCON,#50H;当执行“MOV SBUF,A”指令时,CPU将1字节的数据写入发送缓冲寄存器SBUF(99H),就启动发送器发送,数据从引脚TXD(P31)端输出。SETBTR1;串行口的方式0主要用于扩展并行IO口。在接收时,先置位REN为1,使串行口处于允许接收状态,同时还要将RI清0。上例是在方式3下进行收发,用奇偶位进行校验。并行通信(parallel communication):所传送数据的各位同时发送或接收。SETBF0;异步通信的主要特点如下:串行口控制寄存器SCON用于串行通信的方式选择、接收和发送控制,并可
24、反映串行口的工作状态。3 串行通信工作方式计数速率与TMOD寄存器中CT的状态有关。当SM2=1,且RB8为1时,表示在多机通信情况下,接收的信息为地址帧,此时RI置1。5位、2位,不同的计算机规定有所不同。【例72】用2片8位串入并出移位寄存器74HC164作扩展输出口。每一位的传送时间即为波特率的倒数:当发送完1帧数据后,TI标志置1,在中断方式下将申请中断,通知CPU可以发送下一个数据。SETBTR1;在发送时要用调制器(modulator)把数字信号转换为模拟信号,并加以放大再传送,这个过程叫做调制。SCONSCON7 7和和SCONSCON6 6位位 SM0SM0和和SM1SM1串行
25、方串行方式选择位式选择位 表表7 71 1 串行口工作方式选择串行口工作方式选择28 SCON.5SCON.5位位 SM2SM2多机通信控制位。多机通信控制位。在方式在方式2 2和方式和方式3 3中,中,SM2SM2主要用于进行多机主要用于进行多机通信控制。当串行口以方式通信控制。当串行口以方式2 2或方式或方式3 3接收时,如接收时,如果果SM2=1SM2=1,允许多机通信,且接收到第,允许多机通信,且接收到第9 9位位RB8RB8为为0 0时,则时,则RIRI不置不置1 1不接收主机发来的数据;如果不接收主机发来的数据;如果SM2=1SM2=1,且,且RB8RB8为为1 1,则,则RIRI
26、置置1 1,产生中断请求,将,产生中断请求,将接收到的接收到的8 8位数据送入位数据送入SBUFSBUF。当。当SM2=0SM2=0时,不论时,不论RB8RB8为为0 0还是还是1 1,都将收到的,都将收到的8 8位数据送入位数据送入SBUFSBUF,并产生,并产生中断。中断。在方式在方式1 1中,当处于接收状态时,若中,当处于接收状态时,若SM2=1SM2=1,则只有接收到有效的停止位时,则只有接收到有效的停止位时,RIRI才置才置1 1。在方式。在方式0 0中,中,SM2SM2应置应置0 0。29 SCON.4SCON.4位位 RENREN允许串行接收位。允许串行接收位。REN=1REN=
27、1时,允许接收;时,允许接收;REN=OREN=O时,禁止接收。时,禁止接收。由软件置位或清除。由软件置位或清除。30 SCON.3SCON.3位位 TB8TB8发送数据的第发送数据的第9 9位位(D8)(D8)。在方式在方式2 2或方式或方式3 3中,根据需要由软件置位中,根据需要由软件置位或复位。双机通信时,它可约定作奇偶校验或复位。双机通信时,它可约定作奇偶校验位;在多机通信中,可作为区别地址帧或数位;在多机通信中,可作为区别地址帧或数据帧的标识位。一般由指令设定据帧的标识位。一般由指令设定地址帧地址帧时,时,设设TB8TB8为为1 1;而设定;而设定数据帧数据帧时,设时,设TB8TB8
28、为为0 0。方方式式0 0和方式和方式1 1中没用该位。中没用该位。31 SCON.2SCON.2位位 RB8RB8接收数据的第接收数据的第9 9位位(D8)(D8)。在方式在方式2 2或方式或方式3 3中,中,RB8RB8的状态与的状态与TB8TB8相相呼应,呼应,(如可以是约定的奇偶校验位,也可如可以是约定的奇偶校验位,也可以是约定的地址以是约定的地址/数据标识位数据标识位)。例如,当。例如,当SM2=1SM2=1时,如果时,如果RB8RB8为为0 0,则说明收到的是数,则说明收到的是数据帧。据帧。32 SCON.1SCON.1位位 TITI发送中断标志位。发送中断标志位。在方式在方式0
29、0中,发送完中,发送完8 8位数据后,由硬件置位数据后,由硬件置位;在其他方式中,在发送停止位之初由硬件置位;在其他方式中,在发送停止位之初由硬件置位。位。TI=1TI=1时,可申请中断,也可供软件查询用。时,可申请中断,也可供软件查询用。在任何方式中,都必须由软件来清除在任何方式中,都必须由软件来清除TITI。SCON.0SCON.0位位 RIRI接收中断标志位。接收中断标志位。在方式在方式0 0中,接收完中,接收完8 8位数据后,由硬件置位数据后,由硬件置位;在其他方式中,在接收停止位的中间,由硬位;在其他方式中,在接收停止位的中间,由硬件置位。件置位。RI=1RI=1时,可申请中断,也可
30、供软件查询时,可申请中断,也可供软件查询用。用。在任何方式中,都必须由软件清除在任何方式中,都必须由软件清除RIRI。33 SCONSCON的低的低2 2位与中断有关。位与中断有关。SCONSCON的地址为的地址为98H98H,可以位寻址。复位时,可以位寻址。复位时,SCONSCON的所有位均清的所有位均清0 0。342 2数据缓冲寄存器数据缓冲寄存器SBUFSBUF 数据缓冲寄存器数据缓冲寄存器SBUFSBUF实际上是实际上是2 2个寄存个寄存器:器:发送数据缓冲寄存器发送数据缓冲寄存器和和接收数据缓冲接收数据缓冲寄存器寄存器。接收与发送缓冲寄存器。接收与发送缓冲寄存器SBUFSBUF采用采
31、用同一个地址代码同一个地址代码99H99H,其寄存器名亦同样为,其寄存器名亦同样为SBUFSBUF。CPUCPU通过不同的操作命令,区别这通过不同的操作命令,区别这2 2个寄存器,所以不会因为地址代码相同而个寄存器,所以不会因为地址代码相同而产生错误。产生错误。当当CPUCPU发出写发出写SBUFSBUF命令命令时,即向时,即向发送缓冲寄存器中装载新的信息,同时启发送缓冲寄存器中装载新的信息,同时启动数据串行发送;当动数据串行发送;当CPUCPU发出读发出读SBUFSBUF命令命令时,时,即读接收缓冲寄存器的内容。即读接收缓冲寄存器的内容。353 3电源控制寄存器电源控制寄存器PCONPCON
32、 电源控制寄存器电源控制寄存器PCONPCON主要用于电源控制,主要用于电源控制,PCONPCON的最高位的最高位SMODSMOD是串行口的波特率倍增位:是串行口的波特率倍增位:当当SMODSMOD为为1 1时,波特率时,波特率加倍加倍;当;当SMODSMOD为为O O时,波特率时,波特率不变不变。364 4中断允许控制寄存器中断允许控制寄存器IEIE 中断允许控制寄存器中断允许控制寄存器IEIE用于控制与管理单用于控制与管理单片机的中断系统。片机的中断系统。IEIE的的ESES位用于控制串行口的中断:位用于控制串行口的中断:当当ESES=O O时,时,禁止禁止串行口中断;串行口中断;当当ES
33、ES=1 1时,时,允许允许串行口中断。串行口中断。37在方式2或方式3中,根据需要由软件置位或复位。S/L=1时,允许串行移位。80C51串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的。SETBREN;3位 TB8发送数据的第9位(D8)。所以,在主机发送地址帧时,地址数据标识位TB8应设置为“1”,以表示是地址帧。若出错,则置F0标志为1,若正确则置F0标志为0,然后返回。TRT:MOVTMOD,#20H;Q0Q7为并行输出端;所以TH1TL1F4H。解:在此采用74HC165与单片机相连实现I/O口扩展,是利用80C51的3根口线扩展为16根输入口线的实用电路,其由2块
34、74HC165串接而成。MOVSCON,#50H串行口将接收发来的地址。如果SM2=1,且RB8为1,则RI置1,产生中断请求,将接收到的8位数据送入SBUF。在多机通信中,可作为区别地址帧或数据帧的标识位。MOVA,SBUF;P0,RB81,则出错最常见的帧格式一般是先用一个起始位“0”表示字符的开始;PZ:JBRB8,ERR;前级的数据输出端QH与后级的信号输入端SIN相连。5 5中断优先级寄存器中断优先级寄存器IPIP 中断优先级寄存器中断优先级寄存器IPIP用于管理单片机中用于管理单片机中各中断源中断优先级。各中断源中断优先级。IPIP的的PSPS位用于设置串行口中断的优先级:位用于设
35、置串行口中断的优先级:当当PSPS=0 0时,串行口中断为时,串行口中断为低优先级低优先级;当当PSPS=1 1时,串行口中断为时,串行口中断为高优先级高优先级。387 72 23 80C513 80C51的帧格式的帧格式 80C5180C51串行口通过编程可设置四种工作方式及串行口通过编程可设置四种工作方式及三种帧格式。三种帧格式。39 方式方式0 0以以8 8位数据为一帧位数据为一帧,不设起始位和停止位,不设起始位和停止位,先发送或接收最低位。先发送或接收最低位。方式方式1 1以以1010位为一帧位为一帧传输,设有传输,设有1 1个起始位个起始位“0”0”、8 8个数据位和个数据位和1 1
36、个停止位个停止位“1”1”。40方式方式2 2和和3 3以以1111位为一帧传输,设有位为一帧传输,设有1 1个起始个起始位位“0”0”、8 8个数据位、个数据位、1 1个可编程位(第个可编程位(第9 9数据位)数据位)D D8 8和和1 1个停止位个停止位“1”1”。可编程位可编程位D D8 8由软件置由软件置“1”1”或清或清“0”0”,该位可作检,该位可作检验位,也可作它用。验位,也可作它用。417 72 24 4 波特率的设置波特率的设置 在串行通信前,首先要在串行通信前,首先要设置收发设置收发双方对发送或接收的数据传送速率双方对发送或接收的数据传送速率,即,即波特率波特率。通过软件对
37、。通过软件对80C5180C51串行口编程可串行口编程可设定设定4 4种工作方式。这种工作方式。这4 4种方式波特率的种方式波特率的计算方法不同:计算方法不同:方式方式0 0和方式和方式2 2的波特率的波特率是是固定固定的的,而,而方式方式1 1和方式和方式3 3的波特率是的波特率是可变可变的,由定时器的,由定时器T1T1或或T2T2(AT89S52AT89S52)的)的溢出率控制溢出率控制。421 1 方式方式0 0和方式和方式2 2的波特率的波特率方式方式0 0中,每个机器周期发送或接收中,每个机器周期发送或接收1 1位数据,位数据,且不受且不受SMODSMOD的影响。的影响。方式方式2
38、2的波特率取决于的波特率取决于PCONPCON中中SMODSMOD之值。之值。当当SMODSMOD0 0时,波特率为时,波特率为foscfosc的的1 16464;若若SMODSMOD1 1,则波特率为,则波特率为foscfosc的的1 13232,即:,即:oscSMODf6422的波特率方式oscf1210的波特率方式432 2方式方式1 1和方式和方式3 3的波特率的波特率80C5180C51串行口方式串行口方式1 1和方式和方式3 3的波特率由定时的波特率由定时器器T1T1的溢出率与的溢出率与SMODSMOD的值决定,即:的值决定,即:T1T1溢出率取决于计数速率和定时器的预置值。溢出
39、率取决于计数速率和定时器的预置值。计数速率与计数速率与TMODTMOD寄存器中寄存器中C CT T的状态有关。的状态有关。当当C CT T0 0时,计数速率时,计数速率foscfosc1212;当当C CT T1 1时,计数速率取决于外部输入时钟频率。时,计数速率取决于外部输入时钟频率。溢出率溢出率的波特率的波特率和方式和方式方式方式132232TSMOD 44当定时器当定时器T1T1作波特率发生器使用时,通常是选作波特率发生器使用时,通常是选用用自动重装载方式自动重装载方式,即,即方式方式2 2。设计数初值为。设计数初值为X X,那么,那么每过(每过(256X256X)个机器周期,定时器)个
40、机器周期,定时器1 1就会产生一次就会产生一次溢出。为了避免因溢出而产生不必要的中断,此时应溢出。为了避免因溢出而产生不必要的中断,此时应禁止禁止T1T1中断。溢出周期为:中断。溢出周期为:溢出率为溢出周期之倒数,所以:溢出率为溢出周期之倒数,所以:则定时器则定时器T1T1方式方式2 2的初始值为:的初始值为:)(XfTosc25612X)(25612f322oscSMOD波特率波特率)(波波特特率率3841256SMODfXosc45表表7.2 7.2 定时器定时器T1T1的常用波特率的常用波特率 46【例例1 1】已知已知80C5180C51单片机时钟振荡频率为单片机时钟振荡频率为11.0
41、592MHz11.0592MHz选用定时器选用定时器T1T1工作方式工作方式2 2作波特率发生器,波特率为作波特率发生器,波特率为24002400波特,求时间常数。波特,求时间常数。解:设波特率控制位解:设波特率控制位SMODSMOD0,0,定时器定时器T1T1的时间常数为:的时间常数为:所以所以TH1TH1TL1TL1F4HF4H。HFX4244240038410100592112566)().(471串行口控制寄存器SCON当CPU发出写SBUF命令时,即向发送缓冲寄存器中装载新的信息,同时启动数据串行发送;在多机通信中,可作为区别地址帧或数据帧的标识位。【例1】已知80C51单片机时钟振
42、荡频率为11.MOVPCON,#80HRSU:MOVTMOD,#20H;734 多机通信接收与发送缓冲寄存器SBUF采用同一个地址代码99H,其寄存器名亦同样为SBUF。5位、2位,不同的计算机规定有所不同。在多机通信中,可作为区别地址帧或数据帧的标识位。通信协议是指在计算机之间进行数据传输时的一些约定,包括通信方式、波特率、命令码的约定等。假如数据传送的速率为120个字符每秒,每个字符由1个起始位、8个数据位和1个停止位组成,则其传送波特率为:MOVSBUF,A;若fosc=12MHz,则每移1位需1s。从起始位开始到停止位结束就构成完整的1帧。5中断优先级寄存器IP在发送时,串行数据通过引
43、脚TXD(P3.MOVSCON,#50H图中,CK为时钟脉冲输入端,D0D7为并行输入端,SIN、QH分别为数据的输入、输出端。SCON的地址为98H,可以位寻址。由于上述公式包含除法,所以当晶振频率由于上述公式包含除法,所以当晶振频率与波特率不同时,计算值有时会有与波特率不同时,计算值有时会有一定误一定误差差。例如,如果晶振频率为。例如,如果晶振频率为12MHz12MHz,波特率,波特率要求为要求为24002400,在,在SMOD=0SMOD=0时,时,TH1=F3HTH1=F3H,波特,波特率的实际计算值为率的实际计算值为24042404,误差为,误差为0.110.11。但如果但如果2 2
44、个单片机的波特率相同,例如均为个单片机的波特率相同,例如均为24042404,则不会影响通信;,则不会影响通信;如果如果2 2个单片机的个单片机的波特率误差超过波特率误差超过2.52.5,则可能会引起通信,则可能会引起通信错误。错误。48 AT89S52AT89S52单片机的定时器单片机的定时器T2T2也可作为波特率也可作为波特率发生器发生器。497.3 串行通信工作方式串行通信工作方式通过软件编程可使串行通信有通过软件编程可使串行通信有4 4种工作种工作方式。方式。507 73 31 1 方式方式0 0在在方式方式0 0下,串行口作下,串行口作同步移位寄存同步移位寄存器器用,以用,以8 8位
45、数据为位数据为1 1帧,先发送或接收最帧,先发送或接收最低位,每个机器周期发送或接收一位,故低位,每个机器周期发送或接收一位,故其波特率是固定的,为其波特率是固定的,为foscfosc1212。串行数。串行数据由据由RXDRXD(P3.0P3.0)端输入或输出。同步移位)端输入或输出。同步移位脉冲由脉冲由TXDTXD(P3.1P3.1)端送出。这种方式常用)端送出。这种方式常用于扩展于扩展I/OI/O口。采用不同的指令实现输入或口。采用不同的指令实现输入或输出。输出。51(1 1)发)发 送送当执行当执行“MOV SBUFMOV SBUF,A A”指令时,指令时,CPUCPU将将1 1字节的数
46、据写入发送缓冲寄存器字节的数据写入发送缓冲寄存器SBUFSBUF(99H99H),串行口即把),串行口即把8 8位数据以位数据以foscfosc1212的波特率的波特率从从RXDRXD端送出端送出(低位在前)。发(低位在前)。发送完成后,置中断标志位送完成后,置中断标志位TITI为为1 1。如要继。如要继续发送应将续发送应将TITI清清0 0。52(2 2)接)接 收收由于由于RENREN是串行口允许接收控制位,因是串行口允许接收控制位,因此在准备接收时,首先要用软件置此在准备接收时,首先要用软件置RENREN为为1 1,使其允许接收;然后,执行使其允许接收;然后,执行“MOV AMOV A,
47、SBUF”SBUF”指令,指令,CPUCPU即开始从即开始从RXDRXD端以端以foscfosc1212波特波特率输入数据(低位在前),当接收到率输入数据(低位在前),当接收到8 8位数位数据时,置中断标志据时,置中断标志RIRI为为1 1。读取数据后,一。读取数据后,一定要将定要将RIRI清清0 0。53串行控制寄存器中,串行控制寄存器中,TB8TB8和和RB8RB8位在方式位在方式0 0中未用。每当发送或接收完中未用。每当发送或接收完8 8位数据时,位数据时,由硬件将发送中断由硬件将发送中断TITI或接收中断或接收中断RIRI标志置标志置位。位。不管是中断方式还是查询方式,都不不管是中断方
48、式还是查询方式,都不会清除会清除TITI或或RIRI标志,必须用软件清标志,必须用软件清0 0。在方在方式式0 0中,中,SM2SM2位必须为位必须为0 0。54图图73 串行口结构框图串行口结构框图557 73 32 2 方式方式1 1在在方式方式1 1下,串行口为下,串行口为1010位通用异步接口。位通用异步接口。发送或接收发送或接收1 1帧数据,包括帧数据,包括1 1位起始位位起始位“0”0”、8 8位数据位和位数据位和1 1位停止位位停止位“1”1”,其传送波特率,其传送波特率可调。可调。56(1 1)发)发 送送当执行当执行“MOV SBUFMOV SBUF,A A”指令时,指令时,
49、CPUCPU将将1 1字节字节的数据写入发送缓冲寄存器的数据写入发送缓冲寄存器SBUFSBUF(99H99H),就启动发),就启动发送器发送,数据从引脚送器发送,数据从引脚TXDTXD(P3P31 1)端输出。当)端输出。当发发送完送完1 1帧数据后帧数据后,TITI标志置标志置1 1,在中断方式下将申请,在中断方式下将申请中断,通知中断,通知CPUCPU可以发送下一个数据。如要继续发送,可以发送下一个数据。如要继续发送,必须将必须将TITI清清0 0。57在方式0中,SM2应置0。设计数初值为X,那么每过(256X)个机器周期,定时器1就会产生一次溢出。如:MOVSCON,#0D8H;在串行
50、通信前,首先要设置收发双方对发送或接收的数据传送速率,即波特率。其时钟频率可以不相同;上例是在方式3下进行收发,用奇偶位进行校验。DJNZR7,TRS;当SM2=1,且RB8为1时,表示在多机通信情况下,接收的信息为地址帧,此时RI置1。解:设波特率控制位SMOD0,定时器T1的时间常数为:设定时器T1工作在方式2DJNZR0,LP1;2位 RB8接收数据的第9位(D8)。当SM2=1,且RB8为1时,表示在多机通信情况下,接收的信息为地址帧,此时RI置1。故已接收的数据字节数为奇数时F00,不再并行置入数据就直接启动接收过程;CK为时钟脉冲输入端,在CK脉冲的上升沿作用下实现移位。若fosc