PIC中断写法

2020-02-09 09:35发布

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

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

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

这个问题搞了我好久啊。
一直以为是8级堆栈用完了。。。。。。。。。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
zjswuyunbo
2020-02-09 16:39
1楼的话让我有些担心。
在其他的代码中,我确实没怎么发现。
只是发现有时候堆栈的指针会废掉。
我的理解是:
在中断程序的GIE=1;这个地方是有问题,虽然在程序中在GIE后面是没有代码的,但是可能单片机还要做一些出栈的事情。
而在此时,再次进入中断,导致堆栈混乱。

不知上诉有没有什么地方不对?
改用后面的程序后,目前还没发现什么地方有问题。

一周热门 更多>