OUT MOV OUT MOV OUT
DX, AL
AL, 0000 0100B ; ICW3:从属8259接主控的IRQ4
DX, AL
AL, 0001 0001B ; ICW4:完全嵌套、非缓冲方式、普通EOI结束、8086/8088模式 DX, AL
16.IBM PC/XT中8259A的IRQ2输入一中断请求信号,当其有效时转入中断服务程序执行。中断服务程序的功能是从外设(口地址为200H)读入数据,并判断是否有偶校验,有则输出给另一个外设(口地址201H),否则在屏幕显示字符“N”,并关闭IRQ2中断。试编写主程序(与中断有关部分)和中断服务程序。
; 主程序部分 PUSH DS
MOV AX, SEG INTPR MOV DS, AX
LEA DX, INTPR MOV AH, 25H
MOV AL, 0AH ; 未知
INT 21H POP DS
MOV DX, 021H ; 读取中断屏蔽命令字
IN AL, DX
AND AL, 0FBH ; 0FBH = 1111 1011B,开放IRQ2中断 OUT DX, AL ; 送回IMR STI ; 开中断
; 中断服务程序 INTPR: MOV
IN OR JNP MOV OUT
JMP
NEXT: MOV
MOV INT MOV
DX, 200H ; 从200H端口读入数据
AL, DX AL, AL NEXT
DX, 201H ; 偶校验,输入的数据输出到端口201H DX, AL
DONE
DL, ’N’ ; 非偶校验,显示“N”,并关闭IRQ2中断 AH, 2 ; 显示“N” 21H
DX, 021H ; 关闭IRQ2中断
IN AL, DX OR AL, 00000100B
OUT DX, AL
DONE: IRET
17.中断与异常有何异同?
36
18.32位机的异常分为几类?
19.中断描述符与一般段描述符有何不同?
20.中断描述符表与中断向量表有何异同?
第8章 常用接口芯片
1.假定8255A的地址为0060H~0063H,试编写下列各种情况的初始化程序:
(l)将A组和B组设置为方式0,端口A和C作为输入口,端口B作为输出口。
(2)将A组设置为方式2,B组设置为方式1,端口B作为输出口。
(3)将A组设置为方式1,且端口A作为输入,PC6和PC7作为输出;B组设置为方式1,且端口B为输入口。
2.IBM PC/XT机中8255A与系统总线的连接如图8.74所示,试分析8255A的 A口、B口、C口及控制寄存器的基本地址。
解:
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 1 1 × × × × × A口:060H B口:061H C口:062H
控制寄存器:063H
图8.74
图8.75
3.某外设引脚如图8.75所示,当BUSY为低电平时,表示外设可以接收数据。外设通过8255A接到系统总统上,CPU利用查询方式将BUFFER开始的100字节数据输出。
(1)规定8255A的口地址为ECH—EFH,试画出8255A和系统总线及外设的连接图。
(2)编写包括8255A初始化程序在内的输出程序。
4.图8.76为开关状态检测电路和继电器控制电路,当开关闭合时,将驱动对应的继
37
图8.76
电器(有驱动电流流过继电器线圈);若某开关处于断开状态,则无电流流过继电器线圈。系统每隔10ms检测一次开关状态和对继电器作相应控制,定时控制由8253完成,试完成对8255A的初始化编程(初始状态所有继电器的线图都无电流流过)和检测控制程序(假定8255A地址为3COH~3C3H)。
5.图8.23的8253应用实例中,若通道0和通道1都采用二进制计数,扬声器的发声频率为500HZ,问程序应作何变动?
解: ;主程序
MOV AL,15H(改为14H) ;计数器0初始化 OUT 43H,AL
MOV AL,50H(改为50) OUT 40H,AL
STI ;开中断 LOP:HLT ;等待中断
JMP LOP ;中断服务程序
INIP:MOV AL,01H ;GATE1置1,启动计数 OUT 80H,AL
MOV AL,77H(改为76H);计数器1初始化
OUT 43H,AL
MOV AL,00H(改为0F0H);1.4×106/500=2800=0AF0H OUT 41H,AL
MOV AL,07H(改为0AH)
OUT 4lH,AL
CALL DLSS ;延时5秒
MOV AL,0 ;GATE1置0,停止计数 OUT 80H,AL IRET
38
6.若8253可利用8088的外设接口地址D0D0H~D0D3H,试画出电路连接图。若加到8253上的时钟信号为2MHz,
(1)若利用计数器0、1、2分别产生周期为10?S的对称方波以及每1S和10s产生一个负脉冲。试说明8253如何连接并编写包括初始化在内的程序。
(2)若希望利用8088程序通过接口控制GATE,当CPU使GATE有效开始,20?S后在计数器0的OUT端产生一个正脉冲,试设计完成此要求的硬件和软件。 解: (1)
①产生周期为10?s的对称方波,计数器:0,工作方式:方式3,初值:10?S=0.1MHZ,2/0.1=20
MOV MOV OUT MOV
AL,00010111B DX,0D0D3H DX,AL AL,20H
MOV DX,0D0D0H OUT DX,AL
②每1S产生一个负脉冲,计数器:0、1,工作方式:3、2,初值:200、10000
MOV MOV OUT MOV MOV OUT
AL,00110111B;计数器0 DX,0D0D3H DX,AL
DX,0D0D0H AL,00H DX,AL
MOV AL,02H OUT DX,AL MOV AL,01110101B;计数器1 MOV OUT MOV MOV OUT
DX,0D0D3H DX,AL
DX,0D0D1H AL,00H DX,AL
OUT DX,AL
③每10S产生一个负脉冲,计数器:0、1,工作方式:3、2,初值:2000、10000
MOV AL,00110111B;计数器0
MOV OUT MOV MOV
DX,0D0D3H DX,AL DX,0D0D0H AL,00H
OUT DX,AL MOV AL, 20H OUT DX,AL MOV AL,01110101B;计数器1 MOV OUT MOV MOV
DX,0D0D3H DX,AL
DX,0D0D1H AL,00H
39
OUT DX,AL OUT DX,AL
(2)8255控制计数器0的GATE信号,OUT0接反相器,工作方式:方式5,初值:20?S=0.05MHZ,2/0.05=40
MOV
MOV OUT MOV MOV OUT
AL,00011011B DX,0D0D3H DX,AL AL,40H DX,0D0D0H DX,AL
7.若加到8253上的时钟频率为0.5MHz,则一个计数器的最长定时时间是多少?若要求10分钟产生一次定时中断,试提出解决方案。
8.假设一片 IBM PC机I/O卡的8253连到一个1KHz的时钟,用该8253以BCD格式保持一天中的时间,精度为秒。在DATA1、DATA2、DATA3(时、分、秒)等字节装入当前时间后,启动8253开始计时。试编写一个8253的初始化程序和一个在每秒结束时修改时间的中断眼务程序。(8253的地址为02C0H~02C3H)。
说明;8253产生的中断请求信号连接到PC总线的IRQ2。
9.设有某微机控制系统,采用定时器8253产生定时中断信号。CPU响应中断后更执行数据采集、数字滤波和相应的控制算法,以控制输出。如图8.77所示。采用两个计数器串联的方法实现定时控制。一旦定时时间到,OUT1信号由高变低,经反相后送IRQ2。IRQ2的中断类型号为0AH,中断处理程序首址存储在28H~2BH。8253端口地址为230H~233H。试编制8253的初始化及设置中断处理程序首地址程序段。
图8.77
10.某系统中使用825lAI作在异步方式、7位字符、不带校验、停止位长2位、波特率系数为16、允许发送、也允许接收。若已知其控制口地址为FFAOH,数据口地址为FFA1H,请编写初始化程序。
40