9.4.3.2 BIOS串行通信口功能
IBM PC及其兼容机提供了一种有较强的硬件依赖性,但却比较灵活的串行口I/O的方法,即通过INT14H调用ROM
BIOS串行通信口例行程序。该例行程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,读写字符等功能。
INT14H的AH=0功能把指定的串行通信口初始化为希望的波特率,奇偶性,字长和终止位的位数。这些初始化参数设置在AL寄存器中,其各位的含义如图9.7。
利用BIOS INT 14H,可以通过COM端口,与另一台PC机传送字符,其过程如下:
1. 用INT 14H,AH=1,AL=字符,发送一个字符。
2. 为了接收字符,用INT 14H,AH=3来获得COM端口的状态,其值返回在AH寄存器中。注意,MODEM的状态值是返回在AL寄存器中。
3. 检验COM状态端口的第0位,它是数据准备好位,如果该位为1,说明COM端口已接收到字符并送到了8250 UART。
4. 为了读取接收到的字符,使用INT 14H,AH=2功能,将字符读到AL寄存器。
在接收和发送过程,错误状态位(1,2,3,4位)一旦被置为1,则读入的接收数据已不是有效数据,所以在串行通信应用程序中,应检测数据传输是否出错。
奇偶错:通信线上(尤其是用电话线传输时)的噪音引起某些数据位的改变,产生奇偶错。通常检测出奇偶错时,要求正在接收的数据至少应重新发送一段。
超越错:在上一个字符还未被处理机取走,又有字符要传送到数据寄存器里,则会引起超越错。如果处理机处理字符的速度小于串行通信口的波特率,则会产生这种错误。
帧格式错:当接收/发送器未接收到一个字符数据的停止位,则会引起帧格式错。这种错误可能是由于通信线上的噪音引起停止位的丢失。或者是由于接收方和发送方初始化不匹配。
间断:间断有时候并不能算是一个错误,而是为某些特殊的通信环境设置的"空格"状态
。当间断位为1时,说明接收的"空格"状态超过了一个完整的数据字传输时间。
|
|