微机答案(全) 下载本文

10us/0.5us = 20 CNT1: 1ms/0.5us = 2000 CNT2:

1s/0.5us = 2 ×1000000

显然,计数器2的计数初值已超出了16位数的表达范围,需经过一次中间分频,可将OUT1端的输出脉冲作为计数器2的时钟频率。这样,CNT2的计数初值就等于1s/1ms = 1000。线路连接如图所示。8253

8253的初始化程序如下: MOV DX,0D0D3H MOV AL,16H ;计数器0,低8位计数,方式3 OUT DX,AL

MOV AL,74H ;计数器1,双字节计数,方式2 OUT DX,AL

MOV AL,0B4H ;计数器2,双字节计数,方式2 OUT DX,AL

MOV DX,0D0D0H

MOV AL,20 ;送计数器0的计数初值 OUT DX,AL

MOV DX,0D0D1H

MOV AX,2000 ;送计数器1的计数初值 OUT DX,AL

MOV AL,AH OUT DX,AL

MOV DX,0D0D2H

MOV AX,1000 ;送计数器2的计数初值 OUT DX,AL MOV AL,AH

OUT DX,AL .

7.5 某一计算机应用系统采用8253芯片的计数器0作频率发生器,输出频率为500Hz;用计数器1产生1000Hz的连续方波信号,输入8253的时钟频率为1.19MHz。试问:初始化时送到计数器0和计数器1的计数初值分别为多少?计数器1工作于什么方式下? 解:计数器0工作于方式2,其计数初值=1.19MHz/500Hz=2380

计数器1工作于方式3,其计数初值=1.19MHz/1KHz=1190

7.6 若所用8253芯片用软件产生一次性中断,最好采用哪种工作方式?现用计数器0对外部脉冲计数,当计满10000个脉冲时产生中断,请写出工作方式控制字及计数值。

解:若8253用软件产生一次性中断,最好采用方式0,即计数结束产生中断的工作方式。其方式控制字为:00110000B。计数初值=10000

7.7 试比较并行通信与串行通信的特点。 解:并行通信是在同一时刻发送或接收一个数据的所有二进制位。其特点是接口数据的通道宽,传送速度快,效率高。但硬件设备的造价较高,常用于高速度、短传输距离的场合。串行通信是将数据逐位的传送。其特点是传送速度相对较慢,但设备简单,需要的传输线少,成本较低。所以常用于远距离通信。

7.9 在对8255的C口进行初始化为按位置位或复位时,写入的端口地址应是( )地址。 解:应是(8255的内部控制寄存器)地址。

7.10 某8255芯片的地址范围为A380H~A383H,工作于方式0,A 口、B 口为输出口,现欲将PC4置“0”, PC7置“1”,试编写初始化程序。 解:该8255芯片的初始化程序包括置方式控制字及C口的按位操作控制字。程序如下: MOV DX,0A383H ;内部控制寄存器地址送DX MOV AL,80H ;方式控制字 OUT DX,AL

MOV AL,08H ;PC4置0 OUT DX,AL

MOV AL,0FH ;PC7置1 OUT DX,AL

7.11 设8255芯片的接口地址范围为03F8H~03FBH,A 组 B 组均工作于方式0,A 口作为数据输出口,C口低 4 位作为控制信号输入口,其他端口未使用。试画出该片8255芯片与系统的电路连接图,并编写初始化程序。 . 解:8255芯片与系统的电路连接如图所示。

由题目知,不需对 C 口置位控制字,只需对8255置方式控制字,故其初始化程序如下: MOV DX,03FBH w

MOV AL,81H OUT DX,AL a

7.12 已知某8088微机系统的I/0接口电路框图如教材中图7-47所示。试完成: (1)根据图中接线,写出8255芯片、8253芯片各端口的地址。 (2)编写8255芯片和8253芯片的初始化程序。其中,8253芯片的OUT 1 端输出100Hz方波,8255芯片的A 口为输出,B 口 和 C 口为输入。

(3)为8255芯片编写一个I/O控制子程序,其功能为:每调用一次,先检测PC0的状态,若PC0 = 0,则循环等待;若PC0 = 1,可从 PB 口读取当前开关 K 的位置(0~7 ),经转换计算从 A 口的 PA0~PA3输出该位置的二进制编码,供LED显示。 解:(1)8255芯片的地址范围为:8000H~FFFFH 8253芯片的地址范围为:0000H~7FFFH

(2)初始化8255芯片 MOV DX,8003H

MOV AL,8BH ;方式控制字,方式0,A 口 输出,B 口 和 C 口 输入 OUT DX,AL;初始化8253

MOV DX,0003H ;内部寄存器口地址

MOV AL,76H ;计数器1,先写低8位/后写高8位,方式3,二进制计数 OUT DX,AL

MOV DX,0001H ;计数器1端口地址 MOV AX,10000 ;设计数初值=10000 OUT DX,AL MOV AL,AH OUT DX,AL

(3);8255芯片的控制子程序 ;定义显示开关位置的字形译码数据 DATA SEGMENT

BUFFER DB 3FH,06H,5BH,0FH,66H,6DH,7CH,07H DATA ENDS; CODE SEGMENT

ASSUME CS:CODE,DS:DATA

MAIN PROC PUSH DS MOV AX,DATA MOV DS,AX

CALL DISP POP DX .

RET

MAIN ENDP;输出开关位置的二进制码程序 DISP PROC

PUSH CX PUSH SI

XOR CX,CX CLC

LEA SI,BUFFER

MOV DX,8002H ;C 口 地址

WAITT:IN AL,DX ;C 口 状态 TEST AL,01H k

JZ WAITT

MOV DX,8001H . ;读 B 口 的开关位置 IN AL,DX

NEXT: SHR AL,1

INC CX

JC NEXT ;没有接地则移动

DEC CX

ADD SI,CX ;查表,CX 为开关位置 MOV AL,[SI] MOV DX,8000H OUT DX,AL ; POP SI POP CX RET

DISP ENDP CODE ENDS

END MAIN

7.13 试说明串行通信的数据格式。

解:串行通信通常包括两种方式,即同步通信和异步通信,二者因通信方式的不同而有不同的数据格式,

其数据格式可参见教材第326页及327页图7-34和图7-35。