您好,欢迎访问三七文档
实验8259单级中断控制器实验一、实验目的⒈掌握8259中断控制器的接口方法。⒉掌握8259中断控制器的应用编程。二、实验内容利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。三、实验接线图图6-6四、编程指南⑴8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。五、实验程序框图IR3中断服务程序:IR7中断服务程序:六、实验步骤1、按图6-6连好实验线路图。⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷8259的CS端接FF80H孔。2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入12D0,按EXEC键,系统显示8259-1。3、拨动AN开关按钮,按满l0次显示good。七、实验程序清单CODESEGMENT;H8259.ASMASSUMECS:CODEINTPORT1EQU0FF80HINTPORT2EQU0FF81HINTQ3EQUINTREEUP3INTQ7EQUINTREEUP7PAEQU0FF20H;字位口PBEQU0FF21H;字形口PCEQU0FF22H;键入口ORG12D0HSTART:JMPSTART0BUFDB?,?,?,?,?,?intcntdb?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0:CLD;递加CALLBUF1;写显示缓冲初值CALLWRINTVER;写中断向量MOVAL,13H;写ICW1MOVDX,INTPORT1OUTDX,ALMOVAL,08H;写ICW2MOVDX,INTPORT2OUTDX,ALMOVAL,09H;写ICW4OUTDX,ALMOVAL,0F7H;写OCW1OUTDX,ALMOVintcnt,01H;中断计数初值STI;开中断WATING:CALLDISP;DISP8259-1JMPWATING;循环显示WRINTVER:MOVAX,0H;写中断向量子程序MOVES,AXMOVDI,002CH;IR3中断向量地址LEAAX,INTQ3;IR3中断服务地址STOSW;写中断服务地址偏移量MOVAX,0000h;写中断服务段地址STOSWMOVDI,003CH;IR7中断向量地址LEAAX,INTQ7;IR7中断服务地址STOSW;写中断服务地址偏移量MOVAX,0000h;写中断服务段地址STOSWRETINTREEUP3:CLI;IR3中断服务pushax;压栈保护现场pushbxpushcxpushdxMOVAL,INTCNT;CALLCONVERS;拆送缓冲区MOVBX,OFFSETBUF;077BHMOVAL,10HMOVCX,05HINTRE0:MOV[BX],AL;高五位缓冲区送熄灭码INCBXLOOPINTRE0MOVAL,20H;中断返回码MOVDX,INTPORT1OUTDX,ALADDINTCNT,01HCMPINTCNT,06HJNAINTRE2;中断次数小于5次继续CALLBUF2;中断次数结束DISP:goodINTRE1:CALLDISPJMPINTRE1CONVERS:ANDAL,0FH;拆送缓冲区MOVBX,offsetbuf;077AHMOV[BX+5],ALRETINTRE2:MOVAL,20HMOVDX,INTPORT1OUTDX,ALpopdxpopcxpopbxpopaxSTIIRET;中断返回INTREEUP7:CLI;IR7中断服务MOVAL,20H;中断返回码MOVDX,INTPORT1OUTDX,ALcallbuf3;disp:errINTRE3:CALLDISP;循环显示:ERRJMPINTRE3DISP:MOVAL,0FFH;显示子程序,5msMOVDX,PAOUTDX,ALMOVCL,0DFH;20HMOVBX,OFFSETBUFDIS1:MOVAL,[BX]MOVAH,00HPUSHBXMOVBX,OFFSETDATA1ADDBX,AXMOVAL,[BX]POPBXMOVDX,PBOUTDX,ALMOVAL,CLMOVDX,PAOUTDX,ALPUSHCXDIS2:MOVCX,00A0HLOOP$POPCXCMPCL,0FEH;01HJZLX1INCBXRORCL,1;SHRCL,1JMPDIS1LX1:MOVAL,0FFHMOVDX,PBOUTDX,ALRETBUF1:MOVBUF,08H;写”8259-1”MOVBUF+1,02HMOVBUF+2,05HMOVBUF+3,09HMOVBUF+4,17HMOVBUF+5,01HRETBUF2:MOVBUF,09H;写”good”MOVBUF+1,00HMOVBUF+2,00HMOVBUF+3,0dHMOVBUF+4,10HMOVBUF+5,10HRETBUF3:MOVBUF,0eH;写”err”MOVBUF+1,18HMOVBUF+2,18HMOVBUF+3,10HMOVBUF+4,10HMOVBUF+5,10HRETCODEENDSENDSTART
本文标题:8259A中断实验
链接地址:https://www.777doc.com/doc-5652318 .html