微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用纯软件实现单片机远程通信的设计

利用纯软件实现单片机远程通信的设计

时间:02-05 来源:互联网 点击:

软件串行口接收和发关的工作原理和过程如下:单片机复位后,执行初始化程序时,定义P1口为位控方式,其中P1.0和P1.1定义为输入,P1.2和P1.3定义为输出。P1.2初始化为"1",P1.3初始化为"0",这样发送信号处于停止位(差分电平"1")。定义INT0为负沿触发。允许中断且定义成高优先级,然后开中断,两机进入随时可开始串行通信的等待状态。A、B不通信时,两机的收发均为"1",一旦某机(假设为A)需要与对方通信,A机以约定的波特率(假定为9600bps),通过P1.2和P1.3发送。发关和接收一个字节的过程如下:

  A机发送端首先发送起始位("0"电平),B机INT0引脚产生下跳沿后,产生中断申请。B机CPU响应此中断后,执行INT0中断服务子程序。在中断服务子程序开始,用位输入指令读入P3.6状态,如果是"1"电平,则表明此次中断是受干扰所致,因而取消此次接收过程,中断返回;如果P3.6状态读入电产是"0",则表明本次中断确系A机发送超始位所引起,经精确延时,在A机发送各数据位中间处进行采样,获得各数据位的状态,最后生成一个字节,送有关单元之后中断返回。虽然送往INT0的信号为TTL电平,但是由于它的传输速率非常之低,加上软件抗干扰措施,所以仍然可以有效地传输1200米。

  软件串行通信的编程

  在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0.

  我们针对性地采取以下措施:用定义成高级中断的外中断引脚下接收线相连,来及时捕捉起始位信息,并在确定采样时刻的计算中扣除中断响应滞后的延时时间;精心设计、编写程序,逐条计算指令实际执行时间,排除其他中断干扰(关中断),从而保证在每个数据位中间处进行采样;每位重复采样多次,确定各数据位的状态,从而可大大减少远程通信常见的瞬态干扰(其特点是幅度大、作用时间短、随机性强)对通信的不良影响。综合采用上述技术措施以中断方式工作的接收(1帧)的中断服务源程序见程序清单):

  以上指令共46个机器周期(T),加上中断响应平均延时5个机器周期,所以程序执行到此,即A机发送起始位(开始变低)到此已经历51T.由于MCS-51指令的1个机器周期(T)相当于12个时钟周期,所以当用12MHz的晶振时,1个机器周期(1T)相当于是1μs.51T相当于51μs.

  从A机发出超始位到此共延时51T+4T+88T=143T,相当于143μs.

  传输率为9600bps时,每位费时104μs(即1s/9600)。从起始位开始到D0位中间1.5位,费时1.5×104μs=156μs.下面程序在156μs及其前后各11μs处对D0位进行共3次采样,记录D0采样结果为0次数。如果3次采样结果为0的次数小于等于1,则判断D0=1.如果3次采样结果为0的次数大于等于2,则判断D0=0.这样极大地增强了串行通信的可靠性。然后再经过延时后对其他各位数据进行同样的三次采样,直到D0~D7共8位数据全部采样结束。

  以上程序执行用去40T,加上前面的143T,共花去183μs.每次返回NEXT3循环一次,读入一位数据。在程序输入NEXT3前,给R0赋值02H,就能保证以后各位数据位3次采样的准确时刻。此中断服务子程序段不仅能实现在每位数据采样,而且还在中间时刻前后11μs各采样1次。以3次数据的多数结果确定该位的值,可大大降低因干扰出错的概率,因此在干扰严重的远程通信中有很强的适应性。

  结语

  本文介绍的GMS97C2051单片机远程通信的纯软件方法和程序也适合于ATMEL公司的AT89C2051单片机,对其他单片机的远程通信也具有一定的参考价值。文中提供的软件接口方法和源程序经实际应用表明,该方法可延长通信距离至1200米(9600bps时)。本方法的不足之处在于软件编程要求比较高,如果要实现即软件编程简单、又通用性好的单片机远程通信,还是要使用RS-232/RS-485/RS-422转换器或光隔远程收发器。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top