堆棧是壹個特殊的存儲區域,它的主要功能是臨時存儲數據和地址,通常用來保護斷點和站點。它的特點是按照先入後出的原則存取數據,這裏的入和出指的是進入和退出棧的操作。
80C51片內RAM的某些單元可以用作堆棧。有壹個8位堆棧指針寄存器SP,專用於指示片內RAM的哪個單元位於當前堆棧的頂部。80C51單片機系統復位後,SP的初始值為07H,這意味著信息將從內部RAM的08H單元開始堆積。
但是80C51系列的堆棧面積不是固定的,可以通過軟件改變SP寄存器的值來改變堆棧面積。為了避開工作寄存器區和位尋址區,SP的初始值可以設置為2FH或更大的地址值。如果CPU在其操作中使用兩組工作寄存器,如果不使用位變量,則SP的初始值至少應為0FH或更大;如果使用位變量,SP的初始值至少應為2FH或更大;KeilC51編譯器會自動計算SP的初始設定值,無需程序員關心。