通常編譯器的堆棧用於保存局部變量、函數的參數、函數的返回值、中斷上下文信息等。但Keil對局部變量、函數參數預先分配空間(放在靜態全局變量區),Keil的堆棧只是用於保存函數嵌套調用的PC、中斷上下文信息。函數
從主程序進入中斷須要入棧字節數:13+PC=15 Byte(ACC,PSW,B,DPH,DPL,R0~R7)編譯器
Keil支持2級中斷15×2=30 Byte。編譯
主程序中每級調用須要消耗2字節保存PC,如調用深度6級,須要6×2=12字節堆棧空間。變量
Keil51 編譯後會生成M51文件,查找?Stack地址,爲堆棧起始地址,向上增加到0xff,溢出則致使單片機復位。程序