分别就PC机的DOS级和BIOS级异步串行通信编程方法做一简单介绍。 O5-;I,)H
O5-;I,)H
1.DOS级的PC通信 O5-;I,)H
O5-;I,)H
PC机通常配备有两个异步通信端口,分别称作为COM1和COM2,它们都符合RS-232C标准。在DOS操作系统中,COM1、COM2被作为I/O设备进行管理,COM1、COM2便是它们的逻辑设备名。据此,DOS便可通过对COM1、COM2的操作来实现PC之间的异步串行通信。 O5-;I,)H
DOS的MODE命令可用以设置异步串行端口的参数,DOS的COPY命令允许将异步串行端口作为一个特殊的“文件”,以对其进行数据传输。下面举一个利用DOS的MODE、COPY命令,进行双机键盘输入字符传输的例子。 O5-;I,)H
MODE命令的格式为: O5-;I,)H
MODE 端口名:数据速率,校验方式,数据位数,停止位位数 O5-;I,)H
其中端口名为COM1或COM2;数据速率可选150、300、600、1200、2400、4800或9600bps;校验方式为E(偶校验)、O(奇校验)或(无校验);数据位数为7或8位;停止位位数为1或2位。通信双方设置的参数应一致,如双方都键入如下命令 O5-;I,)H
MODE COM1:1200,E,7,1 <Enter> O5-;I,)H
则表示双方以COM1为异步通信端口、速率1200bps、偶校、7位数据位、1位停止位的设置参数据进行通信。 O5-;I,)H
DOS中有一个名为CON的标准控制台设备,作为输入时CON指的就是键盘,作为输出时CON指的就是显示器。准备发送的PC机执行如下命令: O5-;I,)H
COPY CON :COM1: <Enter> O5-;I,)H
表示将从键盘收到的信息通过COM1串行口发送出去。准备接收的PC机执行如下命令: O5-;I,)H
COPY COM1:CON: <Enter> O5-;I,)H
则表示将接收来自COM1串行口的信息,并在显示器上加以显示。 O5-;I,)H
两台PC机分别执行完上述命令后,在发送方键盘上输入的字符便会在接收方显示器上显示出来。 O5-;I,)H
上面介绍的是用DOS的MODE,COPY命令实现的最简单的PC通信。在MS-DOS的高版本中(例如MS-DOSV6.0)还提供了一条INTERLNK命令,实际上它是一个通信程序。使用INTERLNK命令和一根连接两台PC机串行端口的电缆,可以使一台PC机从另一台PC机的磁盘驱动器中存取数据并运行程序,无需再使用软盘去复制文件。 O5-;I,)H
用以键入命令的PC机叫客户机(Client),与客户机相连的PC机叫服务器(Server)。客户机使用服务器的驱动器和打印机,服务器显示两台PC机的连机状态。 O5-;I,)H
当两台PC机被INTERLNK连接以后,服务器上的驱动器便以扩展驱动器的形式映象到客户机上,若两台PC机原来均有A,B,C三个驱动器,则连接后客户机除了自身的三个驱动器外,又多了E,F,G(服务器驱动器映象)三个扩展驱动器,客户可以象使用自己的驱动器一样使用这些扩展驱动器。 O5-;I,)H
使用INTERLNK时,每台PC机上至少要有一个空闲的串行口,还要一根3导线或7导线的零调制调解器(Null MODEM)串行电缆线,客户机上至少有16K空闲内存,服务器上至少有130K空闲内存。 O5-;I,)H
在客户机的系统配置文件CONFIG.SYS中添加如下命令: O5-;I,)H
DEVICE=C:\DOS\INTERLNK.EXE/DRIVES:5 O5-;I,)H
再重新启动客户机,便可装入INTERLNK。这里假设INTERLNK.EXE已存在于客户机C驱动器的DOS目录中,/DRIVERS:5参数用于映象5个服务器驱动器,缺省情况下为3个驱动器。 O5-;I,)H
服务器上启动INTERLNK不需对其CONFIG.SYS作任何改动,只需在DOS命令提示符下键入INTERLNK即可。此时,屏幕底下出现一行状态信息,显示出INTERLNK的连接状态。 O5-;I,)H
关于DOS级通信命令的详细使用方法,可参阅有关DOS手册。 O5-;I,)H
O5-;I,)H
2.BIOS级的PC通信 O5-;I,)H
O5-;I,)H
PC级的基本输入输出系统(BIOS)总的中断14H提供了异步串行端口的四种通信服务功能,通过之种功能,可以访问串行通信端口,实现连机通信。INT 14H的串行端口通信功能为: O5-;I,)H
功能号 功能 O5-;I,)H
00 通信端口初始化 O5-;I,)H
01 向通信端口写一个字符 O5-;I,)H
02 从通信端口读一个字符 O5-;I,)H
03 返回通信端口状态 O5-;I,)H
INT 14H 的一般汇编语言调用顺序如下: O5-;I,)H
MOV AH, <功能号> O5-;I,)H
MOV DX, <端口号> O5-;I,)H
(在相应寄存器中装入与功能有关的参数) O5-;I,)H
INT 14H O5-;I,)H
(1)初始化通讯端口 O5-;I,)H
调用: AH = 00H O5-;I,)H
AL = 初始化参数 O5-;I,)H
DX = 端口号(COM1为0, COM2为1) O5-;I,)H
返回: AH = 通信端口状态 O5-;I,)H
AL = 调制解调器状态 O5-;I,)H
初始化参数为8为二进制数,其中各位的含义如图3.12所示。 O5-;I,)H
O5-;I,)H
图3.12(P61) O5-;I,)H
O5-;I,)H
若置COM1为9600bps,8位数据位,1位停止位,无奇偶校验,指初始化参数为11100011B,即0E3H。程序调用如下: O5-;I,)H
MOV AH,0 O5-;I,)H
MOV AL,OE3H O5-;I,)H
MOV DX,0 O5-;I,)H
INT 14H O5-;I,)H
O5-;I,)H