找回密码
 立即注册
查看: 1220|回复: 9

STC8系列 双DPTR数据指针怎么用?

[复制链接]
  • TA的每日心情
    擦汗
    2023-12-8 21:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    11

    回帖

    58

    积分

    注册会员

    积分
    58
    发表于 2022-12-14 13:52:49 | 显示全部楼层 |阅读模式
    手册中,对DPTR的切换寄存器的描写如下:
    DPTR-DPS.png
    实际使用中:
    DPTR_KEIL1.png
    编译后看到的代码如下:
    DPTR_KEIL2.png

    这是BUG?  还是我哪里设置不对?


    回复 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    2023-12-8 21:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    11

    回帖

    58

    积分

    注册会员

    积分
    58
     楼主| 发表于 2022-12-17 19:47:44 | 显示全部楼层
    这问题没人知道么? 也没有人用过这个功能么?

    该用户从未签到

    551

    主题

    9299

    回帖

    1万

    积分

    管理员

    积分
    14049
    发表于 2022-12-17 20:10:33 | 显示全部楼层
    这个KEIL C51 没支持,汇编可以直接用
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 137 天

    [LV.7]常住居民III

    37

    主题

    873

    回帖

    3990

    积分

    荣誉版主

    积分
    3990
    发表于 2022-12-18 08:38:22 | 显示全部楼层
    这归根到底,是STC搞了一套非主流独创的SFR命名体系,把Keil C51本身支持的双DPTR数据指针功能(库)排除在外,怎么用? 只能辛苦自已,从零开始编写专用程序:D

    该用户从未签到

    551

    主题

    9299

    回帖

    1万

    积分

    管理员

    积分
    14049
    发表于 2022-12-18 09:40:16 | 显示全部楼层
    8051, STC 是主流,其他是非主流,这回楼上真讲错了
    楼上兄弟可考虑 优化开源 SDCC 对 双数据指针的支持,STC目前是芯片设计为主,没时间旁顾编译器的事


    最近我们已将 STC32G8K64-42MHz-LQFP48/LQFP32 价格拉到 RMB2.7/2.6, 并且 DMA 全线普及,速度比普通M0快

    该用户从未签到

    551

    主题

    9299

    回帖

    1万

    积分

    管理员

    积分
    14049
    发表于 2022-12-18 09:50:39 | 显示全部楼层
    1.png

    2.png
  • TA的每日心情
    擦汗
    2023-12-8 21:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    11

    回帖

    58

    积分

    注册会员

    积分
    58
     楼主| 发表于 2022-12-20 21:01:55 | 显示全部楼层
    神农鼎 发表于 2022-12-17 20:10
    这个KEIL C51 没支持,汇编可以直接用

    不知道您是不是STC体制内的人,如果是的话麻烦传递一个声音,很多功能,C51不支持,没有关系,麻烦手册上加一句,以及,做MCU库的时候,也不要画蛇添足的把双DPTR选项放上去,STC主页上也不要放上在KEIL中开启双DPTR功能的 帖子。不然,真的很耽误事,我指的耽误事,不是指不知道怎么用耽误事,而是以为可以正常用,结果实际上不能正常用,上了片测试后,发现莫名错误都想不到问题是在勾了这个DPTR之后。
    你知不知道我很多只会用C的朋友跟我说STC8系列 XDATA 很不好,读写数据会出错,以前STC15跑得正常的代码,换了8就出错,然后他们放弃了STC!!
    我这些天发现这个问题后,叫他们把问题项目给我看一下的时候,发现无一例外都是勾上了这个勾?
    你觉得,是不是非常可悲的事情? 我要不是正好要帮朋友用C写一个高效的中断,需要双DPTR切换,还不会注意到有这样的问题!
    当然,要是你声音传不进去,就当我啥都没说吧。

    该用户从未签到

    12

    主题

    15

    回帖

    172

    积分

    注册会员

    积分
    172
    发表于 2023-1-17 08:59:15 | 显示全部楼层
    神农鼎 发表于 2022-12-17 20:10
    这个KEIL C51 没支持,汇编可以直接用

    我试图在汇编下使用双DPTR也不成功,DPTR0可用,DPL1也行,DPH1送不进数据,比如用指令: MOV     DPTR1,   #1234H,都得不到正确结果,(在仿真器上观察的结果),不知道什么原因

    该用户从未签到

    11

    主题

    329

    回帖

    872

    积分

    荣誉版主

    积分
    872
    发表于 2023-9-3 07:10:25 | 显示全部楼层
    本帖最后由 熊仔 于 2023-9-7 12:20 编辑

    测试发现,使用双DPTR的特性不能单步调试,全速或者F10运行整个函数,可以用。


    MOV     DPTR1,   #1234H  这个错误做法

    正确做法1:
    MOV      DPL1,#xx
    MOV      DPH1,#xx

    正确做法2:
    MOV      DPS,#00000001B
    MOV     DPTR,   #xxxx


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9299

    回帖

    1万

    积分

    管理员

    积分
    14049
    发表于 2023-9-3 10:23:32 | 显示全部楼层
    暂时 C51程序设计,STC8系列,不要自动使能这个双数据指针,因为 KEIL C51暂时没支持这个
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-3 11:28 , Processed in 0.094504 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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