您的位置 首页 产品

51单片机串行口的工作方式解析

51单片机串行口的工作方式解析-方式0是外接串行移位寄存器方式。工作时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必须用软件清除中断标志。

1)方法0

方法0是外接串行移位寄存器方法。作业时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接纳或发送一位数据)。每逢发送或接纳完一个字节,硬件置TI=1或RI=1,请求中止,但有必要用软件铲除中止标志。

2)方法1

方法1是点对点的通讯方法。8位异步串行通讯口,TXD为发送端,RXD为

接纳端。一帧为10位,1位开端位、8位数据位(先低后高)、1位中止位。波特率由T1或T2的溢出率确认。

在发送或接纳到一帧数据后,硬件置TI=1或RI=1,向CPU请求中止;但有必要用软件铲除中止标志,不然,下一帧数据无法发送或接纳。

51单片机串行口的作业方法解析

(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的负跳变,以便接纳下一帧。

3)方法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端负跳变。

3、 多机通讯

在这里,多机体系是指‘一主多从’。51系列单片机中,使用第9位TB8/RB8

来区别地址与数据信息,用位SM2确认接纳方是否对地址或数据帧灵敏。其原则是:

1)发送方用第9位TB8=1标志地址帧,TB8=0标志数据帧。

2)接纳方若设置SM2=1,则只能接纳到地址信息,若设SM2=0,则不管是地址仍是数据帧,都能接纳到。

使用方法2、3的特色,在点对点的通讯中,在发送方可以用第9位TB8

作为奇偶校验位。在接纳方,SM2位有必要清0。

4、波特率

1)方法0的波特率=fosc/12

2)方法2的波特率=2^smod*fosc/64

3)方法1、3的波特率由T1或T2的溢出率和SMOD位确认:

(1)用T1:波特率=2^smod*T1守时器的溢出率/32,T1为方法2

T1守时器溢出率=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.5104

X~=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时的X

2400=11059200/(32(65536-X)) 65536-X=144 X=65392=FF70H

计数器初值寄存器:RCAP2H=0FFH,RCAP2L=70H。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/345525.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部