|
5#的理解是不完全對(duì)的。
51系統(tǒng):
當(dāng)RESET引腳作用時(shí),程序自動(dòng)從0000H取指令;
當(dāng)INT0引腳作用時(shí),且INT0中斷被允許時(shí),程序?qū)F(xiàn)行的下一條指令地址壓堆棧,再轉(zhuǎn)向0003H取指,直到遇見(jiàn)RETI指令再返回(彈出運(yùn)行的地址,回到原來(lái)位置)。
樓主要細(xì)讀這些原理,理解了就不會(huì)有這些問(wèn)題了。
51系統(tǒng)的中斷地址是硬件固定好的,不可變。為了機(jī)動(dòng),所以這此地址上通常是放LJMP指令。當(dāng)然可以直接放程序,但是程序會(huì)占用其它中斷地址。如果沒(méi)有其它中斷,則是可以直接放程序的。
任何程序都可以運(yùn)行到0000H-0100H中去,不是只有中斷可以用這些地址的。
我們經(jīng)常用:JMP。埃埃埃埃,進(jìn)行軟件強(qiáng)制復(fù)位。
我處理這此地址的方案有兩種,當(dāng)然需要視情況決定采用哪一種:
1、放一條跳轉(zhuǎn)指令:LJMP START (START是我的主程序起點(diǎn));
2、放一條 RETI 指引令。
出兩個(gè)題目給你做做,做對(duì)了你的單片機(jī)水平就大用長(zhǎng)勁了。
1、JMP 0000H 與RESET,都會(huì)使用程序從0000H單元開(kāi)始執(zhí)行程序。有區(qū)別嗎?
2、中斷服務(wù)程序遇到RETI會(huì)返回,將 RETI 改為 RET,會(huì)怎樣?
|
|