pic18f4520无法进低优先级中断?

2020-02-09 09:36发布

用实验板做timer0的中断测试,遇到这样的问题:当设置高优先级中断时,ICD3仿真能进中断;而设置成低优先级时则无法进入,可能我的程序有设置不对的地方?请高手指点.程序代码如下:


#include <p18F4520.h>
#include "timers.h"


char flag=0;
void delay();
void TimerInt(void);
#pragma code low_vector=0x18
void low_interrupt (void)
{
   _asm GOTO TimerInt _endasm
}
#pragma code

#pragma interrupt TimerInt save=PROD
void TimerInt(void)
{
flag=1;
INTCONbits.T0IF=0;
}

//void interruptISR1(void);

void main()
{
unsigned char i;
unsigned char time=0;
unsigned char col;
unsigned char col_start=0;
PORTD=0x00;
TRISD=0x00;//设置D口为输出
PORTB=0x00;
TRISB=0x00;
//TMR0H=0XFE;
//T0CON=0XFF;
INTCON2bits.TMR0IP=0;
//RCONbits.IPEN = 0; /* enable interrupt priority levels */
INTCONbits.T0IE=1;
//INTCONbits.GIEH=1;
//INTCONbits.GIEL=1;
OpenTimer0 (TIMER_INT_ON & T0_SOURCE_INT & T0_16BIT);

INTCONbits.GIE=1;
while(1)
        {
     delay();
     if(flag==1)
    {
flag=0;
       PORTD=0XF0;
       PORTA=0XF0;
       PORTE=0XF0;
    }
     else
    {
     PORTD=0X0F;
      PORTA=0X0F;
     PORTE=0X0F;
    }
   }
}
void delay()/*延时1mS*/
{
    unsigned char i;
    for(i=0;i<142;i++)
       {;}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zhyg_321
1楼-- · 2020-02-09 11:54
难道都没遇到过这样的问题吗?
zhyg_321
2楼-- · 2020-02-09 13:27
我改成timer1结果一样!!!
zhyg_321
3楼-- · 2020-02-09 13:42
 精彩回答 2  元偷偷看……
cwl0580
4楼-- · 2020-02-09 19:30
12-16系列都是没有优先级的,18不清楚,你可以看下手册
MCU_Mike
5楼-- · 2020-02-09 22:05
回复【楼主位】zhyg_321
-----------------------------------------------------------------------

关键字是interruptlow,和高优先级中断时不同

一周热门 更多>