资源描述:
《硬件接口的应用实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、微机原理与接口技术实验报告实验内容:硬件接口应用实验组别:x姓名:xxx班级:xxxxxx学号:xxxxxx实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。2、掌握编写中断服务程序的方法。3、掌握初始化中断向量的方法。二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。1、实验设备微机实验教学系统实验箱、8086CPU模块2、连接线路3、编辑程序,编译链接后,调试程序。4、调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停
2、在中断服务程序内的断点处。三、实验方法1、设计思路连线图:2、程序流程图图18259初始化流程图四、实验源程序CODESEGMENTPUBLICASSUMECS:CODEORG100HSTART:MOVDX,4A0H;程序初始化MOVAX,13HOUTDX,AX;写ICW1:上升沿触发,单片8259,要写ICW4MOVDX,4A2HMOVAX,80HOUTDX,AX;写ICW2MOVAX,01OUTDX,AX;写ICW4MOVAX,0OUTDX,AX;写OCW1MOVAX,0MOVDS,AXMOVSI,20
3、0HMOVAX,OFFSETHINTMOVDS:[SI],AXADDSI,2MOVAX,CSMOVDS:[SI],AXSTI;开中断,设置IF=1JMP$HINT:;中断服务程序XORCX,0FFHMOVDX,4B0HMOVAX,CXOUTDX,AX;输出高低电平控制LED等的亮灭MOVDX,4A0HMOVAX,20HOUTDX,AXIRET;中断返回CODEENDSENDSTART五、实验结果每按一次单脉冲发生器,发光二极管点亮、熄灭交替进行。六、思考题1、将P+连线连接到IR1—IR7任意一个;重新编写
4、程序。思路:将P+接在IR1上,只要在源程序的基础上,把写ICW2的控制字改为81H,再把向量的入口地址改为0204H即可。实验现象:每按一次单脉冲发生器,发光二极管点亮、熄灭交替进行。2、设置OCW1,屏蔽某个中断请求,运行程序观察现象。思路:将IR0重新接入LED0,设置OCW1为01H,屏蔽中断IR0,则IR0的中断无法得到响应。CODESEGMENTPUBLICASSUMECS:CODEORG100HSTART:MOVDX,4A0H;写ICW1MOVAX,13H;上升沿触发,单片8259,要写ICW
5、4OUTDX,AXMOVDX,4A2H;写ICW2MOVAX,80H;IR0的中断向量码为80HOUTDX,AXMOVAX,01OUTDX,AX;一般嵌套,非缓冲方式,非自动EOIMOVAX,01H;写中断屏蔽字OCW1OUTDX,AX;屏蔽IR0中断中断向量存放在(0000H:0204H)开始的四个单元里MOVAX,0MOVDS,AXMOVSI,200H;终端类型号为80HMOVAX,OFFSETHINT;终端服务程序的入口地址MOVDS:[SI],AXADDSI,2MOVAX,CSMOVDS:[SI],
6、AXSTI;开中断,设置IF=1JMP$;原地跳转HINT:XORCX,0FFH;CX取反MOVDX,4B0H;CS273接口的地址,与8个LED灯相连MOVAX,CX;输出高低电平控制LED等的亮灭OUTDX,AXMOVDX,4A0H;OCW2的地址MOVAX,20H;一般EOI命令,全嵌套方式OUTDX,AXIRET;中断返回CODEENDSENDSTART实验现象:每按单脉冲发生器一次产生一次中断申请,但连续的发光二极管一直不亮。3、设置OCW2,了解中断结束方式。思路:将IR0和IR1都连接在P+上
7、,分别连接LED0和LED1到00和01。OCW2设置成一般E0I命令,将IR0设置成最低中断优先级。CS273的00与LED0相连,01与LED1相连,02与LED2相连,直到07与LED7相连。CODESEGMENTPUBLICASSUMECS:CODEORG100HSTART:MOVDX,4A0H;写ICW1MOVAX,13H;上升沿触发,单片8259,要写ICW4OUTDX,AXMOVDX,4A2H;写ICW2MOVAX,80H;IR0的中断向量码为80HOUTDX,AXMOVAX,01OUTDX,
8、AX;一般嵌套,非缓冲方式,非自动EOIMOVAX,0;写OCW1OUTDX,AX;允许中断,中断向量存放在(0000H:0200H)开始的四个单元里MOVAX,0MOVDS,AXMOVSI,200H;终端类型号为80HMOVAX,OFFSETHINT1;终端服务程序的入口地址MOVDS:[SI],AXADDSI,2MOVAX,CSMOVDS:[SI],AXSTI;开中断,设置IF=1;IR1的中断向量存放在(0