中止服务程序有一个特别的界说办法: void interrupt ISR(void)其间的函数名“ISR”能够改成恣意合法的字母或数字组合,但其进口参数和回来参数类型有必要是“void”型,亦即没有进口参数和回来参数,且中心有必要有一个关键词“interrupt”中止函数能够被放置在原程序的恣意方位。由于已有关键词“interrupt”声明,PICC 在最终进行代码衔接时会主动将其定位到0x0004 中止进口处,完成中止服务呼应。编译器也会完成中止函数的回来指令“retfie”。
一个简略的中止服务演示函数如下:
void interrupt ISR(void) { //中止服务程序
} //中止完毕并回来
PICC 会主动参加代码完成中止现场的维护,并在中止完毕时主动康复现场,所以编程员无需象编写汇编程序那样参加中止现场维护和康复的额定指令句子。但如果在中止服务程序中需求修正某些全局变量时,是否需求维护这些变量的初值将由编程员自己决议和施行。用C 言语编写中止服务程序有必要遵从高效的准则:
z 代码尽量简略,中止服务着重的是一个“快”字。
z 防止在中止内运用函数调用。
z 防止在中止内进行数学运算。数学运算将很有或许用到库函数和许多中心变量,就算不呈现递归调用的问题,光在中止进口和出口处为了维护和康复这些中心暂时变量就需求很多的开支,严重影响中止服务的功率。
中档系列PIC 单片机的中止进口只要一个,因而整个程序中只能有一个中止服务函数。