8259中断控制实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验六8259中断控制一、实验目的1.学习8086/8088CPU中断系统的知识。2.学习8259中断控制器的使用。二、实验内容1.编写程序,使8255的A口控制LED灯。CPU执行主程序时四个绿灯亮。用脉冲信号作为8259的IR3的输入信号,向CPU请求中断。CPU在中断服务程序中熄灭绿灯,并使4个红灯亮。中断服务程序结束,又返回主程序,再使绿灯亮。2.编写程序,使8255的A口控制LED灯。CPU执行主程序时四个绿灯亮。用脉冲信号作为8259的IR3的输入信号,向CPU请求中断。CPU在中断服务程序中每中断一次,使4个红色LED灯中每次只亮一个灯,并随每一次中断逐次移动一个灯的位置,中断服务程序结束,又返回主程序,再使绿灯亮。三、实验区域电路连接图(1)8259的INT连8088的INTR(Xl5);(2)8259的INTA连8088的INTA(Xl2);(3)“”插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);(4)8259的CS端接EX1(60H);(5)连JX4→JX17。(6)IOWR→IOWR;(7)IORD→IORD;2(8)A0→A0;(9)PA0…PA3→L2,L6,L10,L14;PA4…PA7→L3,L7,L11,L15。四、程序框图1.2.3五、实验步骤(1)8259的INT连8088的INTR(Xl5);(2)8259的INTA连8088的INTA(Xl2);(3)单脉冲插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);(4)8259的CS端接EX1(60H);(5)连JX4→JX17。(6)IOWR→IOWR;(7)IORD→IORD;(8)A0→A0;(9)PA0…PA3→L2,L6,L10,L14;PA4…PA7→L3,L7,L11,L15。六、实验程序1.CODESEGMENTASSUMECS:CODEINTPORT1EQU0060HINTPORT2EQU0061HINTQ3EQUINTREEUP3INTCNTDB?ORG1200HSTART:CLDMOVDX,0FF2BHMOVAL,80H;设置8255方式字:A口输出OUTDX,ALCALLWRINTVER;WRITEINTRRUPTMOVAL,13H;ICW1=00010011B,边沿触发、单8259、需ICW4MOVDX,INTPORT1OUTDX,ALMOVAL,08HMOVDX,INTPORT2OUTDX,ALMOVAL,09H;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOIOUTDX,ALMOVAL,0F7H;OCW1=11110111BOUTDX,ALMOVINTCNT,01H;延时STIWATING:MOVDX,0FF28H;主程序绿灯亮(低四位为0则绿灯亮,高四位为1故红灯灭)MOVAL,0F0H4OUTDX,ALJMPWATINGWRINTVER:MOVAX,0HMOVES,AXMOVDI,002CH;中断向量地址2CH=0BH*4LEAAX,INTQ3STOSW;送偏移地址MOVAX,0000hSTOSW;送段地址RETINTREEUP3:CLI;中断服务子程序开始PUSHDXPUSHAXMOVDX,0FF28H;中断服务子程序执行红灯亮MOVAL,0FH;低四位为1则绿灯灭,高四位为0故红灯亮OUTDX,ALCALLDELAY1SMOVAL,20H;OCW2=00100000B非特殊EOI命令,结束命令,用于完全嵌套方式的中断结束MOVDX,INTPORT1OUTDX,ALSTI;开系统中断POPAXPOPDXIRETDELAY1S:MOVCX,0FFFFHMOVBX,5L:DECCXJNZLDECBXJNZLRETENDSTART2.CODESEGMENTASSUMECS:CODEORG1200HINTCNTDB0EFH;全局变量INTCNT=11101111BSTART:MOVDX,0FF2BHMOVAL,80H;设置8255方式字:A口出OUTDX,AL5MOVAL,0FFHMOVDX,0FF28HOUTDX,ALCALLY2MOVAL,13H;ICW1=00010011B,边沿触发、单8259、需ICW4MOVDX,60HOUTDX,ALMOVAL,08H;ICW2=00001000B,IR3(ICW2低两位自动跳变为11,即00001011B)进入则中断号=0BHMOVDX,61HOUTDX,ALMOVAL,09H;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOIOUTDX,ALMOVAL,0F7H;OCW1=11110111BOUTDX,ALMOVINTCNT,0EFHSTIY1:MOVDX,0FF28H;主程序绿灯亮(低四位为0则绿灯亮,高四位为1故红灯灭)MOVAL,0F0H;D7…D4=1111,D3…D0=0000OUTDX,ALJMPY1;循环Y2:MOVAX,0HMOVES,AXMOVDI,002CH;中断向量地址2CH=0BH*4LEAAX,INTREEUP3STOSW;送偏移地址MOVAX,0000HSTOSW;送段地址RETINTREEUP3:CLIPUSHAX;保护现场PUSHDXPUSHCXMOVDX,0FF28H;中断服务子程序执行红灯亮MOVAL,INTCNTOUTDX,ALROLINTCNT,1;循环左移一位JCY4MOVINTCNT,0EFH6Y4:MOVAX,10H;延时服务程序INTRE0:MOVCX,10000LOOP$DECAX;AX=AX-1JNZINTRE0INTER2:;设置OCW2MOVAL,20H;D5=EOI=1,发送EOI指令结束中断MOVDX,60HOUTDX,ALPOPCX;现场恢复POPDXPOPAXSTI;开系统中断IRETCODEENDSENDSTART七、实验感想本次实验锻炼的是我们对8259中断控制的理解。我感觉实验程序比较复杂的。主程序的编程重点在于8255和8259的初始化,其工作方式要考虑实验箱的实际接线,控制字的确定也需要仔细对照控制字表,以及中断的执行、恢复;中断部分的编程重点在于中断向量的初始化和中断服务子程序的功能实现以及中断的现场恢复等。通过这两次实验,我更深刻地理解了8259中断控制的工作方式和编程方法,同时也进一步熟悉了8255的工作方式,加深了对理论知识的理解和掌握。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功