51單片機stack堆棧
一般編譯器的堆棧用于保存局部變量、函數(shù)的參數(shù)、函數(shù)的返回值、中斷上下文信息等。但Keil對局部變量、函數(shù)參數(shù)預先分配空間(放在靜態(tài)全局變量區(qū)),Keil的堆棧只是用于保存函數(shù)嵌套調(diào)用的PC、中斷上下文信息。
從主程序進入中斷需要入棧字節(jié)數(shù):13+PC=15 Byte(ACC,PSW,B,DPH,DPL,R0~R7)
Keil支持2級中斷15×2=30 Byte。
主程序中每級調(diào)用需要消耗2字節(jié)保存PC,如調(diào)用深度6級,需要6×2=12字節(jié)堆?臻g。
Keil51 編譯后會生成M51文件,查找?Stack地址,為堆棧起始地址,向上增長到0xff,溢出則導致單片機復位。
編輯:admin 最后修改時間:2018-05-18