以下是引用xushiming在2009-4-22 23:48:08的发言: 中断有调用delay子程序,执行中断程序之后,R5,R6,R7全部被清0,中断若从delay程序里面产生,返回后R6,R7在延时程序的内循环里,R6,R7赋值为0,产生的延时同设置为255等同(只相差2个循环周期),而R5清零之后产生的效果共R6=2相比则相差128倍了,故程序返回之后的第一次延时会很长,之后便正常了。更换寄存器组,中断时不改变原有的值,中断返回之前pop psw指令又将寄存器组调回使用了。
解释有点啰嗦。
很明白的解释,真是高人阿,谢谢咯! |