中远电工网

 找回密码
 立刻注册

51单片机串行口的工作办法解析

>2019-05-15 16:54| 发布者: admin| 检查: 1167| 评论: 0

摘要:  办法0是外接串行移位存放器办法。工作时,数据从RXD串行地输入/输入,TXD输入移位脉冲,使内部的移位存放器移位。波特率固定为fosc/12(即,TXD每机械周期输入一个同位脉冲时,RXD接收或发送一名数据)。每当发送 ...
 办法0是外接串行移位存放器办法。工作时,数据从RXD串行地输入/输入,TXD输入移位脉冲,使内部的移位存放器移位。波特率固定为fosc/12(即,TXD每机械周期输入一个同位脉冲时,RXD接收或发送一名数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必需用软件清除中断标志。
实际应用在串行I/O口与并行I/O口之间的转换。
       办法1
办法1是点对点的通讯办法。8位异步串行通讯口,TXD为发送端,RXD为接收端。一帧为10位,1位起始位、8位数据位(先低后高)、1位停止位。波特率由T1或T2的溢出率确定。
在发送或接收到一帧数据后,硬件置TI=1或RI=1,向CPU申请中断;但必需用软件清除中断标志,否则,下一帧数据无法发送或接收。


      (1)发送:CPU履行一条写SBUF指令,启动了串行口发送,同时将1写入输入移位存放器的第9位。发送起始位后,在每个移位脉冲的感化下,输入移位存放器右移一名,左边移入0,在数据最高位移到输入位时,原写入的第9位1的左边全是0,检测电路检测到这一条件后,使节制电路作末了一次移位,/SEND和DATA无效,发送停止位,一帧结束,置TI=1。
       (2)接收:REN=1后,允许接收。接收器以所选波特率的16倍速率采样RXD端电平,当检测到一个负跳变时,启动接收器,同时把1FFH写入输入移位存放器(9位)。因为接、发双方时钟频率有少许误差,为此接收节制器把一名传送光阴16等分采样RXD,以此中7、8、9三次采样中至少2次相同的值为接收值。接收位从移位存放器右边进入,1左移出,当最左边是起始位0时,说明已接收8位数据,再作末了一次移位,接收停止位。此后:
A、若RI=0、SM2=0,则8位数据装入SBUF,停止位入RB8,置RI=1。
B、 若RI=0、SM2=1,则只要停止位为1时,才有上述结果。
C、若RI=0、SM2=1,且停止位为0,则所接数据丢失。
D、若RI=1,则所接收数据丢失。
不管出现那种环境,检测器都从新检测RXD的负跳变,以便接收下一帧。
     办法2、办法3
办法2和办法3是9位异步串行通讯,一样平常用在多机通讯体系中或奇偶校验的通讯过程。在通讯中,TB8和RB8位作为数据的第9位,位SM2也起感化。办法2与办法3的差别只是波特率的设置办法分歧。
     (1)发送
向SBUF写入一个数据就启动串口发送,同时将TB8写入输入移位存放器第9位。开端时,SEND和DATA都是低电平,把起始位输入到TXD。DATA为高,第一次移位时,将‘1’移入输入移位存放器的第9位,以后每次移位,左边移入‘0’,当TB8移到输入位时,其左边是一个‘1’和全‘0’。检测到此条件,再停止末了一次移位,/SEND=1,DATA=0,输入停止位,置TI=1。
     (2)接收
置REN=1,与办法1类似,接收器以波特率的16倍速率采样RXD端。
起始位0移到输入存放器的最左边时,停止末了一次移位。在RI=0,SM2=0或接收到的第9位=1时,收到的一字节数据装入SBUF,第9位进入RB8,置RI=1;然后又开端检测RXD端负跳变。
 多机通讯
在这里,多机体系是指‘一主多从’。51系列单片机中,利用第9位TB8/RB8来区分地址与数据信息,用位SM2确定接收方是否对地址或数据帧敏感。其原则是:
1)发送方用第9位TB8=1标志地址帧,TB8=0标志数据帧。
2)接收方若设置SM2=1,则只能接收到地址信息,若设SM2=0,则不管是地址还是数据帧,都能接收到。
利用办法2、3的特色,在点对点的通讯中,在发送方可以或许或许用第9位TB8作为奇偶校验位。在接收方,SM2位必需清0。
波特率
    1)办法0的波特率=fosc/12
    2)办法2的波特率=2^smod*fosc/64
    3)办法1、3的波特率由T1或T2的溢出率和SMOD位确定:
  (1)用T1:波特率=2^smod*T1定时器的溢出率/32,T1为办法2T1定时器溢出率=1/((12/fosc)*(256-X))例:已知fosc=6MHz,SMOD=0,设置波特率为2400,求T1的计数初值X。
波特率=1/((12/fosc)*(256-X))/32=fosc/12*32(256-X)(256-X)=fosc/2400/384=6M/2400/384;256-X~=6.5104X~=250=FAH 只能近似计算。
若fosc=11.0592MHz, 则256-X=11.0592M/2400/384=4068/384=12 X=F4H;可精确算出,对其它常用的模范波特率也是能正确算出。所以这个晶振频率是最常用的。
如果SMOD=1,则同样的X初值得出的波特率加倍。
(3)用T2:
在52型单片机中,串口办法1、3的波特率发生器抉择由TCLK、RCLK位确定是T1还是T2。若TCLK=1,则发送器波特率来自T2,否则来自T1。若RCLK=1,则接收器波特率来自T2,否则来自T1。
由T2发生的波特率与SMOD无关。T2定时的最小单位=2/fosc。T2的溢出脉冲16分频后作为串口的发送或接收脉冲。
波特率=(1/((2/fosc)(65536-X)))/16=fosc/(32(65536-X))例:已知fosc=11.0592MHz,求波特率=2400时的X2400=11059200/(32(65536-X)) 65536-X=144 X=65392=FF70H计数器初值存放器:RCAP2H=0FFH,RCAP2L=70H。

看过《51单片机串行口的工作办法解析》的人还看了如下文章:

最新评论

热门文章

|中远电工网 ( )

GMT+8,>2019-05-15 15:30

Powered by © 2011-2019 www.wjzydg.com 版权统统 免责声明 不良信息举报

技术驱动未来! 中远电工网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

返回顶部
友情链接:连接科技资讯网  岳大包装网  上海网游资讯  缪斯文胸网  鸟类大全网  北青国际教育网  创新科技网  无忧无虑中学语文网  德州新闻门户网  天成资讯网