我没用过PIC的处理器,建议自己看一下所用处理器的datasheet。但是一般来讲,两个中断源都会在对应的寄存器里面有相应的中断标志位,比如A 和B 的标志位分别为FlagA,和FlagB,如果中断同时来,那么FlagA和FlagB都会置位,假设中断A先运行,你应该在A的ISR中清除FlagA,这样A的ISR退出后又会发现FlagB还置位呢,就会执行B的ISR,原则上在B的ISR中清除FlagB。当然了,你要是在A的ISR中清除了FlagB,那么B的ISR就没机会执行了。写程序的时候要注意,FlagA和FlagB的寄存器是否在一个字节上,如果是这样的话,清除相应的Flag的时候别误清了别人的。另外,如果A和B分别是对应自己的中断线,可能会进入中断服务程序就会自动清除flag,比如MCS51单片机的非UART中断。 |