打印
[51单片机]

求助大佬关于51生成的m51文件疑问

[复制链接]
1013|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
18576478035|  楼主 | 2018-12-7 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
           * * * * * * *   D A T A   M E M O R Y   * * * * * * *
            REG     0000H     0008H     ABSOLUTE     "REG BANK 0"
            DATA    0008H     0008H     UNIT         ?DT?OTHER
            IDATA   0010H     0002H     UNIT         ?ID?LED
                    0012H     000EH                  *** GAP ***
            BIT     0020H.0   0000H.7   UNIT         ?BI?INIT
            BIT     0020H.7   0000H.4   UNIT         ?BI?KEY
            BIT     0021H.3   0000H.1   UNIT         ?BI?INTERRUPT
BL51 BANKED LINKER/LOCATER V6.22                                                      12/07/2018  16:48:35  PAGE 2


                    0021H.4   0000H.4                *** GAP ***
            DATA    0022H     0040H     UNIT         ?DT?INIT
            IDATA   0062H     0063H     UNIT         ?ID?OTHER
            IDATA   00C5H     0011H     UNIT         ?ID?INIT
            IDATA   00D6H     0001H     UNIT         ?STACK

            * * * * * * *  X D A T A   M E M O R Y  * * * * * * *
            XDATA   0000H     010AH     UNIT         ?XD?_RC4_INIT?RC4
            XDATA   010AH     0104H     UNIT         ?XD?_APP_TEST_FUN?OTHER
            XDATA   020EH     0010H     UNIT         ?XD?SOUND
            XDATA   021EH     000FH     UNIT         ?XD?INTERRUPT
            XDATA   022DH     000CH     UNIT         ?XD?_RC4_CRYPT?RC4
          上面是我程序生成的m51文件
        DATA    0008H     0008H     UNIT         ?DT?OTHER
            IDATA   0010H     0002H     UNIT         ?ID?LED
           在这个地方有一个疑问,idata不是说定义在128-256的地址吗?为什么会定义在0010h这个地方
           IDATA   0062H     0063H     UNIT         ?ID?OTHER 怎么会定义在62h的区域这个不是data的区域吗?

相关帖子

沙发
ayb_ice| | 2018-12-7 17:28 | 只看该作者
本帖最后由 ayb_ice 于 2018-12-7 17:31 编辑

idata是从00~FF,不是从80开始,data是从00~7F,这部分也可以当idata


使用特权

评论回复
板凳
18576478035|  楼主 | 2018-12-7 17:57 | 只看该作者
ayb_ice 发表于 2018-12-7 17:28
idata是从00~FF,不是从80开始,data是从00~7F,这部分也可以当idata

那我是不是可以不用data 前缀了 ,data 和idata 在00-7f区域是同一个地址区域?那我的堆栈区域是在哪个范围我看有人说堆栈只能在0-128h区域,        IDATA   00DEH     0001H     UNIT         ?STACK但是我的定义在区域,是不是说我的单片机支持堆栈定义在0-256的区域,是这样子吗?

使用特权

评论回复
地板
ayb_ice| | 2018-12-10 08:39 | 只看该作者
18576478035 发表于 2018-12-7 17:57
那我是不是可以不用data 前缀了 ,data 和idata 在00-7f区域是同一个地址区域?那我的堆栈区域是在哪个范 ...

IDATA   00D6H     0001H     UNIT         ?STACK

这个就是堆栈定义,只定义了一个字节
其实空余的IDATA都自动当堆栈了

IDATA是从00~FF的,只是有些芯片没有80~FF,8052都有80~FF

使用特权

评论回复
5
airwill| | 2018-12-11 07:44 | 只看该作者
由于 128 以上的空间, 只能间接寻址, 更适合用于堆栈. 但有些 51 没有高 128 字节哪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

187

帖子

2

粉丝