求助,PIC 关闭全局中断还是能够进中断

2020-02-08 12:11发布

PIC单片机关闭全局中断 GIE之后还是能够进入中断,而且编译之后的汇编代码里面没有 RETFIE 这条中断返回指令

单片机型号是PIC16F616,编译器是MPLAB 8.63 + PICC9.80  45天评估版,PRO模式

一下是一段测试代码
  
  GIE = 0;

  while(1)
  {
     PIN_LED = 1;
      asm("nop");
      asm("nop");
      asm("nop");
      asm("nop");
     PIN_LED = 0;
      asm("nop");
      asm("nop");
      asm("nop");
      asm("nop");
   }

这是主函数里面的测试代码,GIE = 0,全局中断已经关掉了,后面while循环里面是IO输出波形测试
但是实际情况是 观测其他IO口的输出波形证明单片机还是进入中断了(其他IO口输出波形是由中断程序产生且中断程序没有独占CPU),而且while循环里面的程序完全不执行。

有没有谁遇到过类似的问题啊? 如何解决的?
被这个问题折腾了一天了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
20061002838
1楼-- · 2020-02-09 15:39
回复【4楼】vipcff
-----------------------------------------------------------------------

程序上传了,看门狗是关了的



回复【5楼】wangrwnyan123
-----------------------------------------------------------------------

按照芯片资料,只要把 GIE关掉 ,就不能进入中断函数的啊
suncq
2楼-- · 2020-02-09 17:36
看看用到PICC9.80  里面的其它函数了吗,特别是eeprom等函数,他们里面有开中断。
20061002838
3楼-- · 2020-02-09 21:21
回复【8楼】suncq
-----------------------------------------------------------------------

没有啊,PIC16F616 是没有EEPROM的,也没有调用PICC 的函数
wangrwnyan123
4楼-- · 2020-02-10 03:08
 精彩回答 2  元偷偷看……
bigZ
5楼-- · 2020-02-10 08:31
可能是,在进入while前有中断产生,在中断返回前又发生了中断,导致程序无法返回,while也就没执行
20061002838
6楼-- · 2020-02-10 10:49
现在更离谱了
现在我在程序里面一进入中断就把IO口置位,退出中断之前再复位,现在的现象是能够进入while循环但是中断里面的程序不执行了!!!把那两句IO操作给删掉又是原来的现象了!
注:用来测试的IO口是RC5 一进中断就操作的就是这个IO口,while循环里面操作的也是这个IO,中断里面还操作的IO口有RC0-RC3。

一周热门 更多>