先说一下程序中的几个问题: 1.任何中断,进入后一定要首先保存累加器A的值,退出时最后一条是读出保存的累加器A,做法是这样: 中断: STA TEMP ,00H ;TEMP为一个临时寄存器,需要您自己定义 ... ... LDA TEMP ,00H RTNI
2.任何中断产生后,IE标志会被硬件清零,这样,退出中断时要重新置IE标志.拿您的TIMER0中断来说,置IE标志时,用了这条指令: ORIM IE, 0100B ;设置中断标志位 这样调协后,只能将TIMERO中断置起,因为进入中断时IE已经被硬件清零了.如果需要用到其它2个中断,要这样设置: ORIM IE, 0111B 或者 LDI IE, 0111B 这样就可以了.
另外,仿真工具IDE66的问题是这样的,单步运行时,虽然不进入中断,但中断同样会产生,如同前面所说的,中断产生后,IC内部会清零IE,所以你看到IE始终为0. |