以下是引用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指令又將寄存器組調回使用了。
解釋有點啰嗦。
很明白的解釋,真是高人阿,謝謝咯! |