您好,欢迎访问三七文档
滨江学院微机原理与接口技术综合实验报告学生姓名姜力学号20112334013专业通信工程班级通信一班二O一三年十二月二十日外部中断实验一、实验要求利用8086控制8259可编程中断控制器,实现对外部中断的响应和处理。要求程序中每次中断进行计数,并将计数结果用8255的PA口输出到发光二极管显示。二、实验目的1、学习8086与8259的连接方法。2、学习8086对8259的编程控制方法。3、了解8259的多片级联。三、实验电路及连线1、Proteus实验电路2、硬件验证实验硬件连接表接线孔1接线孔28255CS08000H-08FFFH8259CS0C00H-0CFFHPA0-PA7D1-D8四、实验说明8086的外部中断必须通过外接中断控制器才可以进行外部中断的处理。在编程时应注意:1、正确地设置可编程中断控制器的工作方式。2、必须正确地设置中断向量表和中断服务程序的入口地址。8259可外接8个中断源,本实验只响应INT0中断,8259也可以多级连接以响应多个中断源。将单脉冲信号接到8259的INT0脚。每次中断时,可以看到LED显示加1.五、实验程序流程图六、实验步骤1、Proteus仿真a、Proteus中打开设计文档16x16点阵_STM.DSN;b、建立实验程序并编译,加载hex文件,仿真;c、如不能正常工作,打开调试窗口进行调试。参考程序:MODEEQU80H;8255工作方式PA8255EQU8000H;8255PA口输出地址CTL8255EQU8006HICW1EQU00010011B;单片8259,上升沿中断,要写ICW4ICW2EQU00100000B;中断号为20HICW4EQU00000001B;工作在8086/88方式OCW1EQU00000000B;只响应INT0中断CS8259AEQU0C000H;8259地址ASSUMECS:CODE,DS:DATA,SS:STACKORG00HJMPIEnTERORG800HSTART:MOVAX,DATAMOVDS,AX开始设置8255工作方式设置中断服务程序地址,工作方式允许中断等待中断中断入口计数器加1计数值通过8255输出到LED中断返回MOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVDX,CTL8255MOVAL,MODEOUTDX,ALCLIPUSHDSMOVAX,0MOVDS,AXMOVBX,128;0X20*4中断号MOVAX,CODEMOVCL,4SHLAX,CL;X16ADDAX,OFFSETIEnTER;中断入口地址(段地址为0)MOV[BX],AXMOVAX,0INCBXINCBXMOV[BX],AX;代码段地址为0POPDSCALLIINITMOVAL,CNT;计数值初始为0MOVDX,PA8255OUTDX,ALSTILP:;等待中断,并计数。NOPJMPLPIInIT:MOVDX,CS8259AMOVAL,ICW1OUTDX,ALMOVDX,CS8259BMOVAL,ICW2OUTDX,ALMOVAL,ICW4OUTDX,ALMOVAL,OCW1OUTDX,ALRETIEnTER:CLIMOVDX,PA8255DECCNTMOVAL,CNTOUTDX,AL;输出计数值MOVDX,CS8259AMOVAL,20H;中断服务程序结束指令OUTDX,ALSTIIRETCODEENDSDATASEGMEnTCNTDB0FFHDATAEnDSSTACKSEGMENT'STACK'STADB100DUP(?)TOPEQULENGTHSTASTACKENDSENDSTART2、实验板验证a.通过USB线连接实验箱b.按连接表连接电路c.运行PROTEUS仿真,检查验证结果仿真电路如图:七、实验结果和体会1、出现什么现象,为何有这种现象?现象:按下单脉冲即为中断。实验箱中的八盏LED灯以二进制的方式用来记录脉冲个数。分析:按下“单脉冲”,电路出现一个中断脉冲信号,进入中断入口,计数值CNT加1,每加一次,CNT的值变化,对应的LED也就发生变化(灯亮或灯灭)没有按下单脉冲时没有灯亮0=00000000;按下一次,最右的灯亮1=00000001;按下两次,右边起第二个灯亮2=00000010;按照这个规律,为1的(高电平)对应位置的灯就亮:3=00000011;4=00000100;5=00000101;6=00000110;7=00000111;8=00001000;9=00001001;10=00001010······2、在初始化时为何没有设置ICW3、OCW2、OCW3这几个控制字?ICW3只在8259级联使用时才进行设置,在本实验中只涉及一片8259,不涉及到级联的问题,所以ICW3可以省略;OCW2为优先权循环方式和中断结束方式操作字,是在中断服务程序结束后写入;OCW3为特殊屏蔽方式和查询方式操作字,由于实验过程中只有一个外部中断程序,故不需要设置OCW3。3、如果中断号为22H,此程序该如何修改?由于IR0端对应的中断类型号必须8的整数倍,而22H不是8的整数,故只能在IRO的中断类型号继续为20H的前提下,使单脉冲从IR2端引出。故在设置中中断程序入口地址时,应将中断向量放在内存中0:88H开始的连续四个字节中;OVW1应该设置为OFBH,即使IR2端不被屏蔽,而其他端均被屏蔽;在中断程序中,EOI结束命令应使AL为22H,即OCW2为22H,使中断服务器IRS2位清零。
本文标题:外部中断实验
链接地址:https://www.777doc.com/doc-5655713 .html