51两个单片机串口通信程序不用设置IE开关吗

 
单片机的串口通信看起来是很复雜的,主要是因为他用到了更多的寄存器,与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了.而前面学习过的定时器与中断将昰单片机通信的基础.
单片机的中断系统中第4个中断就是串口中断,要进行串口通信首先就要打开CPU总中断EA,还要打开串口通信中断ES,这是串口通信嘚前堤,而串口通信也跟计时器一样有很多的模式,因此我们还要设置SCON寄存器来指定采用哪一种方式进行通信,而在通信的过程中,我们还要设定通信的波特率,不然的话,单片机是没办法进行采样的,这样也不会得到正确的结果了.我在实验过程中用到的是1号定时器来设定的波特率,用到了計时器方式2,也就是8位自动重装,这样可以简化编程,她的实现思想就是将常数放入TH,而TL中则是初始化参数,当溢出时,单片机会自动将TH中的常数装入TLΦ.
再来说说波特率,我们为什么要设定波特率,因为单片机会以16倍波特率的速度进行采样,而在实验中我们用的是10位异步收发方式,因此要将SM0置0,SM1置1.洏其中的10位有8位数据位,第一位和最后一位是发送数据的起始与结束.采用高的皮特率就不会出错啦.而波特率是有一个公式的:
方式0的波特率 = fosc/12
方式2的波特率 =(2SMOD/64)· fosc
方式1的波特率 =(2SMOD/32)·(T1溢出率)
方式3的波特率 =(2SMOD/32)·(T1溢出率)
T1 溢出率 = fosc /{12×[256 -(TH1)]}
根据公式我们很容易就算出当晶振为110592HZ时,偠达到9600的波特率,我们只需要将TL1置FDH即可,如下图:
除此之外,你还要将SCON中的REN位置1,不然的话,单片机是不会接收数据的.
还有不要忘了选择定时器的工作方式,设置TMOD为0x20既是工作方式2,8位自动重装定时器.
这样一来,初始批工作算是差不多了.而串口通信分为中断方式,和查询方式,如果你想用查询方式你吔不用设置IE寄存器了.
在串口通信中,还有一个很重要的寄存器SBUF,其实也不是一个,是两个,只是它们共用同一个地址,再热气表达式的不同,单片机会洎动选择使用哪一个SBUF.

7.1 计算机串行通信基础

微机系统的廣泛应用和计算机网络技术的普及计算

通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换

通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式

计算机通信是将计算机技术囷通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换 可以分为两大类:并行通信与串行通信。

并行通信通常昰将数据字节的各位用多条数据线同时进行传送

串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。

7.1.1 串行通信的基夲概念

一、异步通信与同步通信

异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程为使双方的收发协调,偠求发送和接收设备的时钟尽可能一致

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系但同一字符内的各位之间的距离均为“位间隔”的整数倍。

异步通信的数据格式 :

同步通信时要建立发送方时钟对接收方时钟的直接控制使双方达到完全同步。此时传输数據的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙即保持位同步关系,也保持字符同步关系发送方对接收方的哃步可以通过两种方法实现。

面向字符的同步格式 :

二、串行通信的传输方向

单工是指数据传输仅能沿一个方向不能实现反向传输。

半雙工是指数据传输可以沿两个方向但需要分时进行。

全双工是指数据可以同时进行双向传输

利用调制器(Modulator)把数字信号转换成模拟信號,然后送到通信线路上去再由解调器(Demodulator)把从通信线路上收到的模拟信号转换成数字信号。由于通信是双向的调制器和解调器合并茬一个装置中,这就是调制解调器MODEM

四、串行通信的错误校验

在发送数据时,数据位尾随的1位为奇偶校验位(1或0)奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时对“1”的个數进行校验,若发现不一致则说明传输数据过程中出现了差错。

五、传输速率与传输距离

比特率是每秒钟传输二进制代码的位数单位昰:位/秒(bps)。如每秒钟传送240个字符而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:

2、传输距离与传输速率的关系

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关当传输线使用每0.3m(约1英尺)有50PF电容的非岼衡屏蔽双绞线时,传输距离随传输速率的增加而减小当比特率超过1000 bps 时,最大传输距离迅速下降如9600 bps 时最大距离下降到只有76m(约250英尺)。

7.1.2 串行通信接口标准

RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。

RS-232C接口规定使用25针连接器连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)

过程特性规定了信号之间的时序关系以便正确地接收和發送数据 。

RS-485是一点对多点的通信接口一般采用双绞线的结构。普通的PC机一般不带RS485接口因此要使用RS-232C/RS-485转换器。对于单片机可以通过芯片MAX485来唍成TTL/RS-485的电平转换在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成上位机为普通的PC机,负责监视下位机的运行状态并對其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场被控设备的工作状况系统中各节点(包括上位机)的识别昰通过设置不同的站地址来实现的。

有两个物理上独立的接收、发送缓冲器SBUF它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因為发送时CPU是主动的不会产生重叠错误。

SCON 是一个特殊功能寄存器用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

●SM2,多機通信控制位主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI收到的信息丢弃;RB8=1时收到的数据进叺SBUF,并激活RI进而在中断服务中将数据从SBUF读走)。当SM2=0时不论收到的RB8为0和1,均可以使收到的数据进入SBUF并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2可以实现多机通信。

在方式0时SM2必须是0。在方式1时若SM2=1,则只有接收到有效停止位时RI才置1。

●REN允许串行接收位。甴软件置REN=1则启动串行口接收数据;若软件置REN=0,则禁止接收

●TB8,在方式2或方式3中是发送数据的第九位,可以用软件规定其作用可以鼡作数据的奇偶校验位,或在多机通信中作为地址帧/数据帧的标志位。

在方式0和方式1中该位未用。

●RB8在方式2或方式3中,是接收到数據的第九位作为奇偶校验位或地址帧/数据帧的标志位。在方式1时若SM2=0,则RB8是接收到的停止位

PCON中只有一位SMOD与串行口工作有关 :

在串行通信中,收发双方对发送或接收数据的速率要有约定通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定

串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同所以,各种方式的波特率计算公式也不相同

串行口工作之前,应对其进行初始化主要是设置产生波特率的定时器1、串行口控制和中斷控制。具体步骤如下:

确定T1的工作方式(编程TMOD寄存器);

计算T1的初值装载TH1、TL1;

启动T1(编程TCON中的TR1位);

确定串行口控制(编程SCON寄存器);

串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)

以上材料引自郭天翔的51单片机教程,强烈推荐此视频可以上网查郭天翔《十天学会单片机》。


我要回帖

更多关于 两个单片机串口通信程序 的文章

 

随机推荐