资源描述:
《东南大学微机原理第七次实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《微机实验及课程设计》实验报告实验七 中断8255方式1姓名:学号:专业:仪器科学与工程学院实验室:计算机硬件技术实验时间:2014年6月5日报告时间:2014年6月11日评定成绩:审阅教师:一、实验目的1、掌握PC机中断处理系统的基本原理。2、学会编写中断服务子程序。3、掌握8255工作方式1时的使用及编程。4、学会编写中断服务子程序。二、实验内容1、必做内容7-1、直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生中断一次,在屏幕上显示一次“TPCpcicardinterrupt:”,冒号后面添加已经中断的次数,中断10次后程序退
2、出。2、选做内容7-2、(输出)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:依次输出01H、02H、04H、08H、10H、20H、40H、80H使L0~L7依次发光,中断8次结束。7-3、(输入)每按一次单脉冲产生一个正脉冲使8255产生一次中断,让CPU进行一次中断服务:读取逻辑开关预制的ASCII码,在屏幕上显示其对应的字符,中断8次结束。三、实验原理1、PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级等处理后向CPU发出可屏蔽中断请求
3、。IBMPC/XT机中有一片8259中断控制器对外可以提供8个中断源。2、这8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已经设定为中断请求信号为边沿触发、普通结束方式(用户不需对8259再进行初始化)。3、对于PC/AT及286以上的微机内有扩展了一片8259中断控制,IRQ2用于两片8259的级连,对外提供16个中断源。4、PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连才能进行中断申请。四、编程提示1、由于TPC卡使用905
4、4芯片连接微机,而9054的驱动程序影响直写9054芯片的控制寄存器,中断实验要在纯DOS环境下运行。纯DOS环境要在开机时,出现命令行的情况下选择由虚拟启动软盘启动选项。2、由于TPC卡使用PCI总线,所以分配的中断好每台微机都不相同,编程时先要运行PORTR.EXE程序获得本机的中断向量号。3、PC/XT机的主8259的地址是20H、21H,从8259的地址是0A0H、0A1H。4、数据段内容的修改int_vectequ071h;中断向量号irq_mask_2_7equb;主片中断掩码irq_mask_9_15equb;从片中断掩码iop
5、ort_centequ0d800h;9054芯片的io地址当中断源为IRQ9时,程序如上面所示,当本机的中断向量后,应对相应的部分进行修改。中断向量int_vectirq_mask_2_7irq_mask_9_15ioport_cent0~708h-0fh相应位为0所有位为1根据硬件检测的结果8~f70h-77hD2位为0相应位为0五、实验接线中断IRQ接单脉冲六、实验源程序和流程图:7-1datasegmentint_vectequ0bh;先要查询中断向量号,现在写的是IRQ3irq_mask_2_7equb;这一行以及下一行设置参考实验书
6、P56irq_mask_9_15equb;ioport_centequ0ec00h;这个地址查询方式参考pptcsregdw?ipregdw?;旧中断保存irq_timesdw?;中断计数,在中断处理程序中设置,只要设置初始值,然后会自动减一numdw?msg1db0dh,0ah,'TPCpcicardinterrupt:','$'msg2db0dh,0ah,'Pressanykeytoexit.',0dh,0ah,'$'dataends;----------------------------------------------------
7、---stackssegmentstackdb100dup(?)stacksends;-------------------------------------------------------;---------------------------------------------------------codesegmentassumecs:code,ds:data,ss:stacks,es:datamainprocfarstart:cli;清中断标志movax,datamovds,axmoves,axmovax,stacksmovs
8、s,ax;到这里是初始化各段movdx,ioport_cent+68hinax,dxorax,0900houtdx,ax;到这里是设置中断使能moval,int_v