C语言如何实现串行通信串口通信维普资讯的网络板!一设备驱动器能了解这!剐曩是网当全部这屠的程序一起。作就形成丁局域I‘网操作系统,它能支持局网服务和蛊用程序——遗’否采纳了直接存贮器访问和期望的Io口了中断/_乏典型的网络硬件是由微机局部网络卡和联结计算机的电缆组成。当夸最常用的二种硬件联结是I!』太网和标志环嘲(knRig,虽然证有许多Toen)蔗局域圈成为理代计算机里程碑的一个必要的组成部分。[孙月和译 ̄,YTE,Jn,18,北方校]Bue99系统使用ARCnte和Apl的LcllpeoatkaC言如何实现串行通信语大连海运学院电子系赵伟引曹我们在编制计算机通行软件中发觉,目前流亍亍的太多数C语言版本(c8MsMS如6c30C不再说明白。裹11H号软件中断4输八参数功能输出参数40)都没有供应串行通信的功能个别版本.等(如MS.)虽然有涉及串行通信的函数,能C50功也远不如汇编语言和BAISC语言强。为此.我们编写了几个子程序,它们分别实现对串行口的初始化、毂据传递、数据接收及状态检襁6等功能,子程序的调用方式和C语言中—般函数的调用相同.因此使用起来特别便利。子程序的编写有二种方式:c语言方式和汇编语言方式,可以依据详细状况选择一种自己认为台适的方式。本文源程序全部用c6匿Mirsf宏汇编编写,于其他版本的CBcoo ̄对语言.个别语句要稍加修改之后才能使用。子程序编写好后,曾经在IBM~c机上使用过较长时间,P效果良好。一AH=0DX=串行端口号初始化串AL=初始化参数行口A信状H曩线AL:MODEMI状态A端号行费AfH通绞态H;发LA信状口送IA=送J的符L发中字l字符I一羯靳姐默A嚣粤行态试LH。【测端串棱口AH我们编写的子程序基本上是用lH号软件中断4宴现的,它们妁功能如下:iicm(o ̄ofgl设置并初始化由pr指ntopr,cni)ot、软件中断介绍由于子程序的编写大量使用了软件中断,在此首先对轼件中断做简洁的介绍。IM—c机写在ROM中的程序,一部分是BPBAC解释程序.另部分就是基本输人输出系统SIBIOS。定的串行口,参数cni说明白波特率、数据ofg位、停止位和奇偶位。tnhr(othrcapr,c):将字待c送往由pn指定的hoB0s主要功能是驱动系统中所配置的常1的用外设.使程序员不必过多地关怀设备的物理特性.从而能便利地掌握各种输几输出操作。BOSI允许程序员脚软件中断的方式调用其中的各个子程串厅口发送。来的字符、rvhr(ot:接嵌一个Iotccapr) ̄pr指定的串行口送序,这就太大简化了程序员的工作在BO中,IS与串行通信有关的是lH号软件中断,它的输八/4输出参数阻及实现的功能如表I示表中的韧始所化参数、通信线状态、MODEM状态等各个参数的s ̄o(ot:返回由pI指定时串行口状态。t.mpr)ac。t其*pr=0 ̄CQMI1)t代表COM=2ot代,xr=1.=、缩写子程序1)C语言实现方式基本含X.在许多参考资料上都可以查到,这里就C8允许用户调用BO6IS中全部的软件中断和系75串口通信维普资讯统功能调用c8与B160s的接口主要是通过系统库函数snvcrfrsyt(e。se.rc)来实现的.该函数的功能是调用BI的VC软件中断,八口参数为OSe号src{nx.bctutitaxx.ds.d,de:x.ilss}res1缸e,口参热为re,数的返回值是8s或88g出f5函o6o8标志寄存器的内容.为了实现串行通信.我们只要利用这一函数反复调用1P号软件中断,就可以完4I成对串行口的各种操作表2是子程序的源程序就rg.x=(t)0tes3Blrgdcs,x=potr ̄Sysnt(x1t04.rgsrg)e.esIrtr(esaeunrg.x)清单.文件名是SO-IC.它可以放在主程序中和主程序一起编译,也可以单独编译,形成so.BJIO后再与主程序进行连接。2{语言实现方式)亡编C8调用{8[编子程序与调用其它外部函数的方法相同.但对汇编语言的书写格式有严格的要求,小模式为例,要求的格式如下:ildo1hncuemde.襄2¥0.程序清单1c潭{tonicm(otcnf)pr,ofg{src{nxx.Ctut{ta,bX,d,s.d,sc;xtid,0'rs,egileolfchncudproa.rgaes.x=(《)ol08Inff;crg.x=prjcsdotpbiulc文件名文件名poerrcnapusbphEObqVp,sppobppS,i ̄m(x1o4.,ges,t)e,}tncr(otcrhapr,h)文饽名ednpildpiouhncueelge.endfsrc{nxx,C,d,iseI)tut{ta,bXx,d,d,regst关于所要求的汇编子程序的接式.有几个问题需要说明rg.x=(《)ccsa18lhItg-x=prcsdo%Sylsnt(X4,r¥s0le。()mo.1如1h.poou.eigeb三个不rlgeh,plu.是o可缺少的...