89系列单片机的串行通信有4种工作方式:
方式0是同步移位寄存器方式,帧格式8位,波特率固定为fosc/12。
方式1是8位异步通信方式,帧格式10位,波特率可变:T溢出率/n(n= :32或16)。
方式2是9位异步通信方式,帧格式11位,波特率固定: fosc/n(n=32 或16)。
方式3是9位异步通信方式,帧格式11位,波特率可变:T溢出率(m=32或16)。
方式1、2、3的区别主要表现在帧格式及波特率两个方面。
扩展资料
方式0和方式2的波特率是固定的,都是由单片机时钟脉冲经相关控制电路处理后获得。其中方式0的波特率完全取决于系统时钟频率fosc的高低,不受其他因素影响;而方式2的波特率还受SMOD(PCON.7)状态控制。当SMOD=1时,为fosc/32, SMOD=0时为fosc/64。
方式1和方式3的波特率是可变的,通常使用单片机中的定时器T1工作在其方式2 (自动重装初值方式)作为波特率发生器使用,以产生所需的波特率信号。
K为定时器T1的位数,与其工作方式有关(方式0,K=13; 方式1,K=16;方式2,K=8)。 由波特率计算公式可知,方式1和方式3下波特率受fosc、SMOD、T1工作方式以及T1初值等多种因素影响。
通常是在fosc、SMOD和T1工作方式选定情况下,通过调整T1初值(即调整T1的溢出率)的方式来改变波特率。
串行口分四种工作方式,由SCON中的SMO、SM1二位选择决定。
1.方式0
(1)特点
1.用作串行口扩展,具有固定的波特率,为Fosf/12。
2.同步发送/接收,由TXD提供移位脉冲,RXD用作数据输入/输出通道。
3.发送/接收8位数据,低位在先。
(2)发送操作
当执行一条“MOV SBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行发送SBUF中的数据。发送完8位数据后自动置TI=1,请求中断。要继续发送时,T1必须有指令清零。(3)接收操作
在RI=0条件下,置REN=1,启动一帧数据的接收,由TXD输出移位脉冲,由RXD接收串行数据到A中。接收完一帧自动置位RI,请求中断。想继续接收时,要用指令清零RI。2.方式1
(1)特点
1.8位UART接口。
2.帧结构为10位,包括起始位(为0),8位数据位,1位停止位。
3.波特率由指令设定,由T1的溢出率决定。
(2)发送操作
当执行一条“MOV SBUF,A”指令时,启动发送操作,A中的数据从TXD端实现异步发送。发送完一帧数据后自动置TI=1,请求中断。要继续发送时,TI必须由指令清零。(3)接收操作
当置REN=1时,串行口采样RXD,当采样到1至0的跳变时,确认串行数据帧的起始位,开始接收一帧数据,直到停止位到来时,把停止位送入RB8中。置位RI请求中断。CPU取走数据后用指令清零RI。3.方式2和方式3
方式2和方式3具有多机通信功能,这两种方式除了波特率不同以外,其余完全相同。
(1)特点
1.9位UART接口。
2.帧结构为11位,包括起始位(为0)、8位数据位、1位可编程位TB8/RB8和停止位(为1)。
3.波特率在方式2时为固定FOSC/32或FOSC/64,由SMOD位决定,当SMOD=1时,波特率为FOSC/32;当SMOD=0时,波特率为FOSC/64。方式3的溢出率由T1的溢出率决定。(2)发送操作
发送数据之前,由指令设置TB8(如作为奇偶校对位或地址/数据位),将要发送的数据由A写入SBUF中启动发送操作。在发送中,内部逻辑会把TB8装入发送移位寄存器的第9位位置,然后发送一帧完整的数据,发送完毕后置位TI。TI须由指令清零。(3)接收操作
当置位SEN位且RI=0时,启动接收操作,帧结构上的第9位送入RB8中,对所接收的数据视SM2和RB8的状态决定是否会使RI置位。
当SM2=0时,RB8不论什么状态RI都置1,串行口都接收数据。
当SM2=1时,为多机通信方式,接收到的RB8为地址/数据表识位。
当RB8=1时,接收的信息为地址帧,此时置位RI,串行口接收发送来的数据。
当RB8=0时,接收的信息为数据帧,若SM2=1时,RI不会置位,此数据丢弃;若SM2=0,则SBUF接收发送来的数据。
http://wenku.baidu.com/view/bb1b8e4b2b160b4e767fcf4f.html
从第15页开始,介绍的很详细。