双机通讯设计

2015-02-04 22:38李槐生
科技与创新 2015年1期
关键词:双机低电平高电平

李槐生

摘  要:用汇编语言编写了一个双机通讯程序,即用中断的方式实现从发送方键盘上输入一个字符,接收方收到该字符后,将其显示在微机屏幕上的过程。

关键词:双机通讯程序;双机串行通讯;8250芯片;Modem

中图分类号:TP273+.5            文献标识码:A               DOI:10.15913/j.cnki.kjycx.2015.01.013

1  双机通讯

双机串行通讯如图1所示。

图1  双机串行通讯

双机通信时,通常采用串行方式。串行通讯是指只需要1条数据线就可以传送数据,且数据各数位按照规定顺序传送的通讯方式。从图1中看以看出,用串行通信线将2台计算机连接起来,再调用BIOS中断指令,可利用中断方式实现串行通信。在串行方式中,通信接口每次由CPU中获得8位数据,并串行通过1条线路,每次发送1位数据。

2  8250芯片和接口电缆

2.1  可编程串行通讯接口8250

8250芯片是各种微机系统和计算机网络中被使用最多的一种异步通信接口芯片,是异步通信卡的核心部件。该芯片主要包括总线缓冲器、芯片内部选择控制逻辑、接收控制电路、发送控制电路、传输速度控制电路、调制解调控制电路和中断控制电路。该芯片具有以下6种性能:①仅适用于异步串行通信方式,可选择每字符的数据位数为5~8位;②内装可编程波特率发生器,允许数据传输的波特率为50~9 600 bps,且具有独立的接收器时钟信号输入;③接收和发送均具有双重缓冲;④具有优先权中断管理系统,可对发送、接收、错误和通信线路状态进行中断检测;⑤可提供通信线路和Modem的全部运行状态;⑥能检测假起始位,产生和检测终止符,且具有自诊断测试功能。

2.2  8250引脚

2.2.1  数据总线D0~D7

CPU与8250之间的信息通过数据总线D0~D7交换。

2.2.2  地址和地址控制线

地址线A0~A2寻址8250内部寄存器。3个片选线为CS0、CS1和CS2都有效时,才可选中8250芯片。地址选通信号ADS(非)低电平有效时,锁存上述地址线和片选线的输入状态,并保证读写期间的地址稳定。另外,当3个片选线都有效,且片选输出引脚CSOUT输出高电平时,证明8250已被选中。具体如图2所示。

2.2.3  读写控制线

8250读写控制信号有2对,每对信号的作用完全相同,只有有效点不同。当8250被选中时,当数据输入选通信号DISTR和DISTR(非)中只有一个信号有效时,CPU从被选择的内部寄存器中读出数据;当数据输出选通信号DOSTR和DOSTR(非)中只有一个信号有效时,CPU会将数据写入8250被选择的内部寄存器。另外,CPU从8250读取数据时,8250输出驱动器禁止信号DDIS为低电平,议禁止外部收发器对系统总线的驱动,且DDIS为高电平信号。

图2  8250引脚图

其中,输入信号的引脚如下:①CS0、CS1、CS2为片选信号。当这3个片选信号同时有效时,芯片被选中,经地址选通信号ADS锁存后,8250才可以与CPU通信。②ADS为地址选通。当该信号有效时,锁存片选信号(CS0、CS1、CS2)和寄存器选择信号(A0、A1、A2)。只有当寄存器选择信号在读操作或写操作期间不稳定时,才需要有效的 ADS输入;不需要此信号时,需要将其接入低电平。③DISTR、DISTR为数据输入选通。当该芯片被选中,且DISTR为高电平或DISTR为低电平时,允许CPU从8250中某一被选中的寄存器读取状态信息或数据。④DOSTR、DOSTR为数据输出选通。当该芯片被选中,且DOSTR为高电平或DOSTR为低电平时,允许CPU从8250中某一被选中的寄存器写入数据或控制字符。⑤A0、A1、A2为寄存器选择。这3个信号用于在读操作或写操作期间,选择8250中的一个读寄存器或写寄存器。⑥MR为主复位。当MR为高电平时,除接收数据寄存器、发送保持寄存器和数锁存寄存器外,其余寄存器和控制逻辑均被复位,SOUT、INTRPT、OUT1、OUT2、RTS和DTR输出信号也会受到影响,MR一般接入系统的复位信号线。⑦RCLK为接收时钟。接16倍接收波特率的时钟信号。⑧SIN为串行输入。由外设或数据设备发送的串行数据接收端。

输出信号引脚如下:①DTR为数据终端是否准备好。当DTR为低时,则通知Modem8250可开始通信。将Modem控制寄存器的第0位(DTR)设置成1,DTR引脚就会变为低电平。②RTS为请求发送。当RTS为低时,则通知Modem8250可发送数据。将Modem控制寄存器的第1位(RTS)设置成1,RTS引脚就会变为低电平。③CSOUT为片选输出。当该信号为高电平时,表示8250已被CS0、CS1和CS2信号选中。只有该信号为高电平时,才能开始传送数据。④BAUDOUT为波特率输出。该信号是8250发送器所使用的传输速率16倍频的时钟信号。如果将该信号与RCLK相连,则此信号也可作为8250接收器的时钟信号。⑤INTRPT为当下列任意一种中断类型出现有效状态,并通过中断允许存器允许中断时,此信号为高电平。中断类型包括接收器错误标志、接收数据就绪、发送保持寄存器空和Modem改变状态。⑥SOUT为串行输出。它是串行数据的输出端。

2.2.4  复位线MR

该引脚接至系统的复位信号Reset.当其有效时,8250复位,控制部分寄存器和输出信号的状态如图3所示。

图3  8250的复位状态

2.2.5  中断请求线INTRPT

8250内部有4种类型的中断源,当任意一个未被屏蔽的中断源有请求时,INTRPT输出高电平会向CPU

请求中断。适当的中断服务或复位MR有效都可使INTRPT变为低电平。

2.2.6  时钟信号

外部晶体振荡器电路产生的时钟信号送至时钟输入引脚XTAL1,并作为8250的基准工作时钟。

2.2.7  串行数据输入线SIN

由串行数据输入线SIN接收设备送来的串行数据。

2.2.8  串行数据输出线SOUT

8250由串行数据输出线SOUT发送串行数据给通信设备。

2.2.9  调制解调器控制线

调制解调器控制线包括数据终端DTR(非)、数据设备DSR(非)、发送请求RTS(非)、允许请求CTS(非)、接收线路检测RSLD(非)和振铃指示RI(非),均为低电平时有效。

2.2.10  输出线

OUT1(非)和OUT2(非)是2个一般用途的输出信号,调制解调器控制寄存器中的D2和D3可使其输出低电平的有效信号,并能使其复位恢复为高电平。

2.3  RS-232-C串行接口标准

RS-232-C接口既可用于同步通信,又可用于异步通信,它是一种在数据终端设备DTE与数据通信设备DCE之间的联接标准。在短距离通信时,可直接通过RS-232-C接口在计算机与计算机之间实现相连,具体如图4所示.

图4  通过RS-232-C接口连接计算机

3  编程思路

第一步,设传输波特率——写入除数寄存器。应确定传输速率、接收时钟和发送时钟,由此计算出分频系数,并将其写入除数寄存器。下面是第一个通信接口COM1工作在1 200波特率的设置程序段:

MOV        AL,80H

MOV        DX,3FBH

OUT         DX,AL         ;写入通信线路控制寄存器,使DLAB=1

MOV        AL,60H         ;分频系数:1.834 2 MHz/(1 200×16)=96=60H

MOV        DX,3F8H

OUT         DX,AL         ;写入寄存器低8位

MOV        AL,0

INC         DX

OUT        DX,AL          ;写入寄存器高8位

第二步,设置字符格式——写入线路寄存器。根据起止式协议,假使我们用7个数据位、2个停止位,采用奇校验的方式,则程序段如下:

MOV        AL,00001110 B

MOV        DX,3FBH

OUT         DX,AL      ;写入通信线路控制寄存器

这段程序同时使DLAB=0,以方便下述初始化过程。

第三步,设置中断工作方式的程序段。调制解调器控制寄存器的最低位两位通常为1,即使系统中没有使用调制解调器,也可建立数据终端准备好DTR(非)和请求发送RTS(非)的有效信号。设置中断工作方式的程序段为:

MOV        AL,0BH             ;控制OUT2为低,允许INTRPT产生请求

MOV        DX,3FCH

OUT         DX,AL

第四步,设置中断允许或屏蔽位——写入中断允许寄存器。其程序段为:

MOV       AL,0          ;禁止所有中断

MOV       DX,3F9H

OUT        DX,AL        ;写入中断允许寄存器(应保证此时DLAB=0)

第五步,读取通信线路的状态,判断是否可通信。

第六步,送出或读入一个字符。

第七步,重复第二步和第三部,直至通信结束。

当允许中断时,CPU送出(或读入)一个字符。在8250收到一个字符或将一个字符送出后,会通过IRQ4(或IRQ3)向CPU申请中断,识别8250的中断类型,并作出相应的处理(送出或读入一个字符等)。

4  程序设计

具体的程序设计如下:

DATA SEGMENT

SHOWMESS DB 100 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX          ;数据段基值装入(通过AX)

LEA DX,SHOWMESS        ;字符串有效地址装入DX寄存器

MOV AH,09H

INT 21H            ; DOS显示字符串功能调用

MOV DX,1

MOV AL,8EH

INT 14H              ;初始化串口COM2

FORE:MOV AH,03H

MOV DX,1

INT 14H               ;读串口2状态字

TEST AH,01H         ;数据准备好?

JNZ RECE             ;准备好转接收程序

TEST AH,20H         ;发送移位寄存器空

JZ FORE               ;不空转FORE,继续检测

MOV AH,1

INT 16H    ;否则利用BIOS键盘中断调用,输入字符

JZ FORE               ;没有按键,继续

MOV AH,0

INT 16H               ; BIOS键盘输入

CMP AL,1BH

JZ QUIT               ;是否是ESC键,是否退出

MOV AH,1

MOV DX,1

INT 14H               ;是否则发送字符

CMP AL,0DH

JNZ RECE

MOV AH,02H

MOV DL,0AH

INT 21H         ;如果发送的为回车符,则显示换行

MOV DL,0DH

INT 21H

RECE:MOV AH,3

MOV DX,1

INT 14H               ;读串口2状态字

TEST AH,01H         ;数据准备好?

JZ FORE           ;数据位准备好转FORE继续检测

MOV AH,01H

MOV DX,1

INT 14H                ;否则读入字符

MOV DL,AL

AND DL,7FH          ;屏蔽校验位

MOV AH,02H

INT 21H                ;DOS中断显示字符

JMP FORE              ;接受方发送字符

QUIT:MOV AH,4CH          ;退出程序,返回DOS

INT 21H

CODE ENDS                  ;代码段结束

END START              ;程序结束

〔编辑:张思楠〕

Dual-machine Communication Design

Li Huaisheng

Abstract: Written in assembly language a two-machine communication program, which uses interrupts a way that a character input from the keyboard on the sender, the recipient received after the character, which is displayed on a computer screen process.

Key words: two-machine communication program; dual serial communication; 8250 chip; modem

猜你喜欢
双机低电平高电平
一种实用的电脑接口判断方法
高电平MMC子模块电容电压控制策略研究
双机斗艳
数字电子技术的应用
浅谈物理电路与数字电路
关于Multisim10.0的高电平调幅电路仿真研究
DX型中波发射机PB200单元控制板时钟电路工作原理
蓝天双雄——歼八II双机编队