为什么中断函数不声明也可以

用C写中断函数时,为什么不声明也可以用
我也正在学习使用中断函数,他可以在和主函数完全不同的一个.c文件中,而且也无需在头文件或主函数所在.c文件中声明。只需在工程中加载此文件即可。好像系统查看关键字“interrupt X”就能知道这个是个中断处理函数。

CPU每执行一行程序都会访问中断,看是否有中断请求。所以不需要声明。只要中断开了,有了中断请求,自动会响应中断,进入中断函数,无需事先声明。

顾名思义,中断函数,只有中断发生时才执行的函数嘛,当然不需要调用了。
中断函数由中断控制寄存器进行控制管理,在程序中,不用申明、不能调用。中断函数不是有中断号嘛,那个就是执行中断函数的入口,C语言程序没有感觉,汇编程序就必须知道这个入口的地地址的。
单片机的每个中断都相当是一个特殊的开关。当你的程序里面允许某个中断其作用,那么一旦产生中断信号,单片机就会由硬件作用,将程序直接指向这个中断的入口(向量)从这里执行指令(执行完以后会再回到终端产生前的程序处)。
每个中断向量仅仅数个字节,不足以安排程序。一般是在这里按一个跳转指令,跳转到中断程序处。

这些对于学习过汇编语言的人来说,是清清楚楚的。由于C语言不直接接触这一块,往往是不太了解。

中断服务函数ISR不被任何函数调用,ISR和main可以看作是并行发生的。这下明白为什么不用声明了吧。因为没有人也不能有人调用它。系统查看关键字“interrupt X”就能知道这个是个中断处理函数。
(0)

相关推荐