This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
做2407 XINT1中断,中断程序总是无法进去。不知道问题究竟出现在哪里。下面是我的中断程序,麻烦帮我看看,谢谢各位老师了!
;建立中断向量表
.sect ".vectors"
RSVECT: B _c_int0
INT1: B _c_int1
INT2: B _c_int2;PHANTOM
INT3: B PHANTOM;_c_int3
INT4: B PHANTOM;GISR4
INT5: B PHANTOM;GISR5
INT6: B PHANTOM;GISR6 这是一部分中断向量表
void SystemInit()
{
asm(" SETC INTM "); /* 关闭总中断 */
asm(" CLRC SXM "); /* 禁止符号位扩展 */
asm(" CLRC CNF "); /* B0块映射为 on-chip DARAM*/
asm(" CLRC OVM "); /* 累加器结果正常溢出*/
SCSR1=0x83FE;
/* 打开ADC,EVA,EVB,CAN和SCI的时钟*/
WDCR=0x006F; /*0110 1111 禁止看门狗,看门狗时钟64分频 */
KickDog(); /* 初始化看门狗 */
IFR=0xFFFF; /* 清除中断标志 */
IMR=0x0003; /* 0000 0110打开中断1,2,3*/
}
main()
{
unsigned int Usys=2;
SystemInit(); //系统初始化
XINT1CR=0x0005; //使能XINT1中断,上升沿 高优先级
MCRA=0x0004; //XINT1配置为功能引脚
asm(" CLRC INTM ");//开总中断
while(1)
{
if(count!=0)
{
Usys=3;
if(count==10000)
{
count=0;
}
}
}
}
void c_int1()
{
if(PIVR!=0x01)
{ asm(" CLRC INTM ");
return;
}
count++;
IFR=0xFFFF;
asm(" CLRC INTM ");
return;
}
您好
您可以一级,一级的看一下.先看XINT1CR寄存器的XINT1 Flag置位没有。如果这里都没置位,就证明你的XINT的设置有问题。如果置位了再向后查PIRQR0或PIRQR1,再查IFR。看是哪一级出了问题。