中断服务程序的入口地址是相对固定的,而普通的功能程序入口则是随意设置的,此外,中断服务程序的调用方式也不同于普通的功能程序,中断服务程序的调用是靠中断申请信号,而非普通的程序。
在C51中,中断服务程序同样是一种特殊的函数,其标准形式如下。
void 函数名(void)interrupt n using m
{
函数体语句
}
此处的interrupt和using是C51的关键字,interrupt表示该函数是一个中断服务函数,n表示该中断服务函数所对应的中断源,中断源与中断编号的对应关系见表
中断源 |
中断编号 |
中断源 |
中断编号 |
外部中断0 |
0 |
外部中断1 |
2 |
定时器T0 |
1 |
定时器T1 |
3 |
定时器T2 |
5 |
串行口中断 |
4 |
Using用指定该中断服务程序要使用的工作寄存器组号,m取值为0~3,当不使用关键字using时,编译系统将会把当前工作寄存器组的8个寄存器都压入堆栈,中断服务函数是由系统调用的,程序中的任何函数都不能调用中断服务函数。
一般可以不使用using m.
文章评论(0条评论)
登录后参与讨论