在Windows下实现PC机与单片机AT89C51的串行通信

[09-12 16:19:15]   来源:http://www.88dzw.com  单片机学习   阅读:8918

文章摘要:下面是单片机以方式1在直接传送下的中断接收和发送程序。由于没有使用通信握手,所以通信双方都应做好通信准备。在计算机接收、单片机发送时,由计算机先发送字母“R”,通知单片机计算机已准备好,然后计算机在事件驱动I/O方式下等待接收到字符“Y”;当单片机接收到“R”时,向计算机发送“Y”,表示单片机也已准备好,这样,一旦计算机接收到“Y”就表示双方都已准备好,二者之间就可以进行数据交换了。在计算机发送、单片机接收时,计算机发送1帧数据,单片机响应中断,接收数据。单片机程序的具体实现过程如下:org0000hajmpstartorg0023h;串行中断入口ljmps&rorg0100hstart:mo

在Windows下实现PC机与单片机AT89C51的串行通信,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
  下面是单片机以方式1在直接传送下的中断接收和发送程序。由于没有使用通信握手,所以通信双方都应做好通信准备。在计算机接收、单片机发送时,由计算机先发送字母“R”,通知单片机计算机已准备好,然后计算机在事件驱动I/O方式下等待接收到字符“Y”;当单片机接收到“R”时,向计算机发送“Y”,表示单片机也已准备好,这样,一旦计算机接收到“Y”就表示双方都已准备好,二者之间就可以进行数据交换了。在计算机发送、单片机接收时,计算机发送1帧数据,单片机响应中断,接收数据。单片机程序的具体实现过程如下:

  org 0000h
  ajmpstart
  org0023h  ;串行中断入口
  ljmps&r
  org0100h
start:mov tmod,#20h ;设置定时器T1方式2
  movpcon,#00h;使SMOD为0
  movtll,#0fdh;波特率为9600b/s
  movthl,#0fdh
  setbea;开全局中断
  clret1;关T1中断
  setbes;开串行中断
  setbtrl;开T1定时
  movscon,#50h;串行方式1,允许接收
  sjmp$
S&r:movc,ri
  jcrecive;RI为1,执行接收子程序
  sjmpsend;否则,执行发送子程序
recive:mova,sbuf;接收数据
  clrri
  cjnea,#52h,re;是否接收到“R”
  mova,#59h;是,发送“Y”
  movsbuf,a
  sjmpendtr
re:mov @rl,a  ;r1为接收数据存放地址
  incr1
  sjmpendtr
send:mova,@r0;发送数据,r0为存放数据的地址
  movsbuf,a
  jnbti,$
  clrti
  incr0
endtr:reti;中断返回

3 结束语
  串口通信是一种广泛应用于各个领域的通信方式,由于目前大部分计算机都安装了Windows95操作系统,所以本文具体实现了在Windows95下利用它的SDK函数来与单片机进行串口通信。本文所提出的实现函数在所有当前流行软件如VC++、Delphi等中都可实现。它不仅可以用于近距离的RS-232通信,而且,还可以实现中远距离RS-485通信。在使用该程序的通信系统中,近远距离的通信都取得良好的效果。


参考文献

 1 MirhoCA,TerrisseA著,贺军,高胜友译.WINDOWS95通信编程.北京:清华大学出版社,1997
 2 陈光东,赵性初.单片微型计算机原理与接口技术.武汉:华中理工大学出版社,1993


上一页  [1] [2] [3] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《在Windows下实现PC机与单片机AT89C51的串行通信》相关文章

分类导航
最新更新
热门排行