《使用8259A的单级中断控制实验.docx》由会员分享,可在线阅读,更多相关《使用8259A的单级中断控制实验.docx(18页珍藏版)》请在三一办公上搜索。
1、使用8259A的单级中断控制实验实验五 使用8259A的单级中断控制实验 一、实验目的 1、掌握中断控制器8259A与微机接口的原理和方法。 2、掌握中断控制器8259A的应用编程。 二、预备知识 1、8259A的内部结构 8259A是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。 如图519所示,它由中断请求寄存器(IRR)、优先级分析器、 中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。 图519 中断请求寄存器:寄存所有要求服务的请求
2、IR0IR7。 中断服务寄存器:寄存正在被服务的中断请求。 中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号, 该位为1,屏蔽该号中断,否则开放该号中断。 数据总线缓冲器:是双向三态的,用以连接系统总线和8259A内部总线, 通过它可以由CPU对8259A写入状态字和控制字。 读写控制电路:用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。 级联缓冲器/比较器:用于多片8259A的连接,能构成多达64级的矢量中断系统。 2、8259A编程及初始化 (1) 写初始化命令字 * 写初始化命令字ICW1(A0=0),以确定中断请求信
3、号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。 * 写初始化命令字ICW2,以定义中断向量的高五位类型码。 * 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0IR7有无级联的8259A从片。 第i位=0,表明IRi引脚上无从片 第i位=1,表明IRi引脚上有从片 * 写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断服务寄存器复位方式等。 (2) 写控制命令字 * 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。 第i位=0,对应的中断请求IRi开放 第i位=1,对应的中断请求IRi屏蔽 注: OCW1如不写,则在
4、初始化命令写入后,OCW1为全开放状态。 * 操作命令字OCW2,设置优先级是否进行循环、循环方式及中断结束方式。 注: 8259A复位时自动设置IR0优先权最高,IR7优先权最低。 * 操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。 (3) 8259A查询字 通过OCW3命令字的设置,可使CPU处于查询方式,随时查询8259A有否中断请求, 有则转入相应的中断服务程序。 三、实验内容 本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0IR7对应的中断型号为8F,其和中断矢量关于如下表53所示。 表53 根据实验原理图52
5、0,8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址, 本系统中为20H、21H。 20H 用来写ICW1, 21H 用来写ICW2、ICW3、ICW4,初始化命令字写好后, 再写操作命令字。OCW2、OCW3 用口地址20H,OCW1用口地址21H。图514中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。CPU响应中断后,在中断服务中, 对中断次数进行计数并显示,计满5次结束,显示器显
6、示“8259Good”。 四、实验线路连接 8259A的IR3插孔和SP插孔相连。SP插孔初始电平为低电平。 图520 五、实验软件框图 六、实验软件清单 CODE SEGMENT ASSUME CS:CODE INTPORT1 EQU 0020H INTPORT2 EQU 0021H INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA0 EQU 0580H DATA1 EQU 0500H DATA2 EQU 0508H DATA3 EQU 0518H DATA4 EQU 0520
7、H ORG 1800H START: JMP Tint1 Tint1: CALL FORMAT CLD MOV DI,DATA0 MOV CX,08H XOR AX,AX REP STOSW MOV SI,DATA3 CALL LEDDISP ;DISP 8259-1 MOV AX,0H MOV DS,AX CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H MOV DX,INTPORT1 OUT DX,AL MOV AL,08H MOV DX,INTPORT2 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0F7H OUT DX,A
8、L MOV BYTE PTR DS:0601H,01H STI WATING: JMP WATING WRINTVER:MOV AX,0H MOV ES,AX MOV DI,002CH LEA AX,INTQ3 STOSW MOV AX,CS STOSW MOV DI,003CH LEA AX,INTQ7 STOSW MOV AX,CS STOSW RET INTREEUP3:CLI MOV AL,DS:0601H CALL CONVERS MOV SI,DATA0 CALL LEDDISPD MOV AL,20H MOV DX,INTPORT1 ;TIME=1 OUT DX,AL ADD B
9、YTE PTR DS:0601H,01H CMP BYTE PTR DS:0601H,06H JNA INTRE1 MOV SI,DATA4 CALL LEDDISP INTRE3: JMP INTRE3 CONVERS:MOV BH,0H AND AL,0FH MOV BL,AL MOV AL,CS:BX+DATA2 MOV BX,DATA0 MOV DS:BX,AL RET MOV DX,INTPORT1 OUT DX,AL STI IRET MOV SI,DATA1 CALL LEDDISP MOV AL,20H MOV DX,INTPORT1 OUT DX,AL IRET MOV DX
10、,CONTPORT OUT DX,AL MOV BYTE PTR DS:0600H,00 JA LED2 MOV BL,DS:0600H MOV BH,0H MOV AL,CS:BX+SI MOV DX,DATAPORT INTRE1: MOV AL,20H INTREEUP7: CLI LEDDISP:MOV AL,90H LED1: CMP BYTE PTR DS:0600H,07H OUT DX,AL ADD BYTE PTR DS:0600H,01H JNZ LED1 LED2: RET LEDDISPD:MOV AL,90H MOV DX,CONTPORT OUT DX,AL MOV
11、 BYTE PTR DS:0600H,00 JA LEDD2 MOV BL,DS:0600H MOV BH,0H MOV AL,DS:BX+SI MOV DX,DATAPORT OUT DX,AL ADD BYTE PTR DS:0600H,01H JNZ LEDD1 LEDD1: CMP BYTE PTR DS:0600H,07H LEDD2: RET FORMAT: MOV BX,0 MOV WORD PTR DS:BX+0500H,5050H ADD BX,2 MOV WORD PTR DS:BX+0500H,0079H ADD BX,2 MOV WORD PTR DS:BX+0500H
12、,0000H ADD BX,2 MOV WORD PTR DS:BX+0500H,0000H ADD BX,2 MOV WORD PTR DS:BX+0500H,063FH ADD BX,2 MOV WORD PTR DS:BX+0500H,4F5BH ADD BX,2 MOV WORD PTR DS:BX+0500H,6D66H ADD BX,2 MOV WORD PTR DS:BX+0500H,077DH ADD BX,2 MOV WORD PTR DS:BX+0500H,6F7FH ADD BX,2 MOV WORD PTR DS:BX+0500H,7C77H ADD BX,2 MOV
13、WORD PTR DS:BX+0500H,5E39H ADD BX,2 MOV WORD PTR DS:BX+0500H,7179H ADD BX,2 MOV WORD PTR DS:BX+0500H,4006H ADD BX,2 MOV WORD PTR DS:BX+0500H,4040H ADD BX,2 MOV WORD PTR DS:BX+0500H,6D6FH ADD BX,2 MOV WORD PTR DS:BX+0500H,7F5BH ADD BX,2 MOV WORD PTR DS:BX+0500H,3F5EH ADD BX,2 MOV WORD PTR DS:BX+0500H
14、,5C3FH ADD BX,2 MOV WORD PTR DS:BX+0500H,6D6FH ADD BX,2 MOV WORD PTR DS:BX+0500H,7F5BH RET CODE ENDS END START 七、实验步骤 1、按图520连好实验线路 2、 运行实验程序 在系统显示“DVCC 86H”状态下,按任意键,系统显示命令提示符“”。 按GO键,显示“1000 XX” 输入 F000 : B2E0 按EXEC键, 在DVCC8086H上显示“82591”。 3、 按AN按键,每按二次产生一次中断,在显示器左边一位显示中断次数, 满5次中断,显示器显示“8259 good”。
15、 实验六 8255A可编程并行口实验(一) 一、实验目的 1、掌握并行接口芯片8255A和微机接口的连接方法。 2、掌握并行接口芯片8255A的工作方式及其编程方法。 二、预备知识 1、8255A结构 8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图5 6 是8255A的逻辑框图,内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12 位的两组:A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;A 组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A 数据
16、总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。 2、8255A端口地址见 表51 表51 图512 3、8255工作方式 8255A芯片有三种工作方式: 方式0、方式1、方式2。 它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。 方式0 : 基本输入/输出 图57(a) 方式0引脚功能 如图513所示。 该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出, C 口分成高4 位(PC7PC4)和低4位(PC3PC0)两组,也有控制字决定其输入或输出。 需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。 方式1 : 选通输入/输出
17、 图513(b)方式1输入 图513(c)方式1输出 如图513、(c)所示。该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C 的高4位组成,B组由数据口B和控制口C的低4位组成。数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息。 方式2 : 双向输入输出 图513(D)方式2双向输入输出 如图513所示。 本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3PC7)作为A口的控制位。 4、8255A控制字 (1) 方式选择控制字 (2) PC口按位置/复位控制字 三、实验
18、内容 1、实验原理 如实验原理图514所示,PC口8位接8个开关K1 K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1 K8,PB口上接的8个发光二极管L1 L8对应显示K1 K8的状态。 图514 2、实验线路连接 8255A芯片PC0 PC7插孔依次接K1 K8。 8255A芯片PB0PB7插孔依次接L1 L8。 8255A的CS插孔接译码输出070H07FH插孔。 四、实验软件框图 五、实验软件清单 CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0073H IOCPT EQU 0072H IOBPT EQU 0071H CO
19、NTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP IOLED IOLED: CALL FORMAT CALL LEDDISP MOV AL,89H MOV DX,IOCONPT OUT DX,AL NOP NOP NOP IOLED1: MOV DX,IOCPT IN AL,DX MOV DX,IOBPT OUT DX,AL MOV CX,0FFFFH DELAY: LOOP DELAY JMP IOLED1 LEDDISP:MOV AL,90H MOV DX,CONTPORT OUT DX,AL MOV BYTE P
20、TR DS:0600H,00LED1: JA LED2 MOV BL,DS:0600H MOV BH,0H MOV AL,CS:BX+DATA1 MOV DX,DATAPORT OUT DX,AL ADD BYTE PTR DS:0600H,01H JNZ LED1 LED2: RET CMP BYTE PTR DS:0600H,07H FORMAT: MOV BX,0 MOV WORD PTR DS:BX+0500H,4006H ADD BX,2 MOV WORD PTR DS:BX+0500H,4040H ADD BX,2 MOV WORD PTR DS:BX+0500H,6D6DH AD
21、D BX,2 MOV WORD PTR DS:BX+0500H,7F5BH RET CODE ENDS END START 六、实验步骤 1、按图514连好线路。 2、运行实验程序。 在系统显示“DVCC86H”状态下,按任意键,显示器显示“”。 按GO键,显示 “1000 XX” 输入 F000 : B160 再按EXEC键,在DVCC8086H显示上显示器“82551”,同时拨动K1K8,L1L8会跟着亮灭。 8255A可编程并行口实验(二) 一、实验目的 进一步掌握8255A可编程并行口使用方法。 二、实验内容 1、实验原理 实验原理图如图515所示,PB4 PB7和PC0 PC7分别与
22、发光二极管电路L1 L12 相连,本实验为模拟交通灯实验。交通灯的亮灭规律如下: 设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车; 延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红灯亮, 而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后重复上述过程。 图515 8255A的PB4 PB7对应黄 灯,PC0 PC3对应红灯,PC4 PC7对应绿灯。8255
23、A工作于模式0,并置为输出。由于各发光二极管为共阳极,使其点亮应使8255A相应端口清0。 2、实验线路连接 (1) 8255CS插孔连译码输出070H07FH插孔。 (2) L1 PC4 L4 PC5 L7PC6 L10 PC7 L2 PB4 L5 PB5 L8 PB6 L11 PB7 L3 PC0 L6 PC1 L9 PC2 L12 PC3 三、实验软件框图 四、实验软件清单 CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0073H IOAPT EQU 0070H IOBPT EQU 0071H IOCPT EQU 0072H IOBDATA EQU 05
24、00H CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0640H START: JMP IOLED IOLED: CALL FORMAT CALL LEDDISP MOV AX,0H MOV DS,AX MOV AL,82H MOV DX,IOCONPT OUT DX,AL MOV DX,IOBPT IN AL,DX MOV BYTE PTR DS:0501H,AL MOV DX,IOCONPT MOV AL,80H OUT DX,AL MOV DX,IOBPT MOV AL,DS:0501H OR AL,0F0H OUT DX,AL MOV
25、DX,IOCPT MOV AL,0F0H OUT DX,AL CALL DELAY1 MOV DX,IOCPT OUT DX,AL CALL DELAY1 CALL DELAY1 OR AL,0F0H OUT DX,AL MOV CX,8H MOV AL,DS:0501H AND AL,10101111B OUT DX,AL CALL DELAY2 OR AL,01010000B IOLED0: MOV AL,10100101B IOLED1: MOV DX,IOBPT OUT DX,AL CALL DELAY2 LOOP IOLED1 MOV DX,IOCPT MOV AL,0F0H OUT
26、 DX,AL CALL DELAY2 MOV AL,01011010B OUT DX,AL CALL DELAY1 CALL DELAY1 OR AL,0F0H OUT DX,AL MOV CX,8H MOV AL,DS:0501H AND AL,01011111B OUT DX,AL CALL DELAY2 OR AL,10100000B OUT DX,AL CALL DELAY2 LOOP IOLED2 MOV DX,IOCPT MOV AL,0F0H OUT DX,AL CALL DELAY2 JMP IOLED0 PUSH CX MOV CX,0030H LOOP DELY2 POP
27、CX POP AX RET IOLED2: MOV DX,IOBPT DELAY1: PUSH AX DELY2: CALL DELAY2 DELAY2: PUSH CX MOV CX,8000H POP CX RET MOV DX,CONTPORT OUT DX,AL MOV BYTE PTR DS:0600H,00 JA LED2 MOV BL,DS:0600H MOV BH,0H MOV AL,CS:BX+DATA1 MOV DX,DATAPORT OUT DX,AL ADD BYTE PTR DS:0600H,01H JNZ LED1 DELA1: LOOP DELA1 LEDDISP
28、:MOV AL,90H LED1: CMP BYTE PTR DS:0600H,07H LED2: RET FORMAT: MOV BX,0 MOV WORD PTR DS:BX+0640H,405BH ADD BX,2 MOV WORD PTR DS:BX+0640H,4040H ADD BX,2 MOV WORD PTR DS:BX+0640H,6D6DH ADD BX,2 MOV WORD PTR DS:BX+0640H,7F5BH RET CODE ENDS END START 五、实验步骤 1、按图515连好实验线路 2、运行实验程序 在系统显示“DVCC 86H”状态下,按任意键,
29、系统显示命令提示符“”。 按GO键, 显示 “1000 XX” 输入 F000 : B1B0 按EXEC键,在DVCC8086H上显示“82552”。同时L1L12 发光二极管模拟交通灯显示。 实验七 8253A定时/计数器实验 一、实验目的 学习8253A可编程定时/计数器与8088CPU的接口方法;了解8253A的工作方式; 掌握8253A在各种方式下的编程方法。 二、预备知识 1、8253A内部结构 8253A定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的16 位减法计数器,分别称为计数器0、计数器1、计数器2。每个计数器计数频率为02MHZ, 其内部结构如图516所示。由
30、于其内部数据总线缓冲器为双向三态,故可直接接在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值;其工作方式通过控制字确定;图中的读写控制逻辑,当选中该芯片时, 根据读写命令及送来的地址信息控制整个芯片工作;图中的控制字寄存器用于接收数据总线缓冲器的信息:当写入控制字时,控制计数器的工作方式,当写入数据时则装入计数初值,控制寄存器为8位, 只写不能读。 图516 8253A 内部结构图 图517 计数器 内部结构图 2、计数器内部结构 如图517所示,每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响
31、,以便进行重复计数。图中每个计数器有一个时钟输入端CLK作为计数脉冲源, 计数方式可以是二进制,计数范围110000H,也可以是十进制,计数范围165536。门控端GATE用于控制计数开始和停止。输出OUT端当计数器计数值减到零时,该端输出标志信号 。 3、8253A端口地址选择见 表52 表52 4、8253A功能 8253 A既可作定时器又可作计数器: (1) 计数:计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK 脉冲对计数值进行减1 计数,每来一个脉冲减1,当计数值减至0时,由OUT 端输出一个标志信号。 (2) 定时:计数器装入初值后,当GATE为高电平时,由CLK 脉
32、冲触发开始自动计数,当计数到零时,发计数结束定时信号。 除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。 5、8253A控制字 说明 : (1) 8253 A每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输出一个信号。 (2) 8253 A编程时先写控制字,再写时间常数。 6、8253A工作方式 (1) 方式0:计数结束产生中断方式 当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。 (2) 方式1:可编程单次脉冲方式 当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。 (3)
33、 方式2:频率发生器方式 当初值装入时,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强逼OUT变高,当GATE再变高时,便启动一次新的计数周期。 (4) 方式3:方波发生器 当装入初值后,在GATE上升沿启动计数,OUT 输出高电平; 当计数完成一半时,OUT输出低电平。 (5) 方式4:软件触发选通 当写入控制字后,OUT输出为高;装入初值且GATE为高时开始计数,当计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。 (6) 方式5:硬件触发选通 在GATE上升沿启动计数器,OUT一直保持高电平;计数结束,OUT端输出一个宽度等于一个时
34、钟周期的负脉冲。 三、实验内容 本实验原理图如图518所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表52所示。8253A的片选地址为48H 4FH。 因此, 本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(“0”电平)或甩空(“1”电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。 图518 四、实验线路连接 1
35、、8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。 2、8253A的GATE0接+5V。 五、实验软件框图 六、实验程序清单 CODE SEGMENT ASSUME CS:CODE TCONTRO EQU 004BH TCON2 EQU 004AH CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMAT CALL LEDDISP MOV DX,TCONTRO MOV AL,0B6H OUT DX,AL MOV DX,TCON2 MOV AL,00 OUT DX,A
36、L MOV AL,10H OUT DX,AL HLT MOV DX,CONTPORT OUT DX,AL MOV BYTE PTR DS:0600H,00 JA LED2 MOV BL,DS:0600H MOV BH,0H MOV AL,CS:BX+DATA1 MOV DX,DATAPORT OUT DX,AL LEDDISP:MOV AL,90H LED1: CMP BYTE PTR DS:0600H,07H ADD BYTE PTR DS:0600H,01H JNZ LED1 LED2: RET FORMAT: MOV BX,0 MOV WORD PTR DS:BX+0500H,4006H
37、 ADD BX,2 MOV WORD PTR DS:BX+0500H,4040H ADD BX,2 MOV WORD PTR DS:BX+0500H,6D4FH ADD BX,2 MOV WORD PTR DS:BX+0500H,7F5BH RET CODE ENDS END START 七、实验步骤 1、按图518连好实验线路 2、运行实验程序 在系统显示“DVCC 86H”状态下,按任意键,系统显示命令提示符“”。 按GO键,系统显示“1000 XX” 输入F000 : B290 再按EXEC键,显示“82531” 用示波器测量8253A的OUT0输出插孔,应有频率为1KHZ的方波输出。幅值05V。