单片机学习小组
直播中

刘秀英

7年用户 1348经验值
私信 关注

用两路外部中断读取外部的方波信号,用仿真调试可以正常进入中断程序但读ISRC寄存器都是0是为什么?

我用两路外部中断读取外部的方波信号,用仿真调试可以正常进入中断程序,但是读ISRC寄存器都是0,搞的无法判断中断源,不知大家有没有遇到过

回帖(1)

caosurround

2024-1-25 17:10:44
可能是因为你没有在中断服务函数中清除中断标志位导致的。当外部中断发生时,CPU会自动将相应的中断标志位置1,在中断服务函数中应该手动清除这个标志位。如果没有清除,下一个中断发生时会覆盖上一个中断的标志位,导致ISRC寄存器一直为0。你可以尝试添加清除中断标志位的代码,例如:

```c
void __attribute__((interrupt, no_auto_psv)) _INT0Interrupt(void) {
    // 具体的中断处理代码
    IFS0bits.INT0IF = 0; // 清除INT0中断标志位
}
```

同样的,如果你使用了多个外部中断,也需要在相应的中断服务函数中清除标志位。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分