灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2379回复:0

串行通信口的中断功能

楼主#
更多 发布于:2012-09-10 18:55

计算机的通信功能是现代计算机网络的最基本功能。如果计算机没有通信功能,计算机网络环境也就无从谈起。一台计算机与其它计算机(或设备)之间通信除了必要的物理连接之外,它们之间通信接口的功能就是另一个极其重要的功能模块。

从计算机通信的本质来看,通信就是发送或接受具有一定格式的二进制位。这些二进制位通过一些应用程序――如浏览器――的解释显示成具有不同表达形式的文字或图象。

为了方便实现计算机的通信功能,在系统的低层或操作系统中都有不同程度的支持,如:DOS、Bios和NETBIOS等系统中都相应通信功能或中断服务。下面仅仅介绍在汇编语言程序中如何使用通信功能,有关通信功能的详细内容在《计算机通信与接口技术》课程会有更深入的论述。

1、DOS中的通信功能

INT 21H提供了对通信口COM1操作的功能调用。其具体描述如下:

03H――从辅助设备读入一个字符,该辅助设备的缺省值为COM1

04H――向辅助设备输出一个字符,该辅助设备的缺省值为COM1

有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之字符功能调用类。

2、BIOS中的通信功能

BIOS系统提供了中断14H来实现对通信端口的控制能。这些具体的功能如下:

00H――初始化通信口

01H――向通信口输出字符02H――从通信口读入字符

03H――读取通信口状态

有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之串行口服务。

3、通信功能的应用举例

例8.9 把字符串"Hello, World"从COM1端口传输出去。在传输过程中,要求传输速率为9600波特,字长为8位,1位停止位,无齐偶校验。

解:

.MODEL SMALL

.DATA

  MSG DB "Hello, World"

  MLen EQU $-MSG

.CODE

.STARTUP

MOVAL, 0E3H;0E3―9600、无齐偶校验、字长8位,1位停止位

MOVDX, 0

MOVAH, 0

INT14H;初始化通信口COM1

MOVBX, OFFSET MSG

MOVCX, MLen

MOVDX, 0

again:

MOVAL, [BX]

MOVAH, 1

INT14H

TESTAH, 80H;如果发送字符失败,继续发同一个字符,这里可能

JNZagain;构成死循环。在实际工作过程中,还有其它考虑。

INCBX

LOOPagain

.EXIT0

END

例8.10 把从COM1端口读入的字符显示在屏幕上。如果通信端口数据未准备好,则程序处于等待状态;若传输出错,则用红色显示字符"?"。

解:

……

again:

MOVDX, 0

MOVAH, 3

INT14H

TESTAH, 1H;检测状态字节AH的最后一位,看数据是否准备好

JZagain

MOVDX, 0

MOVAH, 2

INT14H;从COM1端口读字符

TESTAH, 80H;检测读字符是否成功

.IF ZERO?;读字符成功

  AND AL, 7FH;屏蔽掉最高位,使之为字符

  MOV BL, 15;正常颜色:白色

.ELSE

  MOV AL, ’?’;显示字符"?"

  MOV BL, 12;错误颜色:红字

.ENDIF

MOVBH, 0

MOVAH, 0EH

INT10H

JMPagain

……

喜欢0 评分0
游客

返回顶部