主要是因为如果中断正好发生在 BCF INTCON,GIE这句后面,主程序清了GIE后立即进入中断服务程序,退出中断的时候又自动恢复了GIE,所以,主程序改成:
LOOP BCF INTCON, GIE ; Disable Global Interrupt BTFSC INTCON, GIE ; Global Interrupt Disabled? GOTO LOOP ; NO, try again : ; YES, continue with program flow : BSF INTCON, GIE ; Re-enable Global Interrupt
真的需要这么麻烦码?GIE清除这条指令后,即使有INTERRUPT FLAG,也不能通过一群与或门(最后一道GIE的与门被关闭了)触发中断啊? 请MARTIN指教,虽然明白这么写最保险,但是这个牵涉PIC内部的时序设计,还是原厂FAE提供解答比较好。谢谢。 |