求助,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-10 14:01
回复【10楼】wangrwnyan123
-----------------------------------------------------------------------

换过了,还是不行,网上说8.05的比较稳定,但是不支持16F616

回复【11楼】bigZ
-----------------------------------------------------------------------

没有,现在只有TMR1会发生溢出中断,但是在while之前TMR1是没有溢出的,之前的程序里面已经把TMR1清零,中断标志位也清零了
wangrwnyan123
2楼-- · 2020-02-10 17:58
楼主,你的程序看得有点头痛。 程序的初化要放在最前面。
20061002838
3楼-- · 2020-02-10 23:48
 精彩回答 2  元偷偷看……
wangrwnyan123
4楼-- · 2020-02-11 04:24
不好意思,真看错了。不知道你的初始化都包括了哪些内容?如果要经常用到中断,我一般是在初始化的时候就开启全局中断,然后关闭其它所有的中断。要用到的时候再开启具体的中断。
ggjj
5楼-- · 2020-02-11 08:41
回复【16楼】wangrwnyan123
-----------------------------------------------------------------------

中断程序完成后好像没有看到清中断标志
millwood0
6楼-- · 2020-02-11 09:53
"我把程序上传上来了 "

1) it looks like the code is written by two different people;
2) it looks like you did enable interrupt.

一周热门 更多>