PIC中断写法

2020-02-09 09:35发布

单片机PIC16F877A
void interrupt  INT()
{
        GIE=0;
        {中断代码}
        GIE=1;
}

这个中断写法,导致程序堆栈溢出,程序跑飞。

void interrupt  INT()
{
        {中断代码}
}
这个中断写法,程序才正常。

这个问题搞了我好久啊。
一直以为是8级堆栈用完了。。。。。。。。。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
su_mj000
2020-02-09 11:14
进入中断后应该先清除引起本次中断的中断标志(如SSPIF、ADIF等)。这样就不会由于‘GIE=1;’发生连续中断。
这里的‘GIE=0;’,‘GIE=1;’用得不太合理。

这似乎有点‘奇特’,但仔细想就能明白其所以然了。

一周热门 更多>