为什么程序中清FP00IEN后,本来应该禁止外部中断INT0,但在程序运行时发现也可进入?
SONIX的8位MCU中断机制是一旦在P0.0口接受到中断条件,总会设置相应的中断标志位FP00IRQ,但能不能进入中断还要看FP00IEN是否允许(这样做是为了客户采用查询方式的需要)。但是一旦中断标志位FP00IRQ被外部中断条件设定后,又有其他中断产生,此时若中断程序处理不当,则可能造成错误进入INT0中断。解决办法:
1.若中断程序中不需要INT0中断,则中断程序中不要查FP00IRQ标志。
2.若中断程序中需要INT0中断,应该配合FP00IEN一起使用,如下:
B0BTS1 FP00IEN | ;P00中断是否打开 |
JMP EXIT | ;没有P00中断,退出 |
B0BTS1 P00IRQ | ;进一步查询中断请求标志 |
JMP NEXT | |
: | |
NEXT: | ;P00中断服务程序 |
: | |
EXIT: | ;退出中断服务程序 |
RETI |