教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

C语言如何实现串行通信

来源:网络收集 时间:2026-05-01
导读: 串口通信 维普资讯 的网络板!一 设备驱动器能了解这!剐曩是网 当所有这屠的程序一起。作就形成丁局域 I‘网操作系统,它能支持局网服务和蛊用程序——遗’ 否采用了直接存贮器访问和期望的Io口了中断/ _乏典型的网络硬件是由微机局部网络卡和联结计算机的

串口通信

维普资讯

的网络板!一

设备驱动器能了解这!剐曩是网

当所有这屠的程序一起。作就形成丁局域 I‘网操作系统,它能支持局网服务和蛊用程序——遗’

否采用了直接存贮器访问和期望的Io口了中断/ _乏典型的网络硬件是由微机局部网络卡和联结计算机的电缆组成。当夸最常用的二种硬件联结是 I !』太网和标志环嘲 ( k n Ri g,虽然证有很多 To e n )

蔗局域圈成为理代计算机里程碑的一个必要的组成部分。

[孙月和译 ̄,YTE,J n,1 8,北方校] B u e 99

系统使用ARC n t e和Ap l的L c l l pe o at k a

C言如何实现串行通信语大连海运学院电子系赵伟

引曹我们在编制计算机通行软件中发现,目前流亍 亍的太多数C语言版本 ( c8 Ms · MS 如 6 c 30 C

不再说明了。 裹1 1 H号软件中断 4输八参数功能输出参数

4 0 )都没有提供串行通信的功能个别版本 .等 (如MS . )虽然有涉及串行通信的函数,能 C 50功也远不如汇编语言和BA I S C语言强。为此 .我们编写了几个子程序,它们分别实现对串行口的初始化、毂据传递、数据接收及状态检襁6等功能,子程序的调用方式和 C语言中—般函数的调用相同 . 因此使用起来非常方便。子程序的编写有二种方式:c语言方式和汇编语言方式,可以根据具体情况选择一种自己认为台适的方式。本文源程序全部用 c 6匿Mir s f宏汇编编写,于其他版本的C B c o o ̄对语言 .个别语句要稍加修改之后才能使用。子程序编写好后,曾经在I BM~ c机上使用过较长时间, P 效果良好。一

AH=0 DX=串行 端口号初始化串AL=初始化参数行口

A信状 H曩线AL:M ODEM

I

状态

A端号行费A f H通绞态 H; 发 L A信状 口 送 IA=送J的符 L发中字 l字符 I

一羯靳

姐默

A嚣粤行态试 L H。 【测 端串棱口 A H我们编写的子程序基本上是用 lH号软件中断 4宴现的,它们妁功能如下: i i

c m ( o ̄ o fg l设置并初始化由 p r指 n to p r,c n i ) ot

软件中断介绍由于子程序的编写大量使用了软件中断,在此

首先对轼件中断做简单的介绍。I M— c机写在ROM中的程序,一部分是 B P BA C解释程序 .另部分就是基本输人输出系统 SIBI OS。

定的串行口,参数 c n i说明了波特率、数据 of g位、停止位和奇偶位。 tn h r ( o t h r c a p r,c ):将字待 c送往由p n指定的 h o

B 0s主要功能是驱动系统中所配置的常 1的

用外设 .使程序员不必过多地关心设备的物理特性 .从而能方便地控制各种输几输出操作。B OS I 允许程序员脚软件中断的方式调用其中的各个子程

串厅口发送。来的字符

rv h r ( o t:接嵌一个 I o t cc a p r) ̄p r指定的串行口送

序,这就太大简化了程序员的工作在 B O中, IS 与串行通信有关的是lH号软件中断,它的输八/ 4 输出参数阻及实现的功能如表 I示。表中的韧始所化参数、通信线状态、MODEM状态等各个参数的

s ̄o (o t:返回由p I指定时串行口状态。 t . m p r) ac。t

其 *p r=0 ̄CQM I 1)t代表 COM=2 ot代, xr=1 .

=、缩写子程序1 )C语言实现方式

基本含X .在很多参考资料上都可以查到,这里就

C8允许用户调用B O 6 I S中所有的软件中断和系·7· 5

串口通信

维普资讯

统功能调用 c8与B1 6 0s的接口主要是通过系统库函数s n v c r f rs y t( e。se .r c )来实现的 .该函数的功能是调用BI的V C软件中断,八口参数为 OS e号sr c{n x.b c tu tit a x x.d s .d, d e: x.i l s s}re s 1

缸e,口参热为r e,数的返回值是8 s或8 8 g出 f5函 o 6 o8标志寄存器的内容 .为了实现串行通信 .我们只要利用这一函数反复调用 1 P号软件中断,就可以完 4I成对串行口的各种操作表 2是子程序的源程序就

r g . x= ( t ) 0t es& 3Blrg d c s, x= po t r ̄

Sysnt

( x1 t 0 4.& rgs& r g ) e . es I r t r (e s a eu n r g . x)

清单 .文件名是SO- I C.它可以放在主程序中和主程序一起编译,也可以单独编译,形成s o.BJ I O后再与主程序进行连接。 2{语言实现方式 )亡编

C8调用{ 8[编子程序与调用其它外部函数的方法相同 .但对汇编语言的书写格式有严格的要求, 小模式为例,要求的格式如下:i ld o 1h ncu e m de .

襄 2¥0.程序清单 1 c潭{ to nic m ( o t c n f ) p r, o fg

{

sr c{n x x.C tu t{ ta,b X,d, s .d, s c; x t i d, 0'r s, eg

i l e ol f c h nc ud pr o a .

rg a e s. x= (《 ) o l 0 8 I nff; cr g . x= p r j c sd o t

p bi u lc文件名文件名p o e r rcnapus bp h E O b q V p, s p po b p p

S, i ̄ m

( x1 o 4.

&, g e s,& t ) e,

}t nc r ( o t c r ha p r, h)

文饽名e d npi l d pio u h nc u e e l g e. e nd

f

sr c{n x x,C,d , i s e I ) tu t{t a,b X x, d,d, r egst

关于所要求的汇编子程序的接式 .有几个问题需要说明

r g . x= (《 ) c csa 1 8 l hIt g - x= p r c sd o% Sy l snt ( X 4,& r¥s 0 l e。

( )mo . 1如1h.p oo u . e i g e b三个不 r lg e h, p l u .是 o可缺少的定义文件,它们包含在所配置盼磁& r F )I c, s

盘上。

}r v ha ( r ) c c r po t

()c 6 2 8在调用子程序时把要传递的参数压八栈中 并且最左面的参数放在栈顶,右面的参数最放在栈底,因此在小模式下子程序取参数的地址分别是 b p+4 p,b+4+参数的长度,’”

f

sr c ̄n x,b tu t tta x.C X.d s,d,d,O; x, i s S}r egs j

o

r g . x= ( t ){ es a 281 0r g . x= p r c

d o%

( )子程序回送的c a型、t t 3 hr n型值存于 A x寄存器中 .

Sysn ( Xl t t 0 4,& r g .& r g ) cs es,r t e um (esa r g . x& 0 0f l x0 f )

有了上面的介绍,就不难编写串行通信子程序了。源程序清单列于亵 3,文件名为s o. S .为 I AM了生成目标文件,首先用M A M软埠进行汇编, s

} aⅫ t I( cH ) p

然后就可以和主程序进行连接了,

衰5¥0 4 U曩墨序蒲簟 1. 5i l d d 1h nc u e mo e . L l d p o o u h uc u ̄ r l s e.J

pu h p s b mO p v b

t

s p

ticm m d nto pI pu lc tnc r b i r hapor ̄= 4 c bar ̄ 6 t c a pr near m h r oc

 ̄ O d ( p+ pr'2 W V x i b o t

p lc i# o ub i ntc mpot= 4 t

 ̄ O a .[ p+ c nf ' W V 1 b i o ̄3 1 o a 0 nv h il 1 H rt 4 p p p o D

c n i= 6 o fs i lor p o i i nt c/l rcI" ̄

·7· 6

串口通信

维普资讯

p s p uh bi ov p, s n- b p

p s p uh bm ov bp . s p

E pt o t b p r3 ̄ pt ha 3 b c r

mo x.[ p p r3 vd b+ otm o h, 2 v ai t l H n 4 p p b o p

mOV x.[ p+ p r ̄ d b o tm o h. 3 v ai 1 nt 4H poP bpr et

pop bpr et

r vc r ̄dp c hc el,

sa ̄ t t om c ndpI

t nc r口 d r ha p,

p b i 8 a cO n u lc t t i pu l c r vc r b i c hapor t= 4 ’ por t= 4

i l e p …… 此处隐藏:3876字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言如何实现串行通信.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/269044.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)