《实验四8259A的单级中断控制实验》由会员分享,可在线阅读,更多相关《实验四8259A的单级中断控制实验(7页珍藏版)》请在金锄头文库上搜索。
1、实验四使用 8259A的单级中断控制实验一、实验目的1掌握中断控制器8259A 与微机接口的原理和方法。2掌握中断控制器8259A 的应用编程。二、实验内容编制程序,利用开关作为8259 芯片 IR7的中断源,人工控制产生单一中断。中断的功能是驱动发光二极管,使其亮灭,不停地闪动。三、实验提示8259 中断控制器是专为控制优先级中断设计的芯片。它将中断源优先级排队,辩别中断源以及提供中 断矢量的电路集于一片中。因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优行模式和中断请求方式,即中断结构可以由用户编程来设定。同时, 在不需要增加其它电路的情况下,通过多片8259
2、 的级联,能构成多达64 级的矢量中断系统。实验箱中采用一片8259A 中断控制芯片,工作于主片方式,8 个中断请求输入端IR0IR7 对应的中断型号为 8F,其和中断矢量关于如下表所示。表 1 8259 中断矢量对应关系8259A 中断源中断序号中断类型号中断矢量表地址IR0 0 8 2023 HIR1 1 9 2427 HIR2 2 A 282B HIR3 3 B 2C2F HIR4 4 C 3033 HIR5 5 D 3437 HIR6 6 E 383B HIR7 7 F 3C3F H本实验中使用7 号中断源IR7,中断方式为边沿触发方式,按动开关按钮 产生一次中断。编写中断服务程序程序
3、,使系统每次响应外部中断IR7 时发光二极管闪烁。四、实验电路五、实验软件清单Port0 EQU 0FFE0H Port1 EQU 0FFE1H CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H P8259: CLI MOV AX,OFFSET INT8259 MOV BX,003CH MOV BX,AX MOV BX,003EH MOV AX,0000H MOV BX,AX CALL FOR8259 MOV AL,0FEH MOV DX,0FFE4H STI JMP $ ;= FOR8259:MOV AL,13H MOV DX,Por
4、t0 OUT DX,AL MOV AL,08H MOV DX,Port1 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,7FH ;IRQ7 OUT DX,AL RET ;- INT8259:cli Push dx Push ax MOV AL,20H MOV DX,Port0 OUT DX,AL Pop ax Pop dx Out dx,al mov cx,0 loop $ Rol al,1 STI IRET CODE ENDS END P8259 六、实验软件框图七、实验步骤(1)按实验电路图连接线路:开关 Ki 和 8259 7 号中断 IR7 插孔相连。按照
5、实验一中3.3 的实验步骤要求连接138 译码电路, 8259 的 CS 端连 138 译码器的Y0 孔。输出单元 74LS273 的 G 端连 74LS32 的 6 腿, 4 腿连 138 译码器的Y1 孔, 5 腿连 IOWR 。将 8259 的单元总线接口D0D7 ,用 8 芯排线或8 芯扁平线与数据总线单元D0D7 任一接口相连。输出单元74LS273 的 8 芯排线或8 芯扁平线与数据总线单元D0D7 任一接口相连,输出连LED 。(2)运行实验程序按动 开关按钮 ,观察 LED 输出。八、实验思考1详细注释。2解释如何实现中断。预备知识18259A的内部结构8259A 是专为控制优
6、先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。如图 519 所示,它由中断请求寄存器(IRR) 、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR) 、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。开始8259A 初始化: ICW1ICW4 、OCW1OCW3 中断矢量初始化程序功能初始化关中断开中断主程序中断服务程序现场保护关中断程序功能开中断现场恢复,返回图 1 8259A 的内部结构中断请求寄存器:寄存所有要求服务的请求IR0IR7 。中断服务寄存器:寄存正在被服务的中断请求。中
7、断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号,该位为 1,屏蔽该号中断,否则开放该号中断。数据总线缓冲器: 是双向三态的, 用以连接系统总线和8259A 内部总线, 通过它可以由CPU 对 8259A写入状态字和控制字。读写控制电路:用来接受I/O 命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A 的工作方式和控制方式。级联缓冲器 /比较器:用于多片8259A 的连接,能构成多达64 级的矢量中断系统。28259A编程及初始化(1) 写初始化命令字* 写初始化命令字ICW1(A0=0) ,以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用
8、单片还是多片。* 写初始化命令字ICW2 ,以定义中断向量的高五位类型码。* 写初始化命令字ICW3 ,以定义主片8259A 中断请求线上IR0IR7 有无级联的8259A 从片。第 i 位=0,表明 IRi 引脚上无从片第 i 位=1,表明 IRi 引脚上有从片* 写初始化命令ICW4 ,用来定义8259A 工作时用8085 模式,还是8088 模式,以及中断服务寄存器复位方式等。8259A 初始化的流程图如下:(2) 写控制命令字* 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。第 i 位=0,对应的中断请求IRi 开放第 i 位=1,对应的中断请求IRi 屏蔽注:OCW1 如不写,则在初始化命令写入后,OCW1 为全开放状态。* 操作命令字OCW2 ,设置优先级是否进行循环、循环方式及中断结束方式。注:8259A 复位时自动设置IR0 优先权最高,IR7 优先权最低。* 操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259 中断寄存器的当前状态。(3) 8259A 查询字通过 OCW3 命令字的设置,可使CPU 处于查询方式,随时查询8259A 有否中断请求,有则转入相应的中断服务程序。