我的中断怎么进不了啊,请大家帮忙啊
void led_test(void);
main()
{
asm(\" setc SXM \"
;
asm(\" clrc OVM \"
;
asm(\" clrc CNF \"
;
asm(\" setc INTM \");
SCSR1=0x83fe; // CLKOUT为CPU时钟,4倍频,打开所有的模块时钟,无效地址检测为0
IMR=0X0000; // 禁止所有中断
IFR=0X0FFFF; //中断标志为零
WDCR=0X0E8; //关看门狗
WSGR=WSGR&0X0; //外部存储零等待
MCRA=MCRA|0X04; // 中断口设置
XINT1CR=0x01; //下降沿,高优先
IMR=IMR|0X0020; //开中断
asm(\" clrc INTM \");
while(1)
{;}
}
/*********************************************************************************************************
外部中断子函数
*********************************************************************************************************/
void interrupt EX1INT()
{
led_test(); //测试程序
asm(\" clrc INTM \");
return;
}
/*********************************************************************************************************
中断子函数
*********************************************************************************************************/
void interrupt nothing()
{
asm(\" clrc INTM \");
return;
}
你的中断初始化不完整。
还有两个寄存器EVAIMRA和EVAIFRA没有初始化。
我试试啊
可我不明白,我用的是外部中断1,为什么要设置EVA的寄存器呢?
请大哥帮帮忙啊
对不起,我弄错了。
你用外部中断1的高优先级,应该
IMR=IMR|0X0001;
而 IMR=IMR|0X0020; 是低优先级的外部中断。
在中断子程序中还须再次设置寄存器:XINT1CR
谢谢大家啊
我搞定拉
