jianhong_wu 发表于 2015-8-14 13:59:59

如何知道和设置栈的大小?51单片机的栈有多大?已解答。

问:
如何知道和设置栈的大小?51单片机的栈有多大?

★坚鸿-深圳:
栈是内存RAM的一部分,一般由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。51单片机可用的内存是从00H到7FH,从00H到1FH是数据寄存器,20H到2FH是位寻址区,所以栈底一般从30H开始设置,容量最大4FH,因为还要预留一部分留作它全局变量用,所以实际上不到4FH。通过给SP赋值可以设置栈底,从而决定了栈的大小。方法是只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,比如在汇编程序开始时,通过一条MOV SP,#5FH指令,就把栈底设置在内存60H的单元中,此时堆栈可用的大小就是60H~7FH。用C语言编程时,由于C编译会帮我们进行一些默认配置,所以我们没有关注到这方面的内容。

页: [1]
查看完整版本: 如何知道和设置栈的大小?51单片机的栈有多大?已解答。