资源描述:
《实验四 中断控制及计数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四中断控制及计数/定时电路应用一、实验目的理解中断控制器8259及计数/定时器8253的工作原理,掌握其使用方法。二、实验准备1.复习8259及8253的工作原理及应用。2.本次实验及后续的实验六和实验七需要使用TPC_USB通用接口实验系统并在TPC_USB集成软件开发环境下进行编程、编译和运行(开机后进入Windows,再由“程序/TPC_USB/TPC_USB”进入该环境),自学附录中TPC_USB通用微机接口实验系统介绍及集成软件开发环境的相关内容。3.按实验内容要求编写汇编语言源程序。三、实验原理补充1.16位以上微型计算机的中断源PC/AT及286以上的微型计
2、算机,主板上有两片8259中断控制器,从片通过将中断请求信号(INT)接至主片的中断请求端IRQ2来实现与主片的级联,各中断源如下所列:中断源中断类型号中断功能IRQ008H时钟IRQ109H键盘IRQ20AH级连从片8259电路IRQ30BH串行口2(用于本次实验)IRQ40CH串行口1IRQ50DH硬盘IRQ60EH软盘IRQ70FH并行打印机IRQ8070H实时时钟IRQ9071H用户中断IRQ10072H保留IRQ11073H保留IRQ12074H保留IRQ13075H协处理器IRQ14076H硬盘IRQ15077H保留在以后的升级中,将中断控制集成到多功能I/O接口
3、芯片中,但在实模式下的使用仍和两片8259芯片的情况兼容。PC机中断控制器第一片8259(主片)的地址为20H、21H,第二片8259(从片)的地址为A0H,A1H。编程时要根据中断类型号设置中断矢量,中断屏蔽寄存器对应位要清零(打开屏蔽,允许中断)。由于采用了两片级连8259,清除中断源屏蔽需要对两片分别进行清零设置。当中断源为IRQ0~7时,对第一片8259相应位清零,第二片保留原设置;当中断源为IRQ8~15时,对第一片8259的第二位IRQ2清零,第二片8259相应位清零。例如:当需使用中断源IRQ9时,则第一片8259的中断掩码为011111011b(第二位IRQ2
4、清零),第二片8259的中断掩码为011111101b(IRQ9清零)。以第一片8259为例,操作时需要注意:*对IRQ2清零时需要保持其它位不变。INAL,21HMOVKEEP_IRQ,AL;KEEP_IRQ用来保存原中断屏蔽ANDAL,11111011;使用AND命令对相应位IRQ2清零,其它位保持不变OUT21H,AL*程序结束时必须恢复对应中断源的屏蔽。MOVAL,KEEP_IRQOUT21H,AL*中断服务程序结束前,必须给8259写中断结束命令EOI,才可中断返回。MOVAL,20HOUT20H,AL2.TPC_USB实验台上的中断编程实验板上中断插孔IRQ固定接
5、在IRQ3上,中断类型号为0BH。由于没有使用到8259从片,所以不需要对8259从片进行操作。四、实验内容1.8259中断管理电路TPC_USB实验台面板右上角的总线信号区中有一个IRQ插孔,另外,实验台面板正中的下方还有一个单脉冲按键,每按一下其信号输出端(Ω)将发出一个正脉冲。实验要求用一根导线将单脉冲信号引至IRQ插孔,按一下按键,通过程序在屏幕上显示一行提示信息,10次之后退回DOS(两次按键之间要有0.5s时间间隔)。DOS已对此片8259完成了初始化编程及工作编程。为了不影响系统工作,用户不宜重新再对8259初始化,但可以重写一次中断屏蔽字,以清除对IRQ的屏蔽
6、。在用户程序结束时最好再恢复对IRQ的屏蔽。做中断实验,须将用户中断服务程序的入口地址安装到中断矢量表里相应处,这可以通过功能号AH=25H的DOS调用INT21H实现。更规范的做法是在修改中断矢量表之前,用功能号AH=35H的INT21H将系统原来的中断矢量内容读出,并保存在数据区中,然后修改中断矢量表为用户所用,最后在退出用户程序前再用功能号AH=25H的DOS调用恢复中断矢量表原来的内容。用户的程序应分成主程序和中断服务程序两部分。下列程序流程图可供编程时参考。助教验收实验流程:按一次单脉冲键,要求屏幕上显示出程序内设定的提示信息,再按九次单脉冲键使程序正常退出。代码如
7、下datasegmentmessdb'buttonpress',10,13,'$';提示信息keep_csdw0h;用来保存原中断矢量keep_ipdw0h;keep_irqdb0hdataendscodesegmentmainprocfar;主程序assumecs:code,ds:datastart:cli;关闭中断pushdssubax,axpushaxmovax,datamovds,axmovah,35h;功能调用,保存原中断矢量moval,0bhint21hmovkeep_ip,bxmovkee