1、 实际应用中,计算机的实际应用中,计算机的CPUCPU与外部设备之间常常要进与外部设备之间常常要进行信息的交换,计算机之间也需要交换信息,所有这些行信息的交换,计算机之间也需要交换信息,所有这些信息的交换均称为信息的交换均称为“通信通信”。通信的基本方式可分为通信的基本方式可分为并行通信并行通信和和串行通信串行通信两种。两种。并行通信,是指数据的各位同时进行传送的方式。其特并行通信,是指数据的各位同时进行传送的方式。其特点是传输速度快,但当距离较远,位数又多时导致了通点是传输速度快,但当距离较远,位数又多时导致了通信线路复杂且成本高。串行通信,是指数据一位一位的信线路复杂且成本高。串行通信,是
2、指数据一位一位的顺序传送的通信方式。其特点是通信线路简单,只要一顺序传送的通信方式。其特点是通信线路简单,只要一对传输线就可以实现通信,从而大大的降低了成本,特对传输线就可以实现通信,从而大大的降低了成本,特别适用于远距离通信,但传送速度慢。别适用于远距离通信,但传送速度慢。D1D2D3D4D5D6D7D01控制(选通)状态1011111000000000T计算机计算机或外设8T计算机计算机或外设a)b)按照串行数据的同步方式,按照串行数据的同步方式,串行通信本身又分为串行通信本身又分为异步传送异步传送和和同步传送同步传送两种两种基本方式。基本方式。(1)(1)异步传送异步传送 在异步传送中,
3、每一个字符要用在异步传送中,每一个字符要用起始位起始位和和停止位停止位作为字符开始和结束作为字符开始和结束的标志,它是以字符为单位一个个的发送和接收的。的标志,它是以字符为单位一个个的发送和接收的。异步传送时,每个字符的组成格式如下:首先是一个起始位表示字符异步传送时,每个字符的组成格式如下:首先是一个起始位表示字符的开始;后面紧跟着的是字符的数据字,数据字可以是的开始;后面紧跟着的是字符的数据字,数据字可以是5 5,6 6,7 7或或8 8位数据,位数据,在数据字中可根据需要加入奇偶校验位;最后是停止位,其长度可以是一在数据字中可根据需要加入奇偶校验位;最后是停止位,其长度可以是一位,一位半
4、或两位。所以,串行传送的数据字节加上成帧信号起始位和停位,一位半或两位。所以,串行传送的数据字节加上成帧信号起始位和停止位就形成一个字符串行传送的帧。起始位用逻辑止位就形成一个字符串行传送的帧。起始位用逻辑“0”“0”低电平表示,停低电平表示,停止位用逻辑止位用逻辑“1”“1”高电平表示。图(高电平表示。图(a a)所示为数据字为所示为数据字为7 7位的位的ASCIIASCII码,第码,第8 8位是奇偶校验位。加上起始位、停止位,一个字符由位是奇偶校验位。加上起始位、停止位,一个字符由1010位组成。这样形位组成。这样形成帧信号后,字符便可以一个接一个的传送了。成帧信号后,字符便可以一个接一个
5、的传送了。在异步传送中,在异步传送中,字符间隔不固定字符间隔不固定,在停止位后可以加空闲位,空闲位,在停止位后可以加空闲位,空闲位用高电平表示,用于等待发送。这样,接收和发送可以随时的或间断的进用高电平表示,用于等待发送。这样,接收和发送可以随时的或间断的进行,而不受时间的限制。图(行,而不受时间的限制。图(b b)为有空闲位的情况。为有空闲位的情况。0/10/1100/110/10/10/10/10/10/10/10/10/10/10/10低位高位第 n 个字符第 n-1 个字符第 n1 个字符7位数据停止位奇偶校验起始位奇偶校验停止位起始位7位数据下降沿指出下一个字符的开始a)00/10/
6、10/10/10/10/10/10/10/10/101111第 n 个字符起始位低位高位奇偶校验停止位空闲位下降沿指出下一个字符的开始第 n1 个字符位的时间长度取决于波特率b)起始位(2)(2)同步传送同步传送 所谓同步传送就是去掉异步传送时每个字符的起始位和停止位的所谓同步传送就是去掉异步传送时每个字符的起始位和停止位的成帧标志信号,仅在数据块开始处用同步字符来指示。如下图所示。成帧标志信号,仅在数据块开始处用同步字符来指示。如下图所示。同步传送的有效数据位传送速率高于异步传送,可达同步传送的有效数据位传送速率高于异步传送,可达5050千波特。其缺千波特。其缺点是硬件设备较为复杂,因为它要
7、求要有时钟来实现发送端和接收端点是硬件设备较为复杂,因为它要求要有时钟来实现发送端和接收端之间的严格同步,而且对时钟脉冲信号的相位一致性还要求非常严格,之间的严格同步,而且对时钟脉冲信号的相位一致性还要求非常严格,为此通常还要采用为此通常还要采用“锁相器锁相器”等措施来保证。等措施来保证。SYN 字符#1SYN 字符#2数据 在异步数据传送中,在异步数据传送中,CPUCPU与外设之间事先必须约好两项事宜:与外设之间事先必须约好两项事宜:第一、字符格式第一、字符格式。双方要约好字符的编码形式、奇偶校验形式、。双方要约好字符的编码形式、奇偶校验形式、以及起始位和停止位的规定。以及起始位和停止位的规
8、定。第二、波特率(第二、波特率(Baud rateBaud rate)。波特率是衡量数据传送速率的指标,波特率是衡量数据传送速率的指标,它要求发送站和接收站都要以相同的数据传送速率工作。它要求发送站和接收站都要以相同的数据传送速率工作。2 2按照数据的传送方向分类按照数据的传送方向分类 1 1)点对点传输)点对点传输 一般情况下,串行数据传送是在两个通信端之间进行的。其数据一般情况下,串行数据传送是在两个通信端之间进行的。其数据传送的方式有如图所示的几种情况。传送的方式有如图所示的几种情况。图(图(a a)为单工通信方式。为单工通信方式。A A端为发送站,端为发送站,B B端为接收站,数据仅能
9、端为接收站,数据仅能从从A A站发至站发至B B站。站。图(图(b b)为半双工通信方式。数据可以从为半双工通信方式。数据可以从A A发送到发送到B B,也可以由也可以由B B发送发送到到A A。不过同一时间只能作一个方向的传送,其传送方式由收发控制开不过同一时间只能作一个方向的传送,其传送方式由收发控制开关关K K来控制。来控制。图(图(c c)为全双工通信方式。每个站(为全双工通信方式。每个站(A A、B B)既可同时发送,又可既可同时发送,又可同时接收。同时接收。ABKKABABa)b)c)2 2)主从多终端通信方式)主从多终端通信方式 A A站可以向多个终端(站可以向多个终端(B B、
10、C C、DD)发出信息。在发出信息。在A A站允许的条件站允许的条件下,可以控制管理下,可以控制管理B B、C C、DD等站在不同的时间向等站在不同的时间向A A站发出信息。根据站发出信息。根据数据传送的方向又可分为多终端半双工通信和多终端全双工通信。这数据传送的方向又可分为多终端半双工通信和多终端全双工通信。这种多终端通信方式常用于主种多终端通信方式常用于主从计算机系统通信中。从计算机系统通信中。ADCBADCBa)b)8.1.2 8.1.2 通用的异步接收器通用的异步接收器/发送器发送器UARTUART 在串行传送中,数据是一位一位按顺序进行的,而计算机内部的在串行传送中,数据是一位一位按
11、顺序进行的,而计算机内部的数据是并行的。因此当计算机向外发送数据时,必须将并行的数据转数据是并行的。因此当计算机向外发送数据时,必须将并行的数据转换为串行的数据再行传送。反之,又必须将串行数据转换为并行数据换为串行的数据再行传送。反之,又必须将串行数据转换为并行数据输入计算机中。上述并输入计算机中。上述并串或串串或串并的转换既可以用通用的异步接收并的转换既可以用通用的异步接收器器/发送器实现。发送器实现。通用的异步接收器通用的异步接收器/发送器,简称发送器,简称UARTUART(Universal Asynchronous Universal Asynchronous Receiver/Tra
12、nsmitterReceiver/Transmitter),),是串行接口的核心部件,其结构如图所示,是串行接口的核心部件,其结构如图所示,它既能发送,由并行它既能发送,由并行串行输出;又能接收,由串行串行输出;又能接收,由串行并行输入。对并行输入。对每一方来说都是一个双缓冲器结构。当每一方来说都是一个双缓冲器结构。当UARTUART接收数据时,串行数据先接收数据时,串行数据先经经RXDRXD端(端(Receiver DataReceiver Data)进入移位寄存器,再经移位寄存器输出并进入移位寄存器,再经移位寄存器输出并行数据到缓冲器,最后通过数据总线送到行数据到缓冲器,最后通过数据总线送
13、到CPUCPU;当当UARTUART发送信息时,先发送信息时,先由由CPUCPU经数据总线将并行数据送给缓冲器,再由并行缓冲器送给一位寄经数据总线将并行数据送给缓冲器,再由并行缓冲器送给一位寄存器,最后逐位由存器,最后逐位由TXDTXD(Transmitter DataTransmitter Data)端输出。所有这些工作都端输出。所有这些工作都是在时钟信号和其他控制信号作用下完成的。是在时钟信号和其他控制信号作用下完成的。WRRESETCONTROLTXC奇偶错溢出错帧错RXCTBEDATA BusRXDTXDRDCSINOUTPEOEFE接收移位寄存器接收数据缓冲器发送缓冲器空发送移位寄存
14、器发送数据缓冲器INT STC12C5A60S2单片机具有单片机具有2个采用个采用UART工作方式工作方式的全双工串行通信接口(串口的全双工串行通信接口(串口1和串口和串口2)。每个串口由)。每个串口由2个个数据缓冲器、数据缓冲器、1个移位寄存器、个移位寄存器、1个串行控制寄存器和一个个串行控制寄存器和一个波特率发生器等组成。每个串口的数据缓冲器由串行接收波特率发生器等组成。每个串口的数据缓冲器由串行接收缓冲器和发送缓冲器构成,它们在物理上是独立的,既可缓冲器和发送缓冲器构成,它们在物理上是独立的,既可以接收数据也可以发送数据,还可以同时发送和接收数据。以接收数据也可以发送数据,还可以同时发送
15、和接收数据。接收缓冲器只能读出,不能写入,而发送缓冲器则只能写接收缓冲器只能读出,不能写入,而发送缓冲器则只能写入,不能读出。它们共用一个地址号。入,不能读出。它们共用一个地址号。STC12C5A60S2的的串行口既可以用于串行异步通信,也可以构成同步移位寄串行口既可以用于串行异步通信,也可以构成同步移位寄存器。如果在串行口的输入存器。如果在串行口的输入/输出引脚上加上电平转换器,输出引脚上加上电平转换器,可以方便地构成标准的可以方便地构成标准的RS-232接口。串口接口。串口1与传统与传统8051单片单片机的串口完全兼容。串口机的串口完全兼容。串口2的结构、工作原理与串口的结构、工作原理与串
16、口1类似。类似。与串行接口与串行接口1相关的寄存器有相关的寄存器有SCON、PCON、AUXR、SBUF、TMOD、TL1、TH1、TCON、IE、IP、IPH、SADEN和和SADDR。与串行接口与串行接口2相关的寄存器有:相关的寄存器有:S2CON、S2BUF、BRT、AUXR、IE2、IP2、IPH2和和AUXR1。D7D7D 6D 6D 5D 5D 4D 4D 3D 3D 2D 2D 1D 1D 0D 0SMSM0 0/FE/FESMSM1 1SMSM2 2RENRENTBTB8 8RBRB8 8TITIRIRI SM0/FE:PCON寄存器中的寄存器中的SMOD0位为位为1时,该位用
17、于帧错误检时,该位用于帧错误检测,当检测到一个无效停止位时,通过测,当检测到一个无效停止位时,通过UART接收器设置该位。它必须由接收器设置该位。它必须由软件清零。软件清零。PCON寄存器中的寄存器中的SMOD0为为0时,该位和时,该位和SM1一起指定串行通一起指定串行通信的工作方式信的工作方式1.串口串口1控制寄存器控制寄存器SCON SCON(地址为(地址为98H,复位值为,复位值为00H)用于确定串行通道的操)用于确定串行通道的操作方式和控制串行通道的某些功能。也可用于发送和接收第九个数作方式和控制串行通道的某些功能。也可用于发送和接收第九个数据位(据位(TB8、RB8),),并设有接收
18、和发送中断标志(并设有接收和发送中断标志(RI及及TI)位。位。SCON各位的意义如下:各位的意义如下:SMSM0 0/FE/FESMSM1 1方式方式说明说明波特率波特率0 00 00 0移位寄存器工作方式移位寄存器工作方式f fOSCOSC/12/120 01 11 18 8位数据位的位数据位的UARTUART工作方式工作方式可变可变1 10 02 29 9位数据位的位数据位的UARTUART工作方式工作方式f fOSCOSC/64/64,f fOSCOSC/32/321 11 13 39 9位数据位的位数据位的UARTUART工作方式工作方式可变可变 SM2:在方式在方式2和方式和方式3
19、时,如时,如SM2=1,只有在接收数据第只有在接收数据第9位为位为1时才时才能激发中断标志(能激发中断标志(RI=1)。在方式。在方式1时,如时,如SM2=1,则只有在接收到有则只有在接收到有效停止位时才能激发中断标志(效停止位时才能激发中断标志(RI=1)。在方式。在方式0时,时,SM2应为应为0。REN:允许串行允许串行I/O口接收控制位。用软件置口接收控制位。用软件置REN=1时为允许接收状时为允许接收状态,可启动串行口的接收器态,可启动串行口的接收器RXD,开始接收数据。用软件复位(开始接收数据。用软件复位(REN=0)时,为禁止接收状态。时,为禁止接收状态。TB8:在方式在方式2和方
20、式和方式3时,它是要发生的第九个数据位,按需要由软时,它是要发生的第九个数据位,按需要由软件进行置位或清零。例如可用作数据的奇偶校验位,或在多机通信中表件进行置位或清零。例如可用作数据的奇偶校验位,或在多机通信中表示是地址帧示是地址帧/数据帧标志位(数据帧标志位(TB8=1/0)。)。RB8:在方式在方式2和方式和方式3时,它是接收到的第九位数据,作为奇偶位或时,它是接收到的第九位数据,作为奇偶位或地址帧地址帧/数据帧标志位。在方式数据帧标志位。在方式1时,若时,若SM2=0,则则RB8是接收到的停止是接收到的停止位,在方式位,在方式0时,不使用时,不使用RB8。TI TI:发生中断标志位。在
21、方式发生中断标志位。在方式0 0时,当串行发送数据字第八位结束时,时,当串行发送数据字第八位结束时,由内部硬件置位(由内部硬件置位(TI=1TI=1),),向向CPUCPU申请发生中断。申请发生中断。CPUCPU响应中断后,响应中断后,必须用必须用软件清零软件清零,取消此中断标志。在其他方式时,它在停止位开始发送时由硬,取消此中断标志。在其他方式时,它在停止位开始发送时由硬件置位。同样,必须用软件使其复位。件置位。同样,必须用软件使其复位。RIRI:接收中断标志位。在方式接收中断标志位。在方式0 0时,串行接收到第八位结束时由内部硬时,串行接收到第八位结束时由内部硬件置位。在其他方式中,它在接
22、收到停止位的中间时刻由硬件置位,也件置位。在其他方式中,它在接收到停止位的中间时刻由硬件置位,也必必须用软件来复位须用软件来复位。当一帧数据发送完成时,发送中断标志当一帧数据发送完成时,发送中断标志TI被置位,接着发生串口中断,被置位,接着发生串口中断,进入串口中断服务程序。但进入串口中断服务程序。但CPU事先并不能分辨是事先并不能分辨是TI还是还是RI的中断请求,的中断请求,因此,必须在中断服务程序中用位测试指令加以判别。两个中断标志位因此,必须在中断服务程序中用位测试指令加以判别。两个中断标志位TI及及RI均不能自动复位,必须在中断服务程序中使用清中断标志位指令,撤均不能自动复位,必须在中
23、断服务程序中使用清中断标志位指令,撤销中断请求状态,否则原先的中断标志位状态又将表示有中断请求。销中断请求状态,否则原先的中断标志位状态又将表示有中断请求。2 2.串口串口2控制寄存器控制寄存器S2CON 寄存器寄存器S2CON(地址为(地址为9AH,复位值为,复位值为00H)用于确定串口)用于确定串口2的的操作方式和控制串口操作方式和控制串口2的某些功能,也可用于发送和接收第的某些功能,也可用于发送和接收第9个数据位个数据位(S2TB8、S2RB8),并设有接收和发送中断标志(),并设有接收和发送中断标志(S2RI及及S2TI)位)位。S2CON各位的意义如下:各位的意义如下:位号位号D7D
24、 6D 5D 4D 3D 2D 1D 0位名称位名称S2SM0S2SM1S2SM2S2RENS2TB8S2RB8S2TIS2RI 寄存器寄存器S2CON的各个位与寄存器的各个位与寄存器SCON的各个位含义和功能都类似,的各个位含义和功能都类似,读者可以进行对比学习,在此,不再赘述。读者可以进行对比学习,在此,不再赘述。3.掉电控制寄存器掉电控制寄存器PCON PCON(地址为(地址为87H,复位值为,复位值为30H)中的)中的SMOD用于设置方式用于设置方式1、方式、方式2和方式和方式3的波特率是否加倍。各位的定义如下:的波特率是否加倍。各位的定义如下:位号位号D7D6D5D4D3D2D1D0
25、位名称位名称SMODSMOD0LVDFPOFGF1GF0PDIDL其中,与串行通信相关的位是其中,与串行通信相关的位是SMOD和和SMOD0。SMOD:串行口波特率系数控制位。复位时,:串行口波特率系数控制位。复位时,SMOD=0。1:使方式:使方式1、方式、方式2和方式和方式3的波特率加倍。的波特率加倍。0:各工作方式的波特率不加倍。:各工作方式的波特率不加倍。SMOD0:帧错误检测有效控制。复位时,:帧错误检测有效控制。复位时,SMOD0=0。1:SCON寄存器中的寄存器中的SM0/FE位用于位用于FE(帧错误检测)功能。(帧错误检测)功能。0:SCON寄存器中的寄存器中的SM0/FE位用
26、于位用于SM0功能,和功能,和SM1一起指定一起指定串行通信的工作方式。串行通信的工作方式。4辅助寄存器辅助寄存器AUXR 辅助寄存器辅助寄存器AUXR(地址为(地址为8EH,复位值为,复位值为00H)各位的定义如下:)各位的定义如下:T0 x12和和T1x12用于设置定时器用于设置定时器0和定时器和定时器1的速度。详见的速度。详见“第第8章章 定时定时/计数器与可编程计数器阵列计数器与可编程计数器阵列”一章。一章。EXTRAM用于设置是否允许用于设置是否允许使用内部扩展的使用内部扩展的1024字节扩展字节扩展RAM。1)UART_M0 x6:串行口模式:串行口模式0的通信速度设置位。的通信速
27、度设置位。0:UART串口模式串口模式0的速度是传统的速度是传统12T的的8051速度,速度,12分频。分频。1:UART串口模式串口模式0的速度是传统的速度是传统12T的的8051的的6倍,倍,2分频。分频。2)BRTR:独立波特率发生器运行控制位。:独立波特率发生器运行控制位。0:不允许独立波特率发生器运行。:不允许独立波特率发生器运行。1:允许独立波特率发生器运行。:允许独立波特率发生器运行。3)S2SMOD:UART2的波特率加倍控制位。的波特率加倍控制位。0:UART2的波特率不加倍。的波特率不加倍。1:UART2的波特率加倍。的波特率加倍。位号位号D7D6D5D4D3D2D1D0位
28、名称位名称T0 x12T1x12UART_M0 x6BRTRS2SMODBRTx12EXTRAMS1BRS4)BRTx12:独立波特率发生器计数控制位。:独立波特率发生器计数控制位。0:独立波特率发生器每:独立波特率发生器每12个时钟计数一次。个时钟计数一次。1:独立波特率发生器每:独立波特率发生器每1个时钟计数一次。个时钟计数一次。5)S1BRS:串口:串口1波特率发生器选择位。波特率发生器选择位。0:选择定时器:选择定时器1作为串口作为串口1波特率发生器。波特率发生器。1:选择独立波特率发生器作为串口:选择独立波特率发生器作为串口1的波特率发生器,此时定时的波特率发生器,此时定时器器1得到
29、释放,可以作为独立定时器使用。得到释放,可以作为独立定时器使用。注意:对于具有串口注意:对于具有串口2的的STC12C5A60S2单片机,串口单片机,串口2只能使用独只能使用独立波特率发生器作为波特率发生器,不能够选择定时器立波特率发生器作为波特率发生器,不能够选择定时器1作为波特率发生作为波特率发生器;串口器;串口1可以选择定时器可以选择定时器1作为波特率发生器,也可以选择独立波特率作为波特率发生器,也可以选择独立波特率发生器作为波特率发生器。发生器作为波特率发生器。5独立波特率发生器寄存器独立波特率发生器寄存器BRT 独立波特率发生器寄存器独立波特率发生器寄存器BRT(地址为(地址为9CH
30、,复位值为,复位值为00H)用于)用于保存重装时间常数。保存重装时间常数。6从机地址控制寄存器从机地址控制寄存器 为了方便多机通信,为了方便多机通信,STC12C5A60S2单片机设置了从机地址控制寄存器单片机设置了从机地址控制寄存器SADEN和和SADDR。其中,。其中,SADEN是从机地址掩模寄存器(地址为是从机地址掩模寄存器(地址为B9H,复,复位值为位值为00H),),SADDR是从机地址寄存器(地址为是从机地址寄存器(地址为A9H,复位值为,复位值为00H)。)。7数据缓冲器数据缓冲器 数据缓冲器用于保存要发送的数据或者从串口接收到的数据。串口数据缓冲器用于保存要发送的数据或者从串口
31、接收到的数据。串口1的数的数据缓冲器是据缓冲器是SBUF,串口,串口2的数据缓冲器是的数据缓冲器是S2BUF。对于串口对于串口1,当一个字符接收完毕,移位寄存器中的数据字节装入串行接,当一个字符接收完毕,移位寄存器中的数据字节装入串行接收数据缓冲器收数据缓冲器SBUF中,其第中,其第9位则装入位则装入SCON寄存器的寄存器的RB8位。如果位。如果SM2使得使得已接收的数据无效,则已接收的数据无效,则RB8位和位和SBUF缓冲器中的内容不变。缓冲器中的内容不变。对于串口对于串口2,当一个字符接收完毕,移位寄存器中的数据字节装入串行接,当一个字符接收完毕,移位寄存器中的数据字节装入串行接收数据缓冲
32、器收数据缓冲器S2BUF中,其第中,其第9位则装入位则装入S2CON寄存器的寄存器的S2RB8位。如果位。如果S2SM2使得已接收的数据无效,则使得已接收的数据无效,则S2RB8位和位和S2BUF缓冲器中的内容不变。缓冲器中的内容不变。无论对于串口无论对于串口1还是串口还是串口2,发送缓冲器只能写入,不能读出;接收缓冲,发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。因此,串口器只能读出,不能写入。因此,串口1的两个缓冲器共用一个地址号(的两个缓冲器共用一个地址号(99H),串口,串口2的两个缓冲器共用一个地址号(的两个缓冲器共用一个地址号(9BH)。)。(4 4)串行收发寄存器)
33、串行收发寄存器 SBUFSBUF(字节地址字节地址9999H H,没有位寻址)没有位寻址)在所有的串行方式中,在写在所有的串行方式中,在写SBUFSBUF信号的控制下,将其数据装入移信号的控制下,将其数据装入移位寄存器,前面位寄存器,前面8 8位为数据字节,其最低位就是移位寄存器的移位输出位为数据字节,其最低位就是移位寄存器的移位输出位。根据不同的工作方式会将位。根据不同的工作方式会将“1”“1”或或TBTB8 8的值装入移位寄存器的第九的值装入移位寄存器的第九位,并进行发送。位,并进行发送。当一个字符接收完毕,移位寄存器中的数据字节装入串行接收数当一个字符接收完毕,移位寄存器中的数据字节装入
34、串行接收数据缓冲器据缓冲器SBUFSBUF中,其第九位则装入中,其第九位则装入SCONSCON寄存器的寄存器的RB8RB8位。如果位。如果SM2SM2使得使得已接收的数据无效,则已接收的数据无效,则RBRB8 8位和位和SBUFSBUF缓冲器中的内容不变。缓冲器中的内容不变。发送缓冲器只能写入不能读出,而接收缓冲器只能读出,不能写发送缓冲器只能写入不能读出,而接收缓冲器只能读出,不能写入。因而两个缓冲器可共有一个地址号(入。因而两个缓冲器可共有一个地址号(9999H H)。)。1 1方式方式0 0移位寄存器方式。移位寄存器方式。(1)串口)串口1的工作方式的工作方式0 串行口输出端可直接与移位
35、寄存器相连,也可用作扩展串行口输出端可直接与移位寄存器相连,也可用作扩展I/OI/O口或外接同步输入口或外接同步输入输出设备。输出设备。发送过程发送过程:当:当CPUCPU将数据写入到发送缓冲区将数据写入到发送缓冲区SBUFSBUF时,串行口即把时,串行口即把8 8位数据以位数据以Fosc/12Fosc/12的波特率由的波特率由RXDRXD引脚输出,同时由引脚输出,同时由TXDTXD引脚输出同步脉冲。字符发送完引脚输出同步脉冲。字符发送完毕,置中断标志毕,置中断标志TITI为为1 1。接收过程接收过程:控制字除方式:控制字除方式0 0外,还应置允许接收控制位外,还应置允许接收控制位REN=1R
36、EN=1。清除清除RIRI中断中断标志。接收器启动后标志。接收器启动后RXDRXD为数据输入端,为数据输入端,TXDTXD为同步信号输出端。接收器以为同步信号输出端。接收器以Fosc/12Fosc/12波特率采样波特率采样RXDRXD引脚输入的数据信息。当接收完引脚输入的数据信息。当接收完8 8位数据时又重新置位数据时又重新置RI=1RI=1。方式方式0 0工作时,必须使工作时,必须使SCONSCON控制字的控制字的SM2SM2位(多机通信控制位)为位(多机通信控制位)为0 0。由于。由于波特率固定,无须用定时器提供。但以中断方式传送数据时,波特率固定,无须用定时器提供。但以中断方式传送数据时
37、,CPUCPU响应中断并响应中断并不会自动清除不会自动清除TITI、RIRI标志,所以在中断服务程序中必须由指令清标志,所以在中断服务程序中必须由指令清0 0。例如。例如CLR CLR TITI及及CLR RICLR RI指令。指令。(2)串口)串口2的工作方式的工作方式0串行数据通过串行数据通过RXD2/P1.2(RXD2/P4.2)接收和发送,)接收和发送,TXD2/P1.3(TXD2/P4.3)输出同步移位时钟,发送接收的是输出同步移位时钟,发送接收的是8位数据,低位在先,波特率固定在位数据,低位在先,波特率固定在Fosc/12。ALE写入SBUF(S6 P2)发送D0D1D2D3D4D
38、5D6D7S3P1 S6P1 TXD(移位时钟)移位TIRXD(数据输出)a)S1S6S1S6S1S6S1S6 S1S6S1S6S1S6S1S6 S1S6S1S6S6P2写入SBUF (S6 P2)接收D0D1D2D3D4D5D6D7TXD(移位时钟)RXD(数据输入)b)RI移位方式方式0 0工作工作方式波形图方式波形图2 2其他方式其他方式UARTUART方式方式 (1)串口)串口1的的UART方式方式 发送过程发送过程:CPUCPU执行数据写入发送缓冲区执行数据写入发送缓冲区SBUFSBUF的指令即可启动发送(如的指令即可启动发送(如MOV SBUF,AMOV SBUF,A)。)。串行口
39、内自动将发送缓冲区中内容送入发送移位寄存器。发串行口内自动将发送缓冲区中内容送入发送移位寄存器。发送移位寄存器先发一个起始位,接着按程序设定每个字符的代码,先低位后送移位寄存器先发一个起始位,接着按程序设定每个字符的代码,先低位后高位。数据字加上奇偶校验位或可控位(方式高位。数据字加上奇偶校验位或可控位(方式2 2,3 3中即为程序设定的中即为程序设定的TBTB8 8位位的值),再发停止位,从而完成一帧的发送。串行数据均由的值),再发停止位,从而完成一帧的发送。串行数据均由TXDTXD端输出,发端输出,发送完毕将中断标志位置送完毕将中断标志位置1 1,以供查询及向,以供查询及向CPUCPU申请
40、中断之用。申请中断之用。接收过程接收过程:接收数据均由:接收数据均由RXDRXD输入,串行口以所选定的波特率的输入,串行口以所选定的波特率的1616倍速倍速率采样率采样RXDRXD端状态。当采样的端状态。当采样的RXDRXD端电平由端电平由1 1到到0 0的跳变时,就启动接收器。串的跳变时,就启动接收器。串行口按程序审定的格式接收一帧代码,并把此码的数据位拼成并行码送入接行口按程序审定的格式接收一帧代码,并把此码的数据位拼成并行码送入接收缓冲寄存器中(在方式收缓冲寄存器中(在方式1 1时,把停止位:方式时,把停止位:方式2 2、3 3时把程控的第九位数据时把程控的第九位数据都送入都送入RB8R
41、B8),),等待等待CPUCPU取走。为保证可靠无误,对每一数据位要进行连续取走。为保证可靠无误,对每一数据位要进行连续3 3次采样,接收的值取次采样,接收的值取3 3次采样中至少相同的二次的值。接收完毕,置接收中次采样中至少相同的二次的值。接收完毕,置接收中断标志断标志RI=1RI=1。CPUCPU的响应中断后必须在中断服务程序中使的响应中断后必须在中断服务程序中使RIRI清零。清零。写入SBUF数据S1P1TI移位TXD发送发送起始位D0D1D2D3D4D5D6D7停止位TX时钟D0D1D2D3D4D5D6D7起始位停止位RI移位位检测器采样时间RX接收方式方式1工作方式波形图工作方式波形
42、图写入SBUF数据S1P1TI移位TXD发送发送起始位TX时钟RI移位位检测器采样时间RX接收D0D7停止位TB8D0D7停止位RB8起始位RXD停止位方式方式2、3工作方式波形图工作方式波形图 方式方式1 1与方式与方式2 2、3 3的区别之一是:方式的区别之一是:方式1 1其数据字是其数据字是8 8位异步通信位异步通信接口,串行口发送接口,串行口发送/接收收共接收收共1010位信息,第位信息,第0 0位为起始位位为起始位“0”“0”,1818位是数据位,最后是停止位位是数据位,最后是停止位“1”“1”;方式;方式2 2、3 3其数据字为其数据字为9 9位的异步位的异步通信接口。通信接口。1
43、 1位起始位位起始位“0”“0”,8 8位数据位,第位数据位,第9 9位是可程控位位是可程控位“1”“1”或或“0”“0”,最后是停止位,最后是停止位“1”“1”,共有,共有1111位信息。位信息。方式方式1 1与方式与方式2 2、3 3的区别之二是:方式的区别之二是:方式1 1、3 3的波特率是可变的,的波特率是可变的,其波特率取决于定时器其波特率取决于定时器1 1的溢出率和特殊功能寄存器的溢出率和特殊功能寄存器PCONPCON中的中的SMODSMOD位位的值,即的值,即 工作方式工作方式1 1、3 3的波特率的波特率=2=2SMODSMOD(定时器定时器1 1的溢出率)的溢出率)/32 /
44、32 而工作方式而工作方式2 2的波特率的波特率=2=2SMODSMOD(振荡器频率)振荡器频率)/64/64 显然,方式显然,方式2 2的波特率变化范围比方式的波特率变化范围比方式1 1、3 3小,这也是方式小,这也是方式2 2和和方式方式3 3的唯一区别。的唯一区别。TB8TB8可用于多机通信或作为奇偶校验位使用。若以可用于多机通信或作为奇偶校验位使用。若以TB8TB8位作为奇位作为奇偶校验位,处理方法为数据写入偶校验位,处理方法为数据写入SBUFSBUF之前,先将数据的奇偶位写入之前,先将数据的奇偶位写入TB8TB8(设工作寄存器区设工作寄存器区2 2的的R0R0作为发送数据区地址指针)
45、。作为发送数据区地址指针)。T RIPTI:PUSHRIPTI:PUSHPSW ;PSW ;保护现场保护现场 PUSH PUSHACCACC SETB SETBPSW.4PSW.4 CLR CLRPSW.3PSW.3 CLR CLRTI ;TI ;发送中断标志发送中断标志TITI清零清零 MOV MOVA,R0 ;A,R0 ;取数据取数据 MOV MOVC,PC,P MOV MOVTB8,CTB8,C MOV MOVSBUF,A ;SBUF,A ;数据写入到发送缓冲器,启动发送器数据写入到发送缓冲器,启动发送器 INC INCR0 ;R0 ;数据指针加数据指针加1 1 POP POPACC A
46、CC POP POPPSW ;PSW ;恢复现场恢复现场 RETI RETI 对输入方式而言,除选不同的方式控制外,均应使对输入方式而言,除选不同的方式控制外,均应使REN=1REN=1,允许串行接收。只有在最后的移位脉冲产生并同允许串行接收。只有在最后的移位脉冲产生并同时满足下列二个条件时,才会产生接收数据装入时满足下列二个条件时,才会产生接收数据装入SBUFSBUF和和RB8RB8及置位及置位RIRI的信号:的信号:对方式对方式1 1对方式对方式2 2、3 31 1)RIRI0 0 1 1)RI=0RI=02 2)SM2=0SM2=0或接收到的停止位或接收到的停止位1 12 2)SM2=0
47、SM2=0或接收到的第或接收到的第九个数据九个数据1 1 如果不满足上述条件,接收到的信号将不可避免的丢如果不满足上述条件,接收到的信号将不可避免的丢失。由此可见,中断标志必须由用户在中断服务程序中设失。由此可见,中断标志必须由用户在中断服务程序中设置清置清“0”“0”指令。否则,将有可能产生另一次中断而造成指令。否则,将有可能产生另一次中断而造成混乱并影响后序数据的接收。混乱并影响后序数据的接收。T (2)串口)串口2的的UART方式方式 1)模式)模式1:10位数据通过位数据通过TXD2/P1.3(TXD2/P4.3)发送,通过发送,通过RXD2/P1.2(RXD2/P4.2)接收。一帧数
48、据包含接收。一帧数据包含一个起始位一个起始位(0),8个数据位和一个停止位个数据位和一个停止位(1)。接收时,停。接收时,停止位进入特殊功能寄存器止位进入特殊功能寄存器S2CON的的S2RB8位。波特率由位。波特率由独立波特率发生器独立波特率发生器BRT的溢出率决定。的溢出率决定。2)模式)模式2:11位数据通过位数据通过TXD2/P1.3(TXD2/P4.3)发送,通过发送,通过RXD2/P1.2(RXD2/P4.2)接收。一帧数据包)接收。一帧数据包含一个起始位含一个起始位(0),8个数据位,一个可编程的第个数据位,一个可编程的第9位和一个位和一个停止位停止位(1)。发送时,第。发送时,第
49、9位数据由特殊功能寄存器位数据由特殊功能寄存器S2CON的的S2TB8位确定;接收时,第位确定;接收时,第9位数据进入特殊功能寄存位数据进入特殊功能寄存器器S2CON的的S2RB8位。波特率为:位。波特率为:Fosc/32或者或者Fosc/64。3)模式)模式3:波特率的确定方法与模式:波特率的确定方法与模式1相同,数据的相同,数据的传输模式和模式传输模式和模式2相同。相同。下面以使用串口下面以使用串口1为例说明多机通信的过程。为例说明多机通信的过程。串行口控制寄存器串行口控制寄存器SCONSCON中的中的SM2SM2位为方式位为方式2 2和方式和方式3 3工作时进行工作时进行多机通信的控制位
50、。这种多机通信方式一般为一台主机:多多机通信的控制位。这种多机通信方式一般为一台主机:多台从机系统;主机发送信息可被各从机接收,而从机只能对台从机系统;主机发送信息可被各从机接收,而从机只能对主机发送信息。而从机间互相不能直接通信。主机发送信息。而从机间互相不能直接通信。TXDRXD主机TXD0#8051TXD18051TXD28051RXDRXDRXD#多机系统中使用两类信息,一类是地址信息,用于选择从机;另多机系统中使用两类信息,一类是地址信息,用于选择从机;另一类是要传送的数据信息。在通信中使用第一类是要传送的数据信息。在通信中使用第9 9位区分两类信息。位区分两类信息。地址帧:第地址帧