Protues8259A实验报告
华北电力大学实 验 报 告|| 实验名称 8259A应用实验 课程名称 微机原理及应用 老 师 | 专业班级 姓 名 学 号 一 实验要求74LS273接8个指示灯,要求第一次中断LED0亮,第二次中断LED1亮,以此重复,直到10次计数到为止已知8259A采用上升沿触发,单片,全嵌套、非缓冲、普通中断结束方式,需要设置ICW4,中断类型号为80H—87H,在8259A的IR2端(INT2端)输入一个中断请求信号(该信号由开关提供),74LS273的输出接LED指示灯二 思路1 硬件(1)74HC138译码电路如图所示,A15为1,E2、E3接地保证74HC138正常工作,此时、对应地址分别为8000H、9000H2)8259的片选地址为9000H,所以接8086有16位数据总线,其低8位作为偶存储体来传输数据,8086的A0要一直为0,所以8259的A0要接8086的A18259的IR2端接开关,用来输入中断请求信号(3) 74LS273的片选地址为8000H,且需要向其写入LED灯的状态,则和经或非门后接入CLK。
2 软件(1) 流程图(2)8259A初始化(ICW)据要求(上升沿触发、单片、全嵌套、非缓冲、普通中断结束方式、需设置ICW4,中断类型号为80H—87H),初始化:ICW1=13H(00010011B);写入偶地址端口9000HICW2=08H(00001000B);写入奇地址端口9002HICW4=01H(00000001B);写入奇地址端口9002H(3)中断屏蔽字(OCW1)(写入奇地址端口9002H)允许IR2中断 OCW1与0FBH(11111011B)相与禁止IR2中断 OCW1与04H(00000100B)相或(4)中断结束字(OCW2)(写入偶地址端口9000H)OCW2=20H(00000010B)三 源程序CODE SEGMENT ;"CODE"逻辑段开始ASSUME CS:CODESTART: CLI ;关中断 ;8259初始化 MOV DX,9000H ;ICW1=13H(0001 0011B) MOV AL,13H OUT DX,AL MOV DX,9002H ;ICW2=80H(1000 0000B) MOV AL,80H OUT DX,AL MOV DX,9002H ;ICW3=01H(0000 0001B) MOV AL,01H OUT DX,AL MOV AX,0 ;非规范装入地址向量 MOV DS,AX MOV BX,82H*4 MOV AX,OFFSET INTP MOV [BX],AX INC BX INC BX MOV AX,SEG INTP MOV [BX],AX MOV DX,9002H ;允许IRQ2中断 IN AL,DX AND AL,0FBH OUT DX,AL MOV DX,8000H MOV AL,00H OUT DX,AL ;发光二极管初始化为全灭 MOV BL,1 ;BL中为LED灯亮的初始状态:LED0亮 MOV CX,10 ;设置中断次数为10 STI L1:MOV AL,82H ; Proteus中8086模型有问题,它取得的中断号是最后发到总线上的数据,并不是由8259发出的中断号 MOV DX,0B000H OUT DX,AL ;所以造成了要在这里执行EOI的假相,地址使用没有用过的,如b000h,8259的地址是9000h CMP CX,0 JZ QUIT JMP L1 ;循环等待中断QUIT:CLI MOV DX,9002H ;禁止IRQ2中断 IN AL,DX OR AL,4 OUT DX,AL STI ;开中断MOV CX,0FFFFHL: LOOP L ;为看到第10次中断结束后LED灯亮,需用延时 MOV DX,8000H MOV AL,00H ;10次中断结束,LED灯全灭 OUT DX,AL JMP $INTP PROC ;中断服务子程序 MOV AL,BL MOV DX,8000H OUT DX,AL ROL BL,1 DEC CX ;计数值减1 MOV DX,9000H MOV AL,20H OUT DX,AL ;发中断结束命令EOI IRET ;中断返回INTP ENDPCODE ENDS END START ;汇编结束四 运行结果第一次按开关执行第一次中断LED0亮。
第二次按开关LED1亮以此重复,LED灯依次亮灭,直到10次计数为止第十次按动开关LED1亮最后LED灯全灭五 实验思考题1、 中断服务子程序是何时开始执行的?将INTP的入口地址送入到IP和CS后2、中断类型号是何时送到数据总线上的?发出第二个负脉冲时。




