INTR中断响应的大致过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
f1 干活标志 f1=1 干活 f1=0 不干活
可能涉及以下一些工作: 保存原中断向量,要定义一个函数指针。 8254通道0初始化。 设新的中断向量。 计数 400次之后,恢复原计数初值。 恢复原中断向量。
主程序 关中断 初始化0# 设初中始断化向0#量 开中断
N f1=1? Y 干活 f1清0
中断程序的另一种结构
子程序 f1置1 EOI命令 返回
void interrupt myint8(void);
void main(void)
{ disable();
outportb(0x43,0x36);
outportb(0x40,0x9d);
outportb(0x40,0x2e);
setvect(0x08,myint8);
enable();
while(1);
中断程序举例
利用8254的通道0作为实时时钟定时,每10mS中断一次。编 写第8类中断的中断服务程序每中断一次在CRT上显示一个8字。
通道0初始化 写中断服务子程序 设置中断向量
计数初值 10mS/838nS 11933=0x2e9d
程序清单
#include <dos.h>
#include <stdio.h>
}
void interrupt myint8(void)
{
源自文库
putchar('8');
outportb(0x20,0x20);
}
主程序 关中断 初始化0# 设中断向量 开中断
循环
子程序 显示字符 EOI命令
返回
实验要求
12mS中断一次,每中断一次在CRT上显示一个字符,400次之后恢复系统原有功 能。