一.串行通信的基本知识
二.8051的串行接口
三、8051串行接口的应用与编程
串行通信基础知识
计算机与外界的信息交换称为通信。通信的基本方式可分为并行通信和串行通信两种。
所谓并行通信是指数据的各位同时在多根数据线上发送或接收。
并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。
串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
串行通信的特点:传输线少,长距离传送时成本低,但数据的传送控制比并行通信复杂。
异步通信与同步通信
1、异步通信
异步通信是指通信的发送与接收设备使用各自的时钟控制数据发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的时间间隔是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。如下图所示。
2、同步通信
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。
串行通信的制式
在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可分为三种制式。
单工:单向的(或者是收或者是发)
半双工:(串行通信)收/发不可同时进行
全双工:(串行通信)收/发可同时进行
传输速率
比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:
10位×240个/秒 = 2400 bps
串行接口的结构
有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H
在逻辑上,SBUF只有一个,它既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H。但在物理结构上,则有两个完全独立的SBUF,一个是发送缓冲寄存器SBUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别访问上述两个不同的寄存器。 a = SBUF; SBUF = a;
串行控制寄存器SCON
串行控制寄存器SCON地址98H用于设置串行口的工作方式、监视串行口的工作状态、控制发送与接收的状态等。它是一个既可以字节寻址又可以位寻址的8位特殊功能寄存器。其格式如下图。
SM0和SM1为工作方式选择位,可选择四种工作方式:
REN:串行接受允许控制位。该位由软件置位或复位。当REN=1,允许接收;当REN=0,禁止接收。
TI:发送中断标志位。TI=1,表示已结束一帧数据发送,可由软件查询TI位标志,也可以向CPU申请中断。
注意:TI在任何工作方式下都必须由软件清0。
RI:接收中断标志位。RI=1,表示一帧数据接收结束。可由软件查询RI位标志,也可以向CPU申请中断。
注意:RI在任何工作方式下也都必须由软件清0。
串行发送中断TI和接收中断RI的中断入口地址是同是0023H,因此在中断程序中必须由软件查询TI和RI的状态才能确定究竟是接收还是发送中断,进而作出相应的处理。单片机复位时,SCON所有位均清0。
电源控制寄存器PCON
|
PCON |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
位名称 |
SMOD |
- |
- |
- |
GF1 |
GF0 |
PD |
IDL |
SMOD:在串行口工作方式 1、2、3 中,
是波特率加倍位 (产生高波特率时启用平时不用,比如用11.0592晶振产生57600波特率时就要设置成SMOD=1)
=1 时,波特率加倍(PCON=0x80;)
=0 时,波特率不加倍。(PCON=0x00;)
(在PCON中只有这一个位与串口有关)
中断允许控制寄存器IE(A8H)
作用:CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
|
位 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
符号 |
EA |
|
|
ES |
ET1 |
EX1 |
ET0 |
EX0 |
EA , CPU中断允许(总允许)位; =0 时禁止全部中断;=1 时允许中断。
ES,串行口中断允许位;=0 时禁止中断; =1 时允许中断。
ET1,定时/计数器T1中断允许位;=0 时禁止中断; =1 时允许中断。
EX1,外部中断0允许位;=0 时禁止中断; =1 时允许中断。
ET0,定时/计数器T0中断允许位;=0 时禁止中断; =1 时允许中断。
EX0,外部中断0允许位; =0 时禁止中断; =1 时允许中断。
波特率的计算
在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。
方式0的波特率 = fosc/12
方式2的波特率 =(2SMOD/64)· fosc
方式1的波特率 =(2SMOD/32)·(T1溢出率)
方式3的波特率 =(2SMOD/32)·(T1溢出率)
当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。
T1 溢出率 = fosc /{12×[256 -(TH1)]}
常用串口波特率:
300、600、1200、2400、4800、9600、19200 ……115200;
串行口工作之前需对相关寄存器进行配置,设定其工作模式。
1.设置T1的工作方式(编程TMOD寄存器);
2.计算T1的初值,装载TH1、TL1;
3.启动T1(编程TCON中的TR1位);
4.确定串行口控制(编程SCON寄存器);
如需串行口在中断方式工作时,要进行中断设置编程IE寄存器。
串行通信接口标准
一、RS-232C接口
RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
1、机械特性
RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)
1.以4800bps从计算机发任意一字节数据,通过数码管以十进制
的形式显示出来。
2.把矩阵键盘的键值以2400bps上传到计算机串口助手。
3.编写让LED1小灯以500ms的频率闪烁,要求分别使用定时器
的4中工作方式去实现(方式1我们在第七课中已讲解,其他3
种工作方式请大家查看我们资料和软件部分文件夹里面的STC
89C52RC的使用手册完成)。
4.编写使用单片机外部中断的LED1小灯闪烁程序,要求使用外部
中断的跳变沿方式,和低电平方式各写一个程序,程序要能体现
出跳变沿和低电平的区别。