PIC18 中断问题

2020-02-09 09:37发布

void N_Nop (void)
{
        Nop ();
        Nop ();
        Nop ();
        Nop ();
        Nop ();
}


#pragma code InterruptVectorHigh = 0x08

void InterruptVectorHigh (void)
{
  _asm
    goto InterruptHandlerHigh //jump to interrupt routine
  _endasm
}

//----------------------------------------------------------------------------

// High priority interrupt routine
#pragma code

#pragma interrupt InterruptHandlerHigh

void InterruptHandlerHigh ()
{
        if (PIR1bits.TMR1IF)
        {                                           //check for TMR0 overflow
                PIR1bits.TMR1IF = 0;                                //clear interrupt flag

                TMR1H = 0xFD;                //65536 -768
                TMR1L = 0x12;

                LATJbits.LATJ3 = ~LATJbits.LATJ3;

                Nop ();
                Nop ();
                Nop ();
                Nop ();
                Nop ();
                Nop ();
                //N_Nop ();
        }
}
晶振为6.144MHz
中断程序如上,
问题:我是设置8K定时中断,RJ3取反,如果不调用N_Nop() ,用示波器测试 RJ3端口的,频率为4KHz是对的。
可调用了N_nop();或其他程序,测量RJ3端口的频率3.268KHz就不对了,不知道为什么,请高手指点下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
aliangnisno1
1楼-- · 2020-02-09 14:59
是不是堆栈溢出?你要搞清楚你用的MCU硬件堆栈有几级?
dreamboy
2楼-- · 2020-02-09 17:31
有32级,确定没有溢出。我单步进是对的。
dreamboy
3楼-- · 2020-02-09 19:23
 精彩回答 2  元偷偷看……

一周热门 更多>