单片机串口通信小结

网上有很多讲串口通信的知识点,看了很多,今天就总结一下吧,欢迎拍砖!

1.数据传输

单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一时钟。异步串行通信通常以字符(或者字节)为单位 组成字符帧发送。字符帧由发送端一帧一帧的传送,接收端通过传输线一帧一帧地接收。

 

一、字符帧的格式

字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。

1)起始位:位于字符帧的开头,只占一位,始终是逻辑低电平,表示发送端开始发送一帧数据。

2)数据位:紧跟在起始位后,可取5、6、7、8位,低位在前,高位在后。

3)奇偶校验位:占一位,用于对字符串传送做正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇校验、偶校验和无校验,由用户根据需要确定。

4)停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符串送完毕。

 

 

异步串行通信的字符帧可以是连续的,也可以是断续的。连续的异步串行通信,是在一个字符格式的停止位之后立即发送下一个字符的起始位,开始一个新的字符的传送,即帧与帧之间是连续的。而断续的异步串行通信,则是在一帧结束之后不一定接着传送下一个字符,不传送时维持数据线的高电平状态,使数据线处于空闲。其后,新的字符传送可以在任何时候开始,并不要求整数倍的位时间。

 

2.MCS-51单片机串行通信的控制寄存器

2.1串行口控制寄存器(SCON)

SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行通信的数据控制。单片机地址为98H,位地址为98H~9FH。寄存器的内容及位地址的表示如下:

位地址

9FH

9EH

9DH

9CH

9BH

9AH

99H

98H

位符号

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

 

各位说明如下:

1)SM0、SM1——串行口工作方式选择位

其组合状态和对应工作方式为:

SM0

SM1

工作方式

0

0

方式0

0

1

方式1

1

0

方式2

1

1

方式3

2)SM2——允许方式2、3的多机通信控制位

在方式2和3中,若SM2=1 且接收到的第九位数据(RB8)为1,才将接收到的前八位数据送入接收SBUF中,并置位RI产生中断请求:否则丢弃前8位数据。若SM2=0,则不论第九位数据(RB8)为1 还是为0, 都将前八位 送入接收SBUF中,并产生中断请求。

方式0时, SM2必须置为0。

3)REN——允许接受位

REN=0 禁止接收数据

REN=1 允许接收数据

4)TB8——发送数据位8

在方式2、3中,TB8的内容是要发送的第九位数据,其值由用户通过软件设置。

5)RB8——接收数据位8

在方式2、3中,RB8是接收的第九位数据。

在方式1时,RB8是接收的停止位。

在方式0时,不使用RB8

6)TI——发送中断标志位

在方式0时,发送完第八位数据后,该位由硬件置位。

在其他方式下,于发送停止位之前,由硬件置位。

因此,TI=1表示帧发送结束,其状态即可供软件查询使用,也可请求中断。

TI 由软件置为“0”。

7)RI——接收中断标志位

在方式0时,接收完第八位数据后,该位有硬件置位。

在其他方式下,于接收到停止位之前,该位由硬件置位。

因此,RI=1表示帧接收结束,其状态即可供软件查询使用,也可请求中断。

RI由软件请“0”。

2.2电源控制寄存器(PCON)

PCON不可位寻址,字节地址为87H。它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器。其内容如下:

位序

D7

D6

D5

D4

D3

D2

D1

D0

位符号

SMOD

/

/

/

GF1

GF0

PD

IDL

与串行通信有关的只有D7位(SMOD),该位为波特率倍增位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为特定值。当系统复位时,SMOD=0.

3.MCS-51单片机串行通信工作方式

串行口 的工作方式由SM0和SM1确定,编码和功能如下表

SM0      SM1

方式

功能说明

波特率

0         0   

方式0    

移位寄存器方式 

fosc/12

0         1

方式1

8位UART

可变

1         0

方式2

9位UART

fosc/64或fosc/32

1         1

方式3

9位UART

可变

方式0和方式2 的波特率是固定的,而方式1和方式3 的波特率是可变的,有TI溢出率决定。

3.1串行工作方式0

串行口工作方式0时,串行口作同步移位寄存器使用。以RXD(P3.0)端作为数据的输入和输出端,而TXD(P3.1)提供移位的时钟脉冲。外接移位寄存器,实现数据并行输入或输出。工作方式0时,波特率为fosc/12,即一个机器周期移位一次。

3.2串口工作方式1

方式1为10位为一帧的异步串行通信方式。其帧格式为1个起始位、8个数据位和1个停止位。工作在方式1时,其波特率是可变的,波特率的计算方式为:

 波特率=2^(SMOD)/32*(定时器1的溢出率)

其中,SMOD为PCON寄存器最高位的值,其值为1或0.

当定时器1作为波特率发生器时,选用工作方式2(即自动加载定时初值方式)。选择方式2可以避免通过程序反复装入定时初值所引起的定时误差,使波特率更加稳定。假定计数初值为X,则计数溢出周期为:

溢出周期=12/fosc*(256-x)

溢出率为溢出周期的倒数。则波特率的计算公式为:

波特率=2^(SMOD)/32*(fosc)/(12*(256-x))

在实际使用中,波特率是已知的,因此需要根据波特率的计算公式求定时初值X。用户只需要把定时初值设置到定时器1,就能得到所要求的波特率。

3.3串行工作方式2

方式2为11位为一帧的异步串行通信方式。其帧格式为1个起始位、9个数据位和1个停止位。在方式2下,字符还是8个数据位,只不过增加了一个第9个数据位(D8),而且其功能由用户确定,是一个可编程位。方式2的接收过程也与方式1基本类似,所不同的只在第9数据位上,串行口把接收到的前8个数据位送入SBUF,而把第九数据位送入RB8。

方式2的波特率是固定的,而且有两种,即fosc/32和fosc/64。当SMOD为0时,波特率为fosc/64,当SMOD为1的时候,波特率为fosc/32。

3.4串行工作方式3

方式3同方式2几乎完全一样,只不过方式3 的波特率是可变的,由用户来决定。其波特率的确定方式同方式1。

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值