硬件中断程序设计

硬件中断程序设计

ID:9064287

大小:1.24 MB

页数:40页

时间:2018-04-16

硬件中断程序设计_第1页
硬件中断程序设计_第2页
硬件中断程序设计_第3页
硬件中断程序设计_第4页
硬件中断程序设计_第5页
资源描述:

《硬件中断程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、硬件中断程序设计实模式下的中断系统中断(interrupt)是指计算机“暂停”了正在执行的程序,转去处理一个突发的紧急事件的过程。处理这个紧急事件,计算机要执行一个相应的中断服务子程序。处理完毕之后,计算机又要接着执行刚才被中断了的程序。引起中断的事件称为中断源。编写中断程序要了解的几个问题1.中断源是什么?什么条件下触发中断?2.中断类型号是多少?中断向量表存放的是什么?3.中断服务程序是什么?中断服务程序要完成什么功能?4.中断是否可屏蔽?中断优先级是多少?中断过程示意图中断嵌套示意图86系列CPU的中断源86系列CPU可处理256个型号的中断,中断类型号为0x00

2、0xff。不可屏蔽中断NMI外部中断可屏蔽中断INTR中断源内部中断:微处理器产生的中断(除法出错0x00,溢出0x04,单步中断0x01,断点中断0x03)软件中断:中断指令产生的软件中断(DOS,BIOS)NonMaskableInterrupt(NMI)Interruptrequest(INTR)外部中断外部中断通过CPU的管脚NMI和INTR申请中断,也称硬件中断。中断允许标志IF(InterruptFlag)可屏蔽INTR中断。0:禁止CPU响应INTR中断IF=1:允许CPU响应INTR中断中断向量表内存中最低地址开始的1024个字节作为中断向量表,存放中断

3、服务子程序的地址,每个型号的中断占4个字节。CPU响应中断请求后,根据中断类型号到中断向量表中找出该型号中断服务程序的地址,执行相应的中断服务程序。有关硬件中断的几个函数中断程序设计包括两个部分:1)写一个中断服务子程序,要写成中断函数的形式。2)设置中断向量,即把中断服务子程序的地址放到中断向量表中去。(1)中断服务函数中断服务子程序要写成函数形式,用关键词interrupt说明。voidinterruptmyint(void){函数体}自定义函数在使用前要说明,格式如下:voidinterruptmyint(void);(2)设置中断向量函数setvect()函数格

4、式如下,由dos.h说明:voidsetvect(intnum,voidinterrupt(*isr)());num---中断类型号,isr---指向中断服务函数的函数指针若中断类型号为0x08,中断服务函数名为myint,程序如下:#include…setvect(0x08,myint);(3)获取中断向量函数getvect()该函数从中断向量表中取出指定中断类型号的中断服务函数的地址,赋给一个函数指针。函数用法举例:#includevoidinterrupt(*oldint)();…oldint=getvect(中断类型号);(4)屏蔽中

5、断函数disable()将IF清0,禁止CPU响应INTR中断,由dos.h说明。函数原形:voiddisable(void);用法:#include…disable();(5)开放中断函数enable()将IF置1,允许CPU响应INTR中断,由dos.h说明。函数原形:voiddisable(void);用法:#include…enable();8259A中断控制器8259A为CPU管理硬件中断,每一片8259A可管理8个硬件中断源,级联使用可管理更多的硬件中断.PC系列微机中相当有两片8259A级联,管理15个硬件中断源.8259A的结

6、构INTAINTD0~D7数据总线缓冲器控制逻辑RD中断服务寄存器优先权处理器中断请求寄存器WR读/写IR0逻辑IR1A0内部总线IR2IR3CSIR4IR5CAS0IR6级联缓冲ISRIRRIR7CAS1比较器CAS2中断屏蔽寄存器IMRSP/EN8259A的几个主要部分1.中断请求寄存器IRRIRi(i=07)上有中断请求时,IRR相应位置1。2.中断屏蔽寄存器IMRIMR第i位置1,屏蔽IRi上的中断请求。3.优先权处理器根据中断屏蔽情况及优先级顺序,决定将那个中断请求送往CPU。4.中断服务寄存器ISR若某个中断请求被CPU响应,则相应位置1。8259A的编程8

7、259A初始化时设定:高电平中断触发方式为边沿触发低电平主片中断类型号0x08~0x0f从片中断类型号0x70~0x77中断优先级从IR0到IR7依次递降采用非自动中断结束方式,即中断服务函数结束前要用软件发出一个中断结束(EOI)命令:outportb(0xa0,0x20);(中断源来自从片)outportb(0x20,0x20);该语句写在中断服务程序的最后IR0日时钟(8254通道0)中断源IR1键盘IR8实时钟IR9软件重新指向INT0AHIR10保留IR2IR11保留IR12保留IR13协处理器IR14硬盘IR15保留IR3串口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。