今天看了下时钟中断,在此记下一笔。
如果同时能对哪位朋友有帮助实在是再好不过。
开始正题。
每种中断都有一个中断号,时钟中断号如下
#define CLOCK_INT 0x1c /*时钟中断号*/
时钟中断的频率为18.2HZ,每一次中断,系统都会对其做出处理。
所谓处理就是进行一次相应的中断服务程序调用。
而中断服务程序的地址可以通过中断向量计算出来。
中断向量其实就是中断服务程序的段基值和偏移量。
这些中断向量按照中断号被保存在一张查询表里,这就是我们经常提到的中断向量表。
因此我们可以通过中断号,得到相应的中断向量,即中断服务程序地址。
void interrupt(*getvect(int intr_num));
如果我们某些时候需要实现自己的中断服务程序,该怎么办呢?
1.定义一个指向中断函数的指针变量,用来保存系统的中断服务程序地址
void interrupt (*old_handler)(void);
2.定义一个新的中断处理函数
void interrupt new_handler(void)
{
/*新的中断处理函数实现*/
}
3.设置新的中断处理
void set_handler(void interrupt(*IntProc)(void))
{
old_handler=getvect(CLOCK_INT); /*获取并保存中断号为CLOCK的中断处理函数的入口地址*/
disable();/*设置新的时钟中断处理过程时,屏蔽所有中断*/
setvect(CLOCK_INT,IntProc);/*将中断号为CLOCK的中断处理函数的入口地址改为IntProc()函数的入口地址即中断发生时,将调用IntProc()函数--我们新的handler*/
enable();/*开启中断*/
}
4.别忘了最后重置回以前的中断处理
void reset_handler()
{
disable();
setvect(CLOCK_INT,old_handler);
enable();
}
大概就是这样了。
附件里是一个小的demo程序,每18次时钟中断,即1秒,打印一次。
分享到:
相关推荐
### 实验一 时钟中断事件模拟 #### 实习目的 本实验旨在通过模拟时钟中断的产生及其处理过程,使学生深入理解中断机制的基本原理以及中断处理程序的设计方法。通过对时钟中断这一具体场景的模拟,加深对操作系统...
操作系统中的时钟中断是计算机硬件为了提供时间基准和调度任务而设计的一种机制。时钟中断是由硬件时钟产生的,通常以固定的时间间隔触发,比如每毫秒或每微秒一次。这些中断允许操作系统知道时间流逝,并据此执行...
### Linux内核的时钟中断详解 #### 一、引言 在计算机系统中,时钟中断扮演着至关重要的角色,尤其是对于操作系统内核而言,它如同心脏的跳动,推动着整个系统的运行节奏。在Linux内核中,时钟中断机制不仅负责...
在Linux的0号中断是一个定时器中断。...Linux的OS时钟的物理产生原因是可编程定时/计数器产生的输出脉冲,这个脉冲送入CPU,就可以引发一个中断请求信号,我们就把它叫做时钟中断。 “时钟中断”是特
模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序 本文旨在模拟时钟中断的产生,并设计一个对时钟中断事件进行处理的模拟程序。该程序使用C++语言编写,涉及到时间变量、定时函数、随机数生成、计时...
在Windows操作系统中,时钟中断程序是用于处理定时任务的核心组件。这个例子展示了如何在Windows环境下创建一个简单的时钟中断,使用的是`timeSetEvent`函数。`timeSetEvent`函数是多媒体定时器API的一部分,它允许...
本示例主要探讨的是在Mini2440上实现时钟中断的处理,这对于理解操作系统内核的调度机制以及实时性应用至关重要。 时钟中断是嵌入式系统中最基础的中断类型之一,它是由硬件定时器产生的周期性信号。在Mini2440中,...
一、设计内容 模拟中断事件的处理。 二、设计目的 现代计算机系统的硬件...本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。
### 单片机编程中时钟中断的关键知识点 #### 一、中断概念及重要性 在单片机的学习和开发过程中,**中断**是一个非常重要的概念。它允许单片机在执行正常程序流程的同时,能够对外部事件做出快速响应。通过中断机制...
《TMS320C6678时钟中断初始化详解》 TMS320C6678是一款高性能的数字信号处理器,由德州仪器(Texas Instruments)开发,广泛应用于音频、视频处理、通信系统等领域。其核心性能的发挥离不开正确的时钟管理与中断...
本教程将详细探讨S3C2440上的时钟中断及其相关代码,这对于理解嵌入式系统的实时性和调度至关重要。 时钟中断是嵌入式系统中非常关键的机制,它定期触发处理器,使得操作系统能够执行必要的任务,如任务调度、计时...
单片机时钟中断是微控制器中非常重要的一个概念,它允许用户在特定的时间间隔内,停止当前程序的运行,并转而执行一段紧急的、预先设定的程序代码。时钟中断的应用在单片机编程中有着广泛的场景,如定时任务、实时性...
>timer.S————设置 8253 工作模式,提高时钟中断的频率 >timer.h————声明 timer.S 中的函数 >8259A.S————两个函数:设置8259A的pic_init 和 开启中断的set_if >8259A.h————声明 8259A.S 中的函数 ...
本文将深入探讨数字时钟的实现,主要关注中断和汇编语言编程。51单片机的中断系统是其核心特性之一,它允许处理器在执行程序的同时响应外部事件,如定时器溢出、串口通信等。对于数字时钟的构建,中断机制尤其关键,...
这是一个操作系统实验课上的全部内容,这一实验为时钟中断处理程序和键盘中断响应程序.本次实验的内容为操作系统工作期间,利用时钟中断,在屏幕24行79列位置轮流显示’|’、’/’、’-’和’\’,适当控制显示速度...
根据操作系统课程设计指导书所提供的基础知识,分析文件kernel/sched.c 和include/asm-i386/spinlock.h 中关于Linux的调度和时钟中断的代码,了解一个LINUX操作系统的进程调度以及时钟中断的处理方式,得到相关的...
在微机原理中,电子时钟中断设计是一个重要的实践环节,它涉及到计算机系统中的实时性和时间管理。在这个项目中,我们需要利用微机现有的硬件和软件资源编写程序,以实现一个在显示器屏幕上动态显示小时、分钟和秒的...
在Linux操作系统中,时钟中断是系统运行过程中至关重要的一部分,它负责维护系统的时间基准和调度任务。时钟中断是硬件层面触发的一种中断,通常由CPU内部的定时器产生,用于提醒操作系统时间已经流逝,需要执行一些...