您的位置 首页 新品

51单片机串口通讯及波特率设置

MCS-51单片机具有一个全双工的串行通信接口,能同时进行发送和接收。它可以作为UART(通用异步接收和发送器)使用,也可以作为同步的移位寄…

MCS-51单片机具有一个全双工的串行通讯接口,能一起进行发送和接纳。它能够作为UART(通用异步接纳和发送器)运用,也能够作为同步的移位寄存器运用。

1. 数据缓冲寄存器SBUF

SBUF是能够直接寻址的专用寄存器。物理上,它对应着两个寄存器,即一个发送寄存器一个接纳寄存器,CPU写SBUF便是修正发送寄存器;读SBUF便是读接纳寄存器。接纳器是双缓冲的,以防止在接纳下一帧数据之前,CPU未能及时的呼应接纳器的中止,没有把上一帧的数据读走而发生两帧数据堆叠的问题。关于发送器,为了坚持最大的传输速率,一般不需要双缓冲,由于发送时CPU是自动的,不会发生堆叠问题。

2. 状况操控寄存器SCON

SCON是一个逐位界说的8位寄存器,用于操控串行通讯的方法挑选、接纳和发送,指示串口的状况,SCON即能够字节寻址也能够位寻址,字节地址98H,地址位为98H~9FH。它的各个位界说如下:

MSB LSB

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0和SM1是串口的作业方法挑选位,2个挑选位对应4种作业方法,如下表,其间Fosc是振荡器的频率。

SM0 SM1

作业方法

功用

波特率

0 0

0

8位同步移位寄存器

Fosc/12

0 1

1

10位UART

可变

1 0

2

11位UART

Fosc/64或Fosc/32

1 1

3

11位UART

可变

SM2在作业方法2和3中是多机通讯的使能位。在作业方法0中,SM2有必要为0。在作业方法1中,若SM2=1且没有接纳到有用的中止位,则接纳中止标志位RI不会被激活。在作业方法2和3中若SM2=1且接纳到的第9位数据(RB8)为0,则接纳中止标志RB8不会被激活,若接纳到的第9位数据(RB8)为1,则RI置位。此功用可用于多处理机通讯。

REN为答应串行接纳位,由软件置位或铲除。置位时答应串行接纳,铲除时制止串行接纳。

TB8是作业方法2和3要发送的第9位数据。在许多通讯协议中该位是奇偶位,能够按需要由软件置位或铲除。在多处理机通讯中,该位用于表明是地址帧仍是数据帧。

RB8是作业方法2和3中接纳到的第9位数据(例如是奇偶位或许地址/数据标识位),在作业方法1中若SM2=0,则RB8是已接纳的中止位。在作业方法0中RB8不运用。

TI 为发送中止标志位,由硬件置位,软件铲除。作业方法0中在发送第8位结尾由硬件置位;在其他作业方法时,在发送中止位开端时由硬件置位。TI=1时,恳求中止。CPU呼应中止后,发送下一帧数据。在任何作业方法中都有必要由软件铲除TI。

RI为接纳中止标志位,由硬件置位,软件铲除。作业方法0中在接纳第8位结尾由硬件置位;在其他作业方法时,在接纳中止位的中心由硬件置位。RI=1时,恳求中止,要求CPU取走数据。但在作业方法1中,SM2=1且未接纳到有用的中止位时,不会对RI置位。在任何作业方法中都有必要由软件铲除RI。

体系复位时,SCON的一切位都被铲除。

操控寄存器PCON也是一个逐位界说的8位寄存器,现在仅仅有几位有界说,如下所示:

MSB LSB

SMOD

——

——

——

GF1

GF0

PD

IDL

仅最高位SMOD与串口的操控有关,其他位与掉电方法有关。PCON的地址为87H只能按字节寻址,SMOD是串行通讯波特率系数操控位,当串口作业在作业方法1、2时,若运用T1作为波特率发生器其SMOD=1则波特率加倍(见下面胪陈)。

GF1 和GF0用于一般的用处,关于AT89系列为通用的标志位,PD为电源下降位,关于AT89系列,PD为1进入掉电状况,IDL为IDLE形式位,关于AT89系列,IDL为1进入闲暇作业方法,在PD和IDL一起为1时,PD优先。

(1) 作业方法0

SM0=0且SM1=0时,串口挑选作业方法0,本质这是一种同步移位寄存器形式。

其数据传输的波特率固定为Fosc/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。接纳/发送的是8位数据,传输是低位在前,帧格局如下:

……..

D0

D1

D2

D3

D4

D5

D6

D7

…….

(2)作业方法1

当SM0=0且SM1=1时,串口挑选作业方法1,其数据传输的波特率由守时/计数器T1、T2的溢出速率决议,可通进程序设定。当T2CON寄存器中的RCLK和TCLK置位时,用T2作为发送和接纳波特率发生器,而RCLK=TCLK=0时,用T1作为波特率发生器,两者还能够穿插运用,即发送和接纳选用不同的波特率。数据由TXD引脚发送,由RXD引脚接纳。

发送或接纳一帧的数据为10位,即1位开端位(0)、8位数据位(低位在先)和1位中止位(1)。真格局如下:

开端位0

D0

D1

D2

D3

D4

D5

D6

D7

中止位1

类似于作业方法0,当履行任一条SBUF指令时,就发动串行数据的发送。在履行写入SBUF的指令时,也将“1”写入发送移位寄存器的第9位,并告诉发送操控器有发送恳求。实际上,发送进程始于内部的16分频计数器下次满度翻转(全“1”变全“0”)后的那几个机器周期的开端。所以,每位的发送进程与16分频计数器同步,而不是与“写SBUF”同步。

此方法的作业进程包含发送和接纳两部分。

当履行任一条写SBUF指令时,就发动串行数据的发送。在履行写入SBUF的指令时,也将“1”写入发送移位寄存器的第9位,并使发送操控器开端发送。在这期间,内部的守时确保写入SBUF与激活发送之间有一个完好的机器周期。当发送脉冲有用后,移位寄存器的内容由RXD引脚串行移位输出,移位脉冲由TXD引脚输出。

在发送有用的每个机器周期,发送移位寄存器右移一位,就在其左面补“0 ”。当数据的最高位移到移位寄存器的输出时,原写入第9位的“1”正好移到最高位的左面一位,由此向左的一切位都为“0”,这标志着发送操控器要进行最终顺次移位,并吊销发送有用,一起使发送中止标志TI置位。

当REN=1且接纳中止标志RI位铲除时,即发动一个接纳进程。鄙人一个机器周期,接纳操控器将“11111110”写入接纳移位寄存器,并鄙人一周期内激起接纳有用,一起由TXD引脚输出移位脉冲。在移位脉冲的操控下,接纳移位寄存器的内容每一个机器周期左移一位,一起由RXD引脚接纳一位输入信号。

每逢接纳移位寄存器左移一位,原写入的“11111110”也左移一位。当最右边的“0”移到最左面时,标志着接纳操控器要进行最终一次移位。在最终移位行将结束时,接纳移位寄存器的内容送入到接纳数据缓冲寄存器SBUF,然后在发动接纳的第10个机器周期时,铲除接纳信号,将RI置位。

假如在第一个时钟周期中接纳到的不是开端位(“0”),就复位接纳电路,持续检测RXD引脚上1到0的跳变。假如接纳到的是开端位,就将其移入接纳移位寄存器,然后接纳该帧的其他位。接纳到的位从右边移入,本来写入的1从左面移出,当开端位移到最左面时,接纳操控器将操控进行最终一次移位,把接纳到的第9为数据送到接纳数据缓冲器SBUF和RB8,一起置位RI。

在进行最终一次移位时,能将数据送入到接纳数据缓冲器SBUF和RB8而且置位RI的条件如下:

● RI=0,即上一真数据接纳完结时,宣布的中止恳求现已被呼应,SBUF中的上一帧数据现已被取走。

● SM2=0或接纳到的中止位为1。

这两个条件有一个不满意接纳到的数据就有或许丢掉,而且无法修正;如两者都满意则数据装入SBUF,中止位装入RB8且置位RI。

开端发送后的一个位周期,发送信号有用,开端将开端位送TXD引脚。一位时刻后,数据信号有用。发送移位寄存器将数据由低位到高位次序输出至TXD引脚。一位时刻后第一个移位脉冲呈现,将最低数据位从右边移出,一起从左面补上“0”。当数据的最高位移到移位寄存器的输出端时,从前写入第9位的“1”正好移到最高位的左面一位,而它的左区悉数为“0”。在第10个位周期(16分频计数器回0时),发送操控器要进行最终一次铲除发送信号,一起使发送中止标志TI置位。

当REN=1且接纳中止标志RI位铲除后,若在RXD引脚上检测到一个由“1”到“0”的跳变,当即发动一次接纳的进程。一起复位16分频计数器,使输入位的边缘与时钟对齐,并将1FFH(9个“1”)写入接纳移位寄存器。接纳操控器持续以波特率的16倍的速率持续对RXD引脚进行检测,对每一位时刻的第7、8、9个计数状况的采样值用大都表决法,当2次或2次以上的采样值相一起,采样值被承受。

(1) 作业方法2和3

当SM0=1且SM1=0时,串口挑选作业方法2,当SM0=1且SM1=1时,串口挑选作业方法3。数据由TXD引脚发送由RXD引脚接纳。

发送和接纳的一帧信息为11位,即1位开端位(0),9位数位(低位在前,第9位数据位是可编程位)1位中止位(1)。发送时,可编程位(TB8)可赋0或1,接纳时可编程位进入SCON中的RB8。帧的格局如下:

开端位0

D0

D1

D2

D3

D4

D5

D6

D7

可编程位D8

中止位1

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部