| Turbo C中异步通信功能调用 |
|
| 作者:陆志才 文章引用自“微型计算机组成原理”(高教出版社,南开大学2003)点击数: 更新时间:2007-3-12 20:42:21 |
|
| |
|
|
Turbo C中异步通信功能调用
异步通信BIOS功能调用(INT 14H软中断)一般用于汇编语言编程。当用高级语言时应利用语言本身提供的相应功能。
为支持异步通信口操作,Turbo C提供了bioscom( )函数。该函数的原型是:int bioscom(int cmd,char byte,int port)。其中,port用来指定要操作的通信口:0为COM1,1为COM2。cmd为操作命令,可取四种值:0为初始化port指定的通信口;l为发送一个字符至port指定口;2为从port指定口接收一个字符;3为取port指定口的状态。中间的参数byte在cmd为0时,为初始化参数字节,各位的含义同INT 14H功能0的初始化参数;在cmd为l时,为欲发送的字符;在cmd为2或3时,byte取0。
bioscom( )函数的返回值是int型。它的高字节除第7位为1表示超时外,其他为LSR相应位的内容,含义同LSR。接收时常判别第0位,若为1,表示已接收到一个字符。发送时常判别第5位,若为l,表示发送保持器已空,可以发送下一个字符。返回值的低字节在cmd为0、1或3时,为MSR的内容,含义同MSR;在cmd为2时,为接收到的字符。
下面的程序是用查询方式对COM2进行操作。它的功能是:在接收到以“$”结尾的字符串时显示该字符串;在接收到以“D”开始、以“$”结尾的字符串时回送一事先准备好的字符串。该程序需用CTRL C命令(即同时按下CTRL键和C键)强行终止。


在PC系列机中提供了通信中断逻辑,但DOS操作系统本身不支持异步通信中断。用户若要使用中断方式,需要做以下工作:
①编写通信中断服务程序;
②设置中断向量,即把通信中断服务程序入口地址填人中断向量表;
③置OUT2为1,即允许通信接口逻辑的中断送到系统总线上;
④取消对通信口中断的屏蔽。
下面是用中断方式进行通信的两个程序示例。程序1的功能是:在接收到以“D”开始、以“$”结尾的字符串时将其显示出来(在主程序中),并回送一字符串;按任一键,程序退出。程序2的功能是:每当键盘输入一字符串后,将该字符串发送出去;接收中断中通过BIOS
功能调用显示所收到的字符;键入一字符串并回车后,立即按任一键,程序退出。






|
|
本篇文章属于主题:PC系列机的串行通信,了解更多请点击:PC系列机的串行通信 |
|
|
| 文章录入:admin 责任编辑:admin |
|
上一篇文章: 异步通信BIOS功能调用 下一篇文章: Windows平台上的串行通信简介 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |