- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理实验二微机原理实验二
实验二 中断及硬件扩展实验
一、实验目的
1、掌握内部定时器8254中断的使用。
2、掌握外部中断的使用,学会编写中断服务程序。
3、学会可编程并行IO接口芯片8155A的使用。
4、学会扩展LCD显示。
二、中断程序验证实验
实验箱提供三类可调用的中断资源
A)、可直接调用的DOS和BIOS中断,实验箱所支持的软中断与PC完全兼容;
B)、实验箱的精简扩展总线中共有4个中断资源,可用于支持用户扩展的专用硬件单元;
C)、实验箱单元定时器TMR1主要用于实验1ms到50ms间隔的定时中断。
下表为实验箱硬件中断一览表
中断名称 中断号 中断优先级 备注 IRQ6 0x0E 13(低) 扩展总线外部中断 IRQ7 0x0F 14(最低) 扩展总线外部中断 IRQ10 0x72 4(最高) 内部定时中断 IRQ12 0x74 6(高) 扩展总线外部中断 IRQ14 0x76 8(中等) 扩展总线外部中断
各个中断对应的中断服务程序定义
Void interrupt IRQ6_ISR(__CPPARGS);
Void interrupt IRQ7_ISR(__CPPARGS);
Void interrupt IRQ10_ISR(__CPPARGS); //定时中断服务
Void interrupt IRQ12_ISR(__CPPARGS);
Void interrupt IRQ14_ISR(__CPPARGS);
Int InstallISR(int intno); //置中断,输入参数为中断号
Int UnistallISR(int intno); //恢复中断
1、内部定时器8254中断的使用
DVCC-32内部包含一个82C54定时器timer1可供应用程序使用,timer1的输出时钟为1MHz,控制端口为0x43,数据端口为0x41。
Netbox.Cpp定义了低层的接口函数,tmrisr.cpp提供了定时中断服务程序,tmrdemo.cpp包含主函数。IRQ10为内部中断,其时钟输出已接到相应的中断输入,不需要外接线。TMRDEMO.CPP首先设置TIMER1输出一个周期为10ms的方波信号,然后启动定时中断服务程序。定时中断服务程序tmrisr.cpp中,内部计数IRQ10CNT值加1。
键入BC,使系统进入BC集成开发环境。
选择PROJECT,在OPEN PROJECT FILE下输入要建立的工程TMRDEMO。
按INSERT,向工程文件中添加NETBOX.CPP,TMRISR.CPP和TMRDEMO.CPP.
按F2将程序存盘,再按F9对程序进行编译连接,生成EXE可执行文件。
在DOS提示符下,键入:td空格–rp空格TMRDEMO并回车,程序将被自动下载至DVCC-32JH中,并弹出源码调试窗口。
按F9,运行程序。在LCD屏第一行显示“TMR DEMO”,第二行显示“COUNT=**”,IRQ10cnt每次计满10次,COUNT的值加1。
按照给出的源程序进行修改,改变计数的速度。(原10秒大概100次,改成10秒后上千次)编程设置方法如下:
Outport(0x43,0x76); //方波模式
Outportb(0x41,N0xff); //N为分频数的低字节
Outportb(0x41,(N8)0xff); //N为分频数,设置分频数的高字节
Timer1的分频输出已接到中断输入IRQ10(内部)已支持定时中断功能。
2、外部硬件中断的使用
在实际应用中,一般使用硬件中断的方法是编写中断服务程序,在程序初始化中安装中断程序,在程序退出时卸载中断程序。中断服务程序一般通过存储器变量与上层应用程序交换数据。本实验外部中断的触发用单脉冲发生器输出来模拟,按一次单脉冲发生按钮,触发一次外部中断。在外部中断服务程序中,每中断一次,分别对各自的计数值加1。
1)、IRQ14和IRQ12两个插孔接单脉冲发生器输出插孔SP。即JW2或JW1的第19针为IRQ12,JT1左(ADC0809下方)第一针为IRQ14。
2)、进入DOS提示符,并进入工作目录C:\dvcc32;
3)、键入命令BC,使系统进入BC集成开发环境,按ALT+P键打开下拉菜单,选择Open Project 菜单,打开ISRDEMO.PRJ。再按ALT+P,选择菜单ADD item,向工程文件中添加NETBOX.CPP、BUSISR.CPP及ISRDEMO.CPP;
4)、NETBOX.CPP定义了低层接口函数,BUSISR.CPP提供了在扩展总线的2个外部中断(IRQ12和IRQ14)函数的编写方
文档评论(0)