×
单片机 > 单片机程序设计 > 详情

AT89S51串行口工作方式1

发布时间:2020-06-19 发布时间:
|

  串行口的方式1为双机串行通信方式,如右图所示。
  
  当SM0、SM1两位为01时,串行口设置为方式1的双机串行通信。TXD脚和RXD脚分别用于发送和接收数据。
  
  方式1收发一帧的数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。方式1的帧格式如下图所示。
  
  方式1时,串行口为波特率可变的8位异步通信接口。方式1的波特率由下式确定
  
  式中,SMOD为PCON寄存器最高位的值(0或1)。
  
  1.方式1发送
  
  串行口以方式1输出时,数据位由TXD端输出,发送一帧信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1,当CPU执行一条数据写发送缓冲器SBUF的指令(MOVSBUF,A),就启动发送。方式1发送时序如下图所示。
  
  下图中,TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号SEND变为有效,将起始位向TXD引脚(P3.0)输出,此后每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部发送完毕后,中断标志位TI置1,然后SEND(的反)失效。
  
  2.方式1接收
  
  串行口以方式1(SM0、SM1=01)接收时(REN=1),数据从RXD(P3.1)引脚输入。当检测到起始位的负跳变时,则开始接收。方式1的接收时序如下图所示。
  
  接收时,定时控制信号有两种(如下图所示),一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同;另一种是位检测器采样脉冲,它的频率是RX时钟的16倍。也就是在1位数据期间,有16个采样脉冲,以波特率的16倍速率采样RXD引脚状态。当采样到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取其中两次相同的值,以确认是否是真正的起始位(负跳变)的开始,这样能较好地消除干扰引起的影响,以保证可靠无误地开始接收数据。
  
  当确认起始位有效时,开始接收一帧信息。接收每一位数据时,也都进行3次连续采样(第7、8、9个脉冲时采样),接收的值是3次采样中至少两次相同的值,以保证接收到的数据位的准确性。当一帧数据接收完毕后,必须同时满足以下两个条件,这次接收才真正有效。
  
  (1)RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。
  
  (2) SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标志RI置1。
  
  若不同时满足这两个条件,收到的数据不能装入SBUF,这意味着该帧数据将丢失。

关键字:AT89S51  串行口  工作方式1 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR单片机为何要写1作为清0中断标志位