网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 杭州晶控电子有限公司 >> 文章中心 >> 单片机应用 >> 文章正文
  A51 4.1.3 堆栈段(Stack Segment)            【字体:
A51 4.1.3 堆栈段(Stack Segment)
作者:佚名    文章来源:不详    点击数:    更新时间:2008-01-06    
 x51架构使用一个硬件堆栈为CALL指令存储返回地址,也用于PUSH和POP指令的临时存储。使用这些指令的8051应用程序必须把堆栈指针设置到一个不允许其它变量使用的存储区域。

    对于传统的8051,必须定义一个堆栈段,堆栈空间必须按下面的方法保留。这种定义也适用于扩展的8051和251,而一般情况下,这些控制指令也可以在其它区域设置堆栈。

STACK SEGMENT IDATA  
  RSEG STACK ; 选择堆栈段
  DS 10h ; 保留16个字节的空间

然后,你必须在程序的开始初始化堆栈指针。

CSEG AT 0 ; 复位向量
  JMP STARTUP ; 跳转到启动代码
STARTUP:     ; 在复位时执行的代码
  MOV SP, #STACK - 1 ; 装入堆栈指针

    对于Philips 80C51MX或者Intel/Atmel WM 251,可以定义一个堆栈段,而且必须按下面的方法保留堆栈空间。

STACK SEGMENT EDATA  
  RSEG STACK ; 选择堆栈段
  DS 100h ; 保留256个字节的空间

然后,你必须在程序的开始初始化堆栈指针。

CSEG AT 0 ; 复位向量
  JMP STARTUP ; 跳转到启动代码
STARTUP:     ; 在复位时执行的代码
;为Philips 80C51MX设置堆栈
  ORL MXCON, #0x02 ; 使能扩展的堆栈
  MOV SPE, #HIGH (STACK - 1) ; 装入堆栈高字节
  MOV SP, #LOW (STACK - 1) ; 装入堆栈低字节
       
为Intel/Atmel WM 251设置堆栈
  MOV DR60, #STACK - 1 ; 装入堆栈指针

如果你要使汇编接口到C,你可能不需要设置堆栈。这在C启动代码中已经为你做好了。


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    带串行控制的10位模数转换器
    微功耗升压式开关电源MIC214
    采用C51与插拔式FLASH闪存设
    虚拟环绕处理器芯片MM1454
    多功能温度监控器ADT14的开发
    在51系列单片机上移植uCOS-I
    基于MSM7512B的远程数据采集
    基于89C51的计算机可锁定加密
    基于C51串行时钟DS1305在无纸
    基于Small RTOS51的数据采集
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    杭州晶控电子有限公司 版权所有 站长:hificat