您的位置 首页 模拟

嵌入式学习笔记11——51单片机之中止串口通讯

1.计算机通信指计算机与外设或计算机与计算机之间的信息交换,分为两大类:并行通信(控制简单)和串行通信(从低到高,一位一位的传送,…

1. 核算机通讯指核算机与外设或核算机与核算机之间的信息交流,分为两大类:并行通讯(操控简略)和串行通讯(从低到高,一位一位的传送,长间隔传输时成本低)。

2. 异步通讯

  1. 异步通讯是以字符(构成的帧)为单位进行传输,字符与字符之间的极大(时刻间隔)是恣意的,但每个字符中的各位是以固定的时刻传送的。
  2. 异步通讯的数据格局:
    格局中的校验位一般有3种方法取得:(1)奇偶校验:奇校验——数据中的“1”的个数与校验位“1”的个数之和应为奇数;偶校验——数据中的“1”的个数与校验位“1”的个数之和应为偶数。(2)代码和校验:发送方将所发数据块求和(或各字节异或),发生一个字节的校验字符(校验和)附加到数据块结尾。接纳方接纳数据一起对数据块(校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较。(3)循环冗余校验。

3. 串行通讯的传输方向

(1)单工是指数据传输仅能沿一个方向,不能实现反向传输。(如遥控器)(2)半双工是指数据传输能够沿两个方向,但需求分时进行。(如对讲机) (3)全双工是指数据能够一起进行双向传输。

4. 比特率是每秒钟传输二进制代码的位数,单位是位/秒(bps)。传输速率越大,传输间隔越小。

5. 串行通讯接口标准

(1)RS-232C(25针,比较老了;或许9针)

咱们一般用到的是TXD、RXD和SGND。RS-232C的缺陷是传输速率最高为20Kbps,传输间隔不超越15米;要求收发两边共地,通讯间隔较大时,收发两边的地电位不同较大,在信号地上将有比较大的地电流并发生压降;抗干扰能力差。

(2)针对RS232C的缺陷,提出了RS422A接口。其传输速率90Kbps时,传输间隔可达1200米,抗干扰能力强。—

(3)RS-485是RS422A的变型:RS-422A用于全双工,而RS-485用于半双工。传输间隔可达1200米,传输速率可达1Mbps。一般是一点对多点的通讯接口。一般的PC机一般不带RS485接口,因策要运用RS-232C/RS-485转换器

6. 51单片机的串行口

6. 串行口的操控寄存器

SCON是一个特别功用寄存器,用以设定串行口的作业方法、接纳/发送操控以及设置状况标志。

(1)SM0和SM1为作业方法挑选位,可挑选4种作业方法:

图中,fosc为晶振频率。 常用的是方法1。

(2)SM2,多机通讯操控位,首要用于方法2和方法3。当接纳机的SM2=1时,能够运用收到的RB8来操控是否激活RI(RB8=0时不激活RI,收到的信息丢掉;RB8=1时收到的数据进入SBUF,并激活RI,进而在中止服务中将数据从SBUF中读走)。当SM2=0时,不管收到的RB8为0仍是1,均能够使收到的数据进入SBUF,并激活RI。在方法0时,SM2有必要是0。在方法1时,假如SM2=1,则只要接纳到有用中止位时,RI才置1;若SM2=0,则RB8是接纳到的中止位。

(3)REN,答应串行接纳位。由软件置REN=1,则发动串行口接纳数据;若软件置REN=0,则制止接纳。

(4)TB8,在方法2或方法3中,是发送数据的第九位,可用软件规则其效果。能够用作数据的奇偶校验位,或在多机通讯中,作为地址帧/数据帧的标志位。在方法0和方法1中,该位未用。

(5)RB8,在方法2或方法3中,是接纳到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方法1时,若SM2=0,则RB8是接纳到的中止位。

(6)TI,发送中止标志位。串行发送中止位的开始时,由内部硬件使TI置1,向CPU发中止请求。在中止服务程序中,有必要用软件将TI清0,撤销此中止请求。

(7)RI,接纳中止标志位。串行接纳中止位的中心时,由内部硬件使RI置1,向CPU发中止请求。在中止服务程序中,有必要用软件将RI清0,撤销此中止请求。

7. PCON中有一位SMOD(PCON.7,波特率倍增位)与串行口作业有关。在串行口方法1~3时,波特率与SMOD有关,当SMOD=1时,波特率进步一倍。复位时,SMOD=0。

8. 方法1输出的时序图:

9.方法1输入的时序图:

10. 波特率的核算

在串行通讯中,收发两边对发送或接纳数据的速率要有约好,不然就会呈现乱码。其间方法0和方法2的波特率固定,而方法1和方法3的波特率是可变的,由定时器T1的溢出率来决议。

11. 串口的运用

(1)确认T1的作业方法(编程TMOD寄存器)

(2)核算T1的初始值,装载TH1、TL1

(3)发动T1(编程TCON中的TR1位)

(4)确认串行口操控(编程SCON寄存器、还有PCON中的SMOD位)

(5)设置IE寄存器,翻开EA和ES位。

(6)写中止服务程序,记住软件清零RI、TI。

12. 示例程序

unsigned char a,flag;

void main()

{

while(1)

{

if(flag)

{

ES=0;

flag=0;

SBUF=a;

while(!TI);//等候数据发送完,发完时硬件主动将TI置1

TI=0;

ES=1;

}

}

}

void serial() interrupt 4

{

a=SBUF;

P1=a;

RI=0;

flag=1;

}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部