请教一下各位高手:
我编了一个小程序,处理定时器下溢中断,为什么中断返回时,老是出现程序复位?
下边是我的程序,请帮忙看看,问题出在哪里?
#include \"LF2407.H\"
void initial() //系统初始化程序
{
asm(\" setc INTM\":'(;
*SCSR1=0x8104;
*WDCR=0x0E8;
*IMR=0x0002;
*IFR=0x0FFFF;
*MCRA=*MCRA&0x0FFFC;
*PADATDIR=*PADATDIR|0x0301;
}
void timer1() //通用定时器1初始化程序
{
*T1CON=0x0802;
*T1PR=0x4E20;
*T1CNT=0x00;
*EVAIMRA=*EVAIMRA|0x0100;
*EVAIFRA=*EVAIFRA&0x0100;
}
void T1INT() //定时器下溢中断处理程序
{ int flag;
flag=*EVAIFRA&0x0100;
if(flag!=0x0100)
{
asm(\" clrc INTM\":'(;
return;
}
*T1CNT=0x00;
*EVAIFRA=*EVAIFRA&0x0100;
asm(\" clrc INTM\":'(;
return;
}
void main() //主程序
{ initial();
timer1();
asm(\" clrc INTM\");
*T1CON=*T1CON|0x0040;
while(1)
{ } //等待中断
} |