51单片机中断函数位置问题

在写51单片机代码时,中断服务函数为什么不用提前声明就可以放在主函数后面?

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

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

不知道你这个问题是否已经解决, 如果还没有解决的话:

1、外部中断源端口引脚:外部中断0,端口引脚为12(P3^2),引脚符号为INTO^

外部中断1:端口引脚13(P3^3),引脚符号为INT1^

2、外部中断请求方式:负边沿触发,使控制位IT0=1即可;

低电平触发,使控制位IT1=0即可


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^