找回密码
 立即注册
查看: 190|回复: 3

关于STC8H3K64S2单片机内部RAM的问题

[复制链接]

该用户从未签到

4

主题

11

回帖

44

积分

新手上路

积分
44
发表于 2024-1-26 14:45:00 | 显示全部楼层 |阅读模式
STC8H手册上介绍说内部直接访问RAM是128字节,在keil里面定义的关键字是data。内部间接访问RAM是128字节,关键字是idata。

我定义了一个128字节的idata数组,从编译器编译的情况来看,keil编译器生成的地址,idata和data的地址是连续性的。xdata的地址是单独的。
我想问的是,如果data和idata的地址是连续的,那么我定义超过128字节的idata变量可行吗?我定义试了,不报错。而且我定义128字节的idata变量,实际idata区用了129个字节,也是正常的。
想问问前辈们有没有懂的可以介绍下,谢谢!

1.png
2.png
回复 送花

使用道具 举报

  • TA的每日心情
    开心
    2024-6-5 00:39
  • 签到天数: 94 天

    [LV.6]常住居民II

    3

    主题

    60

    回帖

    580

    积分

    荣誉版主

    积分
    580
    发表于 2024-1-26 15:07:52 | 显示全部楼层
    stc的所有单片机都是52标准的,也就是说idata可以支持到256字节,data类型的不能超过128字节,从0x80开始是特殊功能寄存器,和RAM地址重叠,只能用idata类型(间接寻址)
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    11

    回帖

    44

    积分

    新手上路

    积分
    44
     楼主| 发表于 2024-1-26 15:22:18 | 显示全部楼层
    yefeng 发表于 2024-1-26 15:07
    stc的所有单片机都是52标准的,也就是说idata可以支持到256字节,data类型的不能超过128字节,从0x80开始是 ...

    官方手册是128字节哎
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 137 天

    [LV.7]常住居民III

    11

    主题

    665

    回帖

    1203

    积分

    金牌会员

    积分
    1203
    发表于 2024-1-26 16:49:00 | 显示全部楼层
    本帖最后由 21cnsound 于 2024-1-26 16:50 编辑

    你的IDATA用了129BYTE,IDADA占用分别是:
    0037H开始的80H个字节----分两段:0037H到007FH实际是把DATA当IDATA用了,0080H-00B6是IDADA用于IDATA
    00B7开始的01H个字节-----这里是IDADA用于IDATA
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-15 21:11 , Processed in 0.057383 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表