您的位置 首页 电子

51单片机和PC串口异步通讯

单片机和PC机间的通信有很多方式,下面的程序主要用到的是51单片机的异步串行通信。一.51单片机的串行通信管脚P3.1为单片机的TXD管脚(Tran…

单片机和PC机间的通讯有许多方法,下面的程序首要用到的是51单片机的异步串行通讯。

一.51单片机的串行通讯管脚

P3.1为单片机的TXD管脚(Transfer Data),P3.2为单片机的RXD管脚(Receive Data)。

经过TXD管脚能够将CPU要发送的数据输出,RXD管脚能够将串行数据线传来的数据读入。

二.51单片机的串行通讯操控寄存器SCON,电源操控寄存器PCON

SCON:

其间,SM0,SM1操控着串行通讯的作业方法。

SM0 SM1 作业方法 阐明 波特率
0 0 0 移位寄存器 fosc/12
0 1 1 10位异步收发器(8位数据) 可变
1 0 2 11位异步收发器(9位数据) fosc/64或fosc/32
1 1 3 11位异步收发器(9位数据) 可变

其间作业方法1在运用傍边比较多。

SM2为多机通讯操控位,SM2=1,允许多机通讯,=0不允许,完成点对点通讯。这儿先不评论。

TB8用于贮存发送数据的第9位。在方法2和方法3中,发送数据除了开始位,数据位,中止位外,还有一位校验位,存储在TB8中。

RB8用于存储接纳数据的第9位。接纳到传来的代码后,数据位存储在SBUF中,而校验位就存储在RB8中。经过剖析,能够判别承受的数据是否正确。

TI为发送中止请求标志。当发送数据缓冲区为空的时分,TI经过硬件置1,告诉CPU数据发送结束,需求有软件清零。

RI为接纳中止请求标志。总线上的数据经过RXD引脚串行送入单片机内,经过移位寄存器将串行数据变成并行数据,送入SBUF中。若接纳的SBUF现已满,经过硬件置1,告诉CPU一帧数据现已接纳结束,能够进行读取。相同需求软件清零。

PCON中只要最高位SMOD与串行通讯有关。

SMOD=1,波特率在本来的基础上加倍;

不然,不加倍。

三.波特率的核算

关于方法1和方法3,波特率核算公式为:(2^SMOD/32)*(T1的溢出率);

关于方法2,为fosc*(2^SMOD/64);

关于方法1,由晶振决议,为固定值。

T1也便是定时器1,做波特率发生器时,一般典型用法为作业在方法2,也便是主动装载的8位计数模式。TH,TL各8位,但只要TL部分计数,故最大计数值为255。溢出后,TH中的数主动装载到TL中。

所以,T1溢出率=fosc/{12x(256-TH1)};

所以能够列出右边为咱们所要波特率的方程。一起网上也有许多波特率的核算东西,也能够拿来运用。

最终总结起来,串行通讯大致要有这样几步:

1.确认定时器T1作业方法,也便是编程TMOD寄存器;

2.装载T1的初值,也便是给TH1,TL1赋值;

3.确认串行口作业方法,也便是编程SCON和PCON寄存器;

4.发动T1定时器,也便是令TR1=1;

5.假如运用中止查询的话,编写中止服务函数

上面这些大约便是串口通讯的基本常识了。有了这些常识,就能够编写程序来实践了。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部