您的位置:首页 > 其它

【51单片机学习过程记录】13中断 之串口中断应用前的了解过程(较详细)

2016-10-20 21:57 471 查看
声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的真理。我的目的是学习和有可能成为可以向别人分享的经验,因此有错误我会虚心接受,并认真改正。

1大概了解串口通讯

(出自《零开始学单片机技术》刘建清主编)



串行通信分:同步通信  和  异步通信。

同步通信:数据是连续传送的,即数据以数据块为单位传送。

异步通信:(接下来主要学习的是异步)数据不是连续传送的,它以字符为单位进行传送,各个字符是可以连续传送,也可以是间断传送,每个被传送字节数据由4部分组成,起始位、数据位、校验位和停止位,这4部分在通信中称为一帧。



起始位为0,8位数据位,奇偶校验位,和停止位1。

串口通信传输方向分:

a单工通信

b半双工通信

c全双工通信

(OK这些要详细描述,有点多,需要可以百度)

2串行口的基本结构

串行口电路,称为 通用异步收发器UART,原理上,UART 包括了发送器电路,接收器电路 和控制电路。

80c51的UART集成其中,是一个全双工的串行口。



UART中,包含两个串行口缓冲寄存器 SBUF, 一个是发送寄存器,一个是接收寄存器,以便能以全双工的方式进行通信。 它们都是可寻址的寄存器,但是因为发送和接收不能同时进行,所以给这两个寄存器赋以同一地址99H。

3串行口通信控制寄存器



IE中的串口中断使能。



串行口控制寄存器

SM0 SM1是工作模式选择位,分别有工作方式0、1、2、3。

SM2
多机通信控制位

        在工作模式0时,SM2必须为0;

SM2=1时,无论是工作模式1 或者2/3,接收到的第9位数据位(即RB8)必须是1,RI才会置1,从而申请中断,若RB8为0,则RI为0,不申请中断。

SM2=0时,无论是工作模式1 或者2/3,接收到的第9位数据位(即RB8)不管是1或者是0,都会装入SBUF中,然后产生中断申请。

REN
允许接收位,由软件设置或者清除,使能或禁止接收。

TB8发送数据位8,在工作方式2和3时,TB8的内容是发送的第9位数据,其值由用户通过软件设置。在双机通信时,TB8一般作为奇偶校验位使用;在多机通信中,常以TB8位的状态表示主机发送的是地址帧还是数据帧。 在工作方式0和1中,该位未使用。

RB8
接收数据位8,是接收数据的第9位,在工作方式2和3中,接收数据的第9位数据放在RB8中,它可能是约定的奇偶校验位,也可能是地址数据标志等。

在方式1中,RB8存放的是接收的停止位。在工作方式0中,该位未使用。

TI
发送中断标志,方式0时,发送完第8位数据后,该位由硬件置1,在其他方式下,于发送停止位以前,由硬件置1,因此,TI=1,表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI位必须由软件清0。

RI
接收中断标志,方式0时,接收完第8位数据后,该位由硬件置1,在其他方式下,当接收到停止位时,该位由硬件置1,因此RI=1,表示帧接收结束。其状态可供软件查询使用,也可以请求中断。RI位也必须由软件清0。

4串行口工作方式和波特率



a工作方式0

以8位数据为一帧进行传输,不设起始位和停止位,先发送或接收最低位。 方式0实现数据的移位输入/输出,实际上是把串行口变成并行口使用,需要有“串入并出”的移位寄存器(例如CD494/74LS164等)配合。  这里不详述。

方式0的波特率:



b工作方式1



方式1的波特率:[/b]






c工作方式2






[b]方式2的波特率:
[/b]

[b]


[/b]



[b]d工作方式3[/b]

工作方式3是11位为一帧的串行通信方式,其通信过程与工作方式2完全相同,所不同的仅是在于波特率:工作方式2的波特率只有固定的两种,而工作方式3的波特率则可由用户根据需要设定,其设定方法与工作方式1相同,即通过设定定时器1的初值来设置波特率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: