PIC單片機堆棧學(xué)習筆記
硬件堆棧:
或許也可以稱(chēng)作系統堆棧,是位于片內RAM區。有人說(shuō),只要能使用PUSH,POP指令的單片機,都可以說(shuō)含有硬件堆棧。這樣的說(shuō)法我個(gè)人覺(jué)得不是很全面。通過(guò)指令進(jìn)行壓棧和出棧操作只是系統堆棧中的一種操做。系統堆棧還可以被隱含調用。例如,當調用子程序時(shí),系統會(huì )主動(dòng)把斷點(diǎn)壓入堆棧,并不需要用戶(hù)通過(guò)指令操作。系統堆??梢杂脕?lái)保存數據,或在任務(wù)子程序間傳遞數據。通常,棧底設在內存的高端,也就是把內存的最高一段空間劃作棧區。這些都是向下生長(cháng)棧。棧指針可能是專(zhuān)用的寄存器,也可能借用一通用寄存器。也有單片機是在數據區里劃一塊作棧區,可能是向上生長(cháng),也可能是向下生長(cháng)。
FSR0 指向返回值
FSR1 指向下一個(gè)可用值
FSR2 指向當前使用的可用值
軟件堆棧:
軟件棧是你自己通過(guò)編碼實(shí)現的。你在內存里劃一塊作棧區,用一個(gè)變量作棧指針。
也可以說(shuō)是用戶(hù)堆棧??梢员欢x在內部或外部 RAM中。它是用戶(hù)為任務(wù)建立的專(zhuān)用數據堆棧,與系統堆棧的數據區是隔開(kāi)的。它可以保存用戶(hù)想保存的任何寄存器和狀態(tài)字。
具體請查看C18編譯器手冊!
評論