请教PIC单片机程序死在中断了,却没有进我写的中断函数

2019-03-25 19:53发布

单片机是PIC16F688的,
我用中断函数 void interrupt isr(vvoid)
             {...}
运行以后就停在中断里了,但是没有进入上面这个中断函数,是不是这个中断函数的格式不正确呢?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
2042
1楼-- · 2019-03-26 04:47
对于16系列的CPU不是很熟悉.
中断向量表在哪里? 有.gld文件吗, 哪个文件调用你上面的函数?

另外, 确认中断已产生了?  中断配置正确吗? (包括中断优先级, 中断使能等).
如果是电平出发, 中断触发后中断电平怎么处理的? 中断里面清除中断标记了吗?
elton0296
2楼-- · 2019-03-26 10:10
楼主还在搞前面的项目吗? 辛苦.
fjiahao
3楼-- · 2019-03-26 16:09

//////////////////////////////////////////////////////////////////////////
//  Interrupt routine for project                                       //
//////////////////////////////////////////////////////////////////////////
static UCHAR isrSaveFSR;
static void interrupt isr(void)
{
  //-0-> isr PROTECT  //-1-> watch dog
        isrSaveFSR = FSR;
        if(RCIF){
          ...
          RCIF=0;
        }
        if(TMR1IF){  //Per 1 millisecond
                Tmr1Resetting();
                __isrRctmrCounting();
                ...
                (RC0)?(RC0=0):(RC0=1); //check your interrupte function
                TMR1IF = 0;
        }/**/
...
        FSR = isrSaveFSR;
}

In your main()
Add below code:
        TMR1IE=1; PEIE=1; GIE=1;

I am using Hitech C
hlbytt2005
4楼-- · 2019-03-26 16:28
用的是AD中断,我用查询的方法,发现中断标志确实置1了,
如果打开中断使能,一运行就发现死在中断里了,
16系列的单片机只有一个中断源
Jnfnet
5楼-- · 2019-03-26 21:34
引用 3 楼 nktailor 的回复:

//////////////////////////////////////////////////////////////////////////
//  Interrupt routine for project                                      //
//////////////////////////////////////////////////////////////////////////
static UCHAR isrSaveFSR;
static void interrupt isr(void)
{
  //-0-> isr PROTECT  //-1-> watch dog
isrSaveFSR = FSR;
if(RCIF){
          ...
          RC…


运行的时候根本就没有进入static void interrupt isr(void) ;
我仔细查看了一下中断使能,设置是正确的
cekong
6楼-- · 2019-03-27 02:25
 精彩回答 2  元偷偷看……

一周热门 更多>