6.7 堆栈和堆栈指针 栈是用来存贮在中断和子程序调用后的返回地址的。它可以用来存贮临时数据。栈指针(SP)寄存器总是指向栈顶。它实现如两个8位寄存器可访问I/O存贮空间。数扰可以压入栈或弹出栈使用PUSH和POP指令。栈增长从高内存地址向低内存地址。这暗示着压栈减少SP,弹栈增加SP,SP的值在复位后自动装载,并且是SRAM中的高地址。如果SP被改变,它必须设为指向高于0x2000,并且它必须被定义在任何子函数调用或在中断使能之前。在中断或子程序调用时,返回地址自动被压栈。返回地址可以是两或三字节,依据设备的程序存贮器大小而定。对于有着128KB程序存贮器或更小的的设备程序存贮器,返回地址是两个字节,因此栈指针增加或减少以两字节为单位。对于大于128KB程序存贮的苾片,返回地址是三字节,因此SP是以三字节增加或减少。返回地址从栈弹出,当从中断返回时使用RETI指令,当从子函数返回时用RET指令。 SP减一当数据推上推指令堆栈,并增加一当数据从堆栈中弹出时,使用弹出指令。 防止失几更新堆栈指针从软件写入SPL将自动禁用中断最多至四个指令,或直到下一个I/O存贮写。 6.8 寄存器文件 寄存器文件由32个8比特通用功能的工作寄存器组成,带有单时钟周期的访问时间。寄存器文件支持以下输入输出流程: 。一个 8位输出操作和一个8位结果输入 。两个8位输出 操作和一个8位结果输入 。两个8位输出操作和一个16位结果输入 。一个16位输出操作和一个16位结果输入 32个寄存器中的6个可以用作3个16位地址寄存器数据地址的指针。使能有效地址计算。其中的一个地址指针能用作一个在FLASH程序存贮器中查找表。 7.存贮 7.1 特点 。Flash程序存贮器 。一个线性地址空间 。在系统编程 。自编程和引导支持 。应用程序代码段
。应用程序表部分为应用程序代码或数据存储 l 。启动部分应用程序代码或程序代码 l 。分离读/写保护锁位的所有部分 l 。建在一个可选择的Flash程序存储器段快速CRC校验
|