用实验板做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++)
{;}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
-----------------------------------------------------------------------
关键字是interruptlow,和高优先级中断时不同
一周热门 更多>