硬件中断设计:状态寄存器与中断服务程序
需积分: 48 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);
// 其他代码
}
```
总结来说,硬件中断程序设计涉及对状态寄存器的配置、中断服务子程序的编写以及中断向量的设置。理解和熟练掌握这些概念对于编写高效、可靠的嵌入式系统程序至关重要。
2024-01-01 上传
2021-11-12 上传
2021-09-08 上传
点击了解资源详情
点击了解资源详情
2024-05-06 上传
2011-12-08 上传
2018-07-26 上传
点击了解资源详情
昨夜星辰若似我
- 粉丝: 49
- 资源: 2万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析