首页 > 代码库 > 串行接口的基本特点
串行接口的基本特点
MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。
串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率[每秒传送的位数]以及作为中断标志等。
串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。
串行端口的波特率可以用程序来控制。在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。
串口控制寄存器
输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。只有当8位数据接收完,并检测到高电平停止位后,只有满足①(R1)=0;②(SM2)=0或接收到的第9位数据为1时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。
1. 方式2
方式2为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。
输出:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令且TI=0时,就启动发送器发送。发送一帧信息后,置位中断标志TI。
输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。在接收到附加的第9位数据后,当满足①(RI):0;②(SM2)=0或接收到的第9位数据为1时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志Ri;否则信息丢失。且不置位RI。
2. 工作方式3
方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。
波特率的选择
如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。
1> 方式1
方式1的波特率固定为主振频率 的1/12。
2> 方式2
方式2的波特率由PCON中的选择位SMOD来决定,可表示为:波特率=2sMoD×fosc/64也就是当SMOD=1时,波特率为1/32×fosc,当SMOD=0时,波特率为1/64×fosc。
3> 方式1和方式3
定时器T1作为波特率发生器,其公式如下:
波特率=2SMOD/32×定时器T1溢出率
T1溢出率=T1计数率/产生溢出所需的周期数
式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为Fosc/2:当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于Fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。
定时器T1工作于方式O:溢出所需周期数=8192-X
定时器T1工作于方式1:溢出所需周期数=65536-X
定时器T1工作于方式2:溢出所需周期数=256-X
因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。这种方式下,T1的溢出率[次/秒]计算式可以表示为:
T1溢出率=Fsoc/12[256-X]
串行接口的基本特点