泉注:某些注意事项在特定条件下还是要违反的,为了程序方便。
1、 SRAM的结构
工作寄存器区包括32个8位寄存器。编译器使用了R0、R1、R22~R31。R2~R15中的一些寄存器可能会用来存放全局位变量;剩下的寄存器会分配给全局字符串变量和全局整形变量。R16~R21分配给局部字符型变量和局部整形变量。
I/O寄存器区包括64个CPU外围功能地址。
数据对战区用于动态存储变量、传递函数参数,以及中断期间保存R0、R1、R22~R31和SREG的内容。
数据堆栈区指针使用Y指针寄存器。数据堆栈指针的初始值为5Fh+数据对战长度。在数据堆栈保存数据时,数据堆栈指针是递减的。在配置编译选项时,必须分配足够的堆栈空间。
0
工作寄存器
20h
I/O寄存器
60h
栈底数据堆栈
60h+数据堆栈长度
全局变量
60h+数据堆栈长度+全局变量长度
栈底硬件堆栈 //存放寒暑返回地址,SP寄存器是堆栈指针,初始值为//SRAM的尾部地址. <