习题8习题解答
8.1 8255A的方式0一般使用在什么场合?在方式0时,如果要使用查询方式进行输入输出,应该如果处理?
解:方式0的使用场合有两种,一种是同步传送,另一种是查询式传送。在方式0情况下,没有规定固定的应答信号,所以,这时,将端口A和端口B作为数据端口,把端口C的4个数位(高4位或者是低4位均可)规定为输出口,用来输出一些控制信号,而把端口C的另外4个数位规定为输入口,用来读入外设的状态,即利用端口C来配合端口A和端口B的输入/输出操作。使用查询方式进行输入输出时,可利用端口C的某一位作查询,只有当该位为1时,方可以将数据送到输入或输出端口去。
8.2设8255A的4个端口地址分别为0C0H、0C1H、0C2H和0C3H,要求用按位置位/复位控制字使PC6输出方波信号,试编程实现。
解:MOV DX,0C3H
MOV AL,80H
OUT DX,AL
L1:MOV AL,0CH
OUT DX,AL
NOP
NOP
MOV AL,0DH
OUT DX,AL
NOP
NOP
JMP L1
8.3 设8255A接到系统中,端口A、B、C及控制口地址分别为220H、221H、222H及223H,工作在方式0,试编程将端口B的数据输入后,从端口C输出,同时,将其取反后从端口A输出。
解:MOV DX,223H
MOV AL,82H
OUT DX,AL
MOV DX,AL
MOV AL,221H
IN AL,DX
MOV DX,222H
OUT DX,AL
NOT AL
MOV DX,220H
OUT DX,AL
8.4对8255A的控制口写入B0H,其端口C的PC5引脚是什么作用的信号线?试分析8255A各端口的工作状态。
解:当控制字为B0H时,即10110000B
即8255A的端口A工作在方式1,作输入,端口C的上半部作输出,B端口工作在方式0,作输出,端口C的低4位作输出。
根据上述分析可得知,当8255A的端口A工作在方式1下作输入时,PC5的引脚作状态信号IBFA,即输入缓冲器满信号。
8.5并行通信和串行通信各有什么特点?
解:并行通信就是把一个字符的各数位用几条线同时进行传输。
 并行接口最基本的特点是在多根数据线上以数据字节为单位与I/O设备或被控对象传送信息。
在并行接口中,除了少数场合之外,一般都要求在接口与外设之间设置并行数据线的同时,至少还要设置两根联络信号,以便互锁异步握手方式的通信。
在并行接口中,每次以8位或16位为单位进行同时传送。因此,当采用并行接口与外设交换数据时,即使是只用到其中的一位,也要一次输入/输出8位或16位。
并行传送的信息,不要求固定的格式。
并行接口的优点是传输速率高,但由于需要多根数据线,因此不适合远距离数据传输,一般用于近距离传送的场合。
串行通信就是指通信的发送方和接收方之间的数据在单根通信线上逐位顺序传送。
计算机和外设之间只使用一根信号线传输信息,数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。
串行通信在一根线上既要传送数据,还要传送联络信号,因此,串行通信有一定的数据格式的约定,分为异步和同步数据格式。
串行传输的速率需要控制,通信双方要约定相同的波特率实现通信。由于受波特率上限的约束,串行通信速度慢。
信号的逻辑定义与TTL电平不相同。
8.6“由于按位置位/复位命令是对C口进行操作,所以可以写到C口”,这句话对吗?为什么?
解:不对。这是因为按位置位/复位是一个命令,它就要按命令的定义格式来处理每一位,如果把它写入端口C,就会按端口C的数据格式来处理。这两种定义完全不同的格式是不能互换的,所以,它只能写到命令端口中,按命令定义来处理。
8.7什么叫同步通信方式?什么叫异步通信方式?它们各有什么区别?
解:同步通信,即将许多字符组成一个信息组,字符一个接一个地传输,每组信息的开始要加上同步字符,没有信息传输出时,要填上空字符,同步通信不允许有间隙。异步通信,两个字符之间的传输间隔是任意的,每个字符的前后都要用一些数位作为分隔位。比较起来,在传输率相同时,同步通信方式下的传输效率要比异步方式下的高,因为同步方式下的非数据信息比例要较小。但是,在同步方式下,要求进行信息传输双方必须用同一个时间进行协调,在传输数据的同时,还必须传输时钟信号。而在异步方式下,接收方的时钟频率和发送方的时钟频率不必完全一样。
8.8什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为多少?
解:发送时钟与接收时钟的频率与位传输率的比称为波特率因子,而位传输率称为波特率。
发送/接收时钟频率=n×发送/接收波特率
=64×1200
=76800Hz
=76.8KHz
∴时钟频率为76.8KHz
8.9设异步传输时,一帧信息包括1位起始位、7位信息位、1位奇偶校验位和1位停止位,如果波特率为9600bps,则每秒能传输多少个字符?
解:即9600/(1+7+1+1)
=9600/10
=960个
∴每秒能传输960个字符
8.10两台PC机采用异步串行通信方式传送数据。帧格式为:字符数据位7位,停止位1位,用偶校验方式,波特率为2400bps。选用8250芯片,编写发送数据和接收数据的初始化程序段。
解: MOV DX,3FBH
MOV AL,80H
OUT DX,AL
MOV DX,3F8H
MOV AL,30H
OUT DX,AL
INC DX
MOV AL,AL,00H
OUT DX,AL
MOV DX,3FBH
MOV AL,1AH
OUT DX,AL
MOV DX,3FCH
MOV AL,03H
OUT DX,AL
MOV DX,3F9H
MOV AL,00H
OUT DX,AL
FOREVER,MOV DX,3FDH
IN AL,DX
TEST AL,1EH
JNZ ERROR
TEST AL,01H
JNZ RECEIVE
TEST AL,20H
JNZ RECEIVE
MOV AH,01H ;读键盘缓冲器内容,若有键按下,则ZF=0,且AL=字符码
INT 16H
JZ FOREVER
MOV DX,3F8H
OUT DX,AL ;读入接收字符
JMP FOREVER
RECEIVE: MOV DX,3F8H
IN DX,AL
AND AL,7FH
MOV AH,14H
INT  10H
JMP FOREVER
8.11选用8251A进行同步方式的通信,规定用内同步方式,同步字符为2位,用奇校验,7位数据位,端口地址为166H和167H,试对8251A进行初始化编程。
解: MOV DX,167H
MOV AL,18H
OUT DX,AL
MOV AL,16H
OUT DX,AL
OUT DX,AL
MOV AL,0B7H
OUT DX,AL
8.12选用8251A进行异步方式的通信,发送100个字符,规定波特率因子为64,7位数据位,1位停止位,用偶校验,端口地址为140H、141H,缓冲区首址为2000H:3000H,试对8251A编程。
解:发送程序:
START:MOV DX,141H
MOV AL,7BH
OUT DX,AL
MOV AL,37H
OUT DX,AL
MOV DI,3000H
MOV CX,100
L1:MOV DX,141H
IN AL,DX
AND AL,01H
JZ L1
MOV DX,140H
MOV AL,[DI]
OUT DX,AL
INC DI
LOOP L1
MOV AX,4C00H
INT 21H
接收程序:
BEGIN,MOV DX,141H
MOV AL,7BH
OUT DX,AL
MOV AL,14H
OUT DX,AL
MOV SI,2000H
MOV CX,100
L2:MOV DX,141H
IN AL,DX
TEST AL,38H
JNZ ERR
AND AL,02H
MOV DX,140H
IN AL,DX
MOV [SI],AL
INC SI
LOOP L2
JMP L3
 ERR:CALL ERR_OUT(略)
L3:MOV AX,4C00H
INT 21H