您的位置 首页 5G

PIC 中止 服务程序

中断服务程序有一个特殊的定义方法:voidinterruptISR(void)其中的函数名ISR可以改成任意合法的字母或数字组合,但其入口参数和返回

中止服务程序有一个特别的界说办法: void interrupt ISR(void)其间的函数名“ISR”能够改成恣意合法的字母或数字组合,但其进口参数和回来参数类型有必要是“void”型,亦即没有进口参数和回来参数,且中心有必要有一个关键词“interrupt”中止函数能够被放置在原程序的恣意方位。由于已有关键词“interrupt”声明,PICC 在最终进行代码衔接时会主动将其定位到0x0004 中止进口处,完成中止服务呼应。编译器也会完成中止函数的回来指令“retfie”。

一个简略的中止服务演示函数如下:

void interrupt ISR(void) { //中止服务程序

if (T0IE && T0IF){ //判TMR0 中止

T0IF = 0; //铲除TMR0 中止标志 //在此参加TMR0 中止服务

}

if (TMR1IE && TMR1IF){ //判TMR1 中止 T

MR1IF = 0; //铲除TMR1 中止标志

//在此参加TMR1 中止服务

}

} //中止完毕并回来

PICC 会主动参加代码完成中止现场的维护,并在中止完毕时主动康复现场,所以编程员无需象编写汇编程序那样参加中止现场维护和康复的额定指令句子。但如果在中止服务程序中需求修正某些全局变量时,是否需求维护这些变量的初值将由编程员自己决议和施行。用C 言语编写中止服务程序有必要遵从高效的准则:

z 代码尽量简略,中止服务着重的是一个“快”字。

z 防止在中止内运用函数调用。 尽管PICC 答应在中止里调用其它函数,但为了处理递归调用的问题,此函数有必要为中止服务独家专用。既如此,无妨把本来要写在其它函数内的代码直接写在中止服务程序中。

z 防止在中止内进行数学运算。数学运算将很有或许用到库函数和许多中心变量,就算不呈现递归调用的问题,光在中止进口和出口处为了维护和康复这些中心暂时变量就需求很多的开支,严重影响中止服务的功率。

中档系列PIC 单片机的中止进口只要一个,因而整个程序中只能有一个中止服务函数。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/261263.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部