12ms中断实验:C语言下硬件中断程序设计与向量设置

需积分: 48 1 下载量 110 浏览量 更新于2024-07-12 收藏 650KB PPT 举报
实验要求涉及到硬件中断程序设计,具体目标是在C语言环境下实现一个12ms定时器中断程序,每中断一次在CRT(阴极射线管显示器)上显示一个字符,总共循环400次后恢复系统原有的功能。这个任务需要完成以下几个关键步骤: 1. **中断服务函数与中断类型**: 实验首先要求定义一个指向中断服务函数的函数指针,中断服务函数(例如`voidinterruptmyint(void)`)是中断程序的核心部分,它会在指定的时间间隔(如12ms)被硬件触发时执行。使用`interrupt`关键字声明函数,表明其用于中断处理。 2. **8254定时器初始化**: 你需要使用8254定时器来实现12ms的定时中断。这可能涉及配置定时器的控制寄存器,设置适当的定时周期以确保中断触发的准确性。 3. **中断向量管理**: 在实模式下,中断向量表是内存中专门存储中断服务子程序地址的区域,共1024字节。为了正确响应中断,需要从中断向量表中取出原中断向量,保存下来,并将其替换为指向`myint`函数的地址,实现中断服务的跳转。 4. **中断服务程序编写**: 编写中断服务函数时,不仅要显示字符,还要进行计数,以便在达到400次中断后结束循环。这可能需要用到中断计数器和字符缓冲区等数据结构。 5. **中断控制**: 需要管理中断允许标志IF,对于可屏蔽中断INTR,可以通过设置IF=1来允许或禁止CPU响应中断。在中断处理结束后,记得将IF重置为初始状态。 6. **中断向量恢复**: 当400次中断完成后,需要将中断向量恢复到原来的状态,以便系统可以继续执行其他中断或非中断任务。 7. **中断指令使用**: 熟悉如何使用中断指令(如INT n,其中n为中断类型号),以及如何通过`setvect`函数设置中断向量,这是实现中断程序的关键部分。 这个实验不仅测试了对中断系统原理的理解,还要求实践中断服务函数的编写、中断向量表操作和中断控制,以及与硬件交互的能力,是C语言程序设计中硬件层面的重要技能训练。