新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)堆棧學(xué)習(xí)筆記

PIC單片機(jī)堆棧學(xué)習(xí)筆記

作者: 時(shí)間:2013-04-08 來(lái)源:網(wǎng)絡(luò) 收藏

硬件堆棧:

或許也可以稱作系統(tǒng)堆棧,是位于片內(nèi)RAM區(qū)。有人說(shuō),只要能使用PUSH,POP指令的,都可以說(shuō)含有硬件堆棧。這樣的說(shuō)法我個(gè)人覺(jué)得不是很全面。通過(guò)指令進(jìn)行壓棧和出棧操作只是系統(tǒng)堆棧中的一種操做。系統(tǒng)堆棧還可以被隱含調(diào)用。例如,當(dāng)調(diào)用子程序時(shí),系統(tǒng)會(huì)主動(dòng)把斷點(diǎn)壓入堆棧,并不需要用戶通過(guò)指令操作。系統(tǒng)堆??梢杂脕?lái)保存數(shù)據(jù),或在任務(wù)子程序間傳遞數(shù)據(jù)。通常,棧底設(shè)在內(nèi)存的高端,也就是把內(nèi)存的最高一段空間劃作棧區(qū)。這些都是向下生長(zhǎng)棧。棧指針可能是專用的寄存器,也可能借用一通用寄存器。也有是在數(shù)據(jù)區(qū)里劃一塊作棧區(qū),可能是向上生長(zhǎng),也可能是向下生長(zhǎng)。

11.jpg

FSR0 指向返回值

FSR1 指向下一個(gè)可用值

FSR2 指向當(dāng)前使用的可用值

軟件堆棧:

軟件棧是你自己通過(guò)編碼實(shí)現(xiàn)的。你在內(nèi)存里劃一塊作棧區(qū),用一個(gè)變量作棧指針。

也可以說(shuō)是用戶堆棧??梢员欢x在內(nèi)部或外部 RAM中。它是用戶為任務(wù)建立的專用數(shù)據(jù)堆棧,與系統(tǒng)堆棧的數(shù)據(jù)區(qū)是隔開(kāi)的。它可以保存用戶想保存的任何寄存器和狀態(tài)字。

具體請(qǐng)查看C18編譯器手冊(cè)!



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉