硬件中断设计:状态寄存器与中断服务程序

需积分: 48 1 下载量 66 浏览量 更新于2024-07-12 收藏 650KB PPT 举报
"这篇资料主要介绍了硬件中断程序设计,特别是状态寄存器B在其中的作用。状态寄存器B包含了多个控制位,如周期中断允许位(PIE)、报警中断允许位(AIE)等,用于管理不同类型的中断。此外,还提到了86系列CPU的中断系统,包括实模式下的中断分类,如不可屏蔽中断(NMI)、可屏蔽中断(INTR)以及它们的中断源。中断向量表是存放中断服务子程序地址的关键结构,CPU会根据中断类型号从中找到相应程序进行执行。在程序设计中,需要编写中断服务函数并利用setvect函数来设置中断向量,实现中断处理。" 本文主要讨论了硬件中断程序设计,特别关注了状态寄存器B中的各个控制位。状态寄存器B是一个重要的硬件组件,它的各个位,例如D7位的PIE(周期中断允许位)和D6位的AIE(报警中断允许位),用于控制特定中断的启用或禁用。当这些位被置1时,相应的中断功能被允许;当置0时,则被禁止。此外,状态寄存器B还包括了TE(计时允许位)、UIE(计时更新结束中断允许位)、SQWE(方波输出允许位)、DM(计时信息格式选择位)、M24(模选择位)和DSE(夏时制允许位)等,这些位共同决定了系统的中断响应行为。 接着,文章讲解了86系列CPU中断系统的结构。86系列CPU可以处理256种不同类型的中断,分为不可屏蔽中断NMI和可屏蔽中断INTR。外部中断通过NMI和INTR管脚申请,而内部中断则包括微处理器生成的中断(如单步中断、除法错误中断)和软件中断指令。中断允许标志IF用于控制是否响应INTR中断。在IF为1时,CPU将响应INTR中断请求。 中断向量表是CPU响应中断请求的关键,它位于内存的低地址区域,存储了每个中断服务子程序的地址。当CPU检测到中断请求,会依据中断类型号找到对应的4字节中断向量,执行指定的中断服务程序。 在程序设计中,中断服务子程序需要编写成函数形式,并使用`interrupt`关键字进行声明。同时,使用`setvect`函数可以设置中断向量,将中断服务子程序的地址放入中断向量表中。例如,如果要为中断类型号为0x08的中断设置服务函数myint,可以使用如下代码: ```c #include <dos.h> void interrupt myint(void) { // 函数体 } void main() { setvect(0x08, myint); // 其他代码 } ``` 总结来说,硬件中断程序设计涉及对状态寄存器的配置、中断服务子程序的编写以及中断向量的设置。理解和熟练掌握这些概念对于编写高效、可靠的嵌入式系统程序至关重要。