找回密码
 立即注册
查看: 828|回复: 10

STC32g12k128技术讨论

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2024-06-18 14:26:59

5

主题

18

回帖

97

积分

注册会员

积分
97
发表于 2024-5-29 12:29:20 | 显示全部楼层 |阅读模式
本帖最后由 hanghang 于 2024-5-29 12:30 编辑

各位大佬,求解下面问题:
    数据手册(stc32G-20240513.pdf)中,第637页建议使用movc指令读。
截图202405291227215490.jpg
但是第642页又说stc32不能用movc读
截图202405291228449728.jpg
感觉前后矛盾了,有实际测试过的朋友吗?到底如何?数据手册错了?
截图202405291227137152.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3191

回帖

4872

积分

论坛元老

积分
4872
发表于 2024-5-29 14:10:52 | 显示全部楼层
可能637页写错了,正确的是stc32不是使用movc读取eeprom吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2024-5-29 15:21:35 | 显示全部楼层
确实是数据手册笔误了

STC32G系列是80251结构体系
要使用MOV指令读取EEPROM
MOVC只能读取当前64K范围的代码区
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-29 15:30:24 | 显示全部楼层
照搬 51手册的后遗症, stc32 要使用 32位地址直接读取 IAP值(字或字节), 例如 : MOV   R11, @DR56,  MOV   WR0, @DR4, 作用和 movc读取eeprom 相同(MOVC 只能读取 16位地址)

如一定要用 MOVC 读取 IAP 也行, 先 执行一条 MOVH   DR56,  #0xFE ;指令,   再 执行 MOVC   A, @DPTR , 就能正确读取 eeprom 值了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2024-06-18 14:26:59

5

主题

18

回帖

97

积分

注册会员

积分
97
发表于 2024-5-29 15:41:36 | 显示全部楼层
本帖最后由 hanghang 于 2024-5-29 15:48 编辑

我理解的是:
    兼容8051的部分(实际寻址空间ff:0000 - ff:ffff),可以使用movc a,@a+dptr读取,但需要4个机器周期完成;
    对于stc32g12k128整个寻址空间(00:0000-ff:ffff),都能够使用mov Rm,@DRk+dis读取,只需耗费1个机器周期。
    这个需要找机会验证一下才知道。我认为这就是统一寻址空间的好处,又快又简单。

    如果上面是对的,那么数据手册两处都不太严谨:
    首先,637页应改为:相比iap读eeprom方式,兼容传统8051部分(实际寻址空间是ff:0000-ff:ffff)可以使用相对便捷的movc方式(需要4个机器周期);但是,最方便快捷的是使用mov方式,不仅可以用于所有24位寻址空间,而且仅仅耗时1个机器周期。
    其次,642页应改为:仅兼容传统8051部分(实际寻址空间是ff:0000-ff:ffff)可以使用movc方式读取数据。

点评

其次,642页应改为:仅兼容传统8051部分(实际寻址空间是ff:0000-ff:ffff)可以使用movc方式读取数据。 --------------------------------------------------------------------------------------------------------  详情 回复 发表于 2024-5-30 00:22
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2024-06-18 14:26:59

5

主题

18

回帖

97

积分

注册会员

积分
97
发表于 2024-5-29 15:50:30 | 显示全部楼层
zh*** 发表于 2024-5-29 15:21
确实是数据手册笔误了

STC32G系列是80251结构体系

感谢大佬
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2024-06-18 14:26:59

5

主题

18

回帖

97

积分

注册会员

积分
97
发表于 2024-5-29 15:50:50 | 显示全部楼层
LAO*** 发表于 2024-5-29 15:30
照搬 51手册的后遗症, stc32 要使用 32位地址直接读取 IAP值(字或字节), 例如 : MOV   R11, @DR56,  MOV    ...

感谢大佬指导
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-5-30 00:22:55 | 显示全部楼层
hang*** 发表于 2024-5-29 15:41
我理解的是:
    兼容8051的部分(实际寻址空间ff:0000 - ff:ffff),可以使用movc a,@a+dptr读取,但需要 ...

其次,642页应改为:仅兼容传统8051部分(实际寻址空间是ff:0000-ff:ffff)可以使用movc方式读取数据。

--------------------------------------------------------------------------------------------------------------------

这句话对目前的 STC32 是否适用, 有待考核.

理论上, MOVX  指令16位寻址空间为 01:0000-01:ffff), MOVC 指令16位寻址空间为 ff:0000-ff:ffff),  

实际上, 目前的 stc32 , 其 dptr  16位寻址空间 受 DR56 高位影响(严格的说, 是硬件设计存在错误).

所以,  对 flash 小于等于 64k 的 stc32来说, 这条指令 能否使用, 有待验证.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2024-06-18 14:26:59

5

主题

18

回帖

97

积分

注册会员

积分
97
发表于 2024-5-30 08:29:51 | 显示全部楼层
LAO*** 发表于 2024-5-30 00:22
其次,642页应改为:仅兼容传统8051部分(实际寻址空间是ff:0000-ff:ffff)可以使用movc方式读取数据。

-- ...

感谢兄台指点。找时间我来实践验证一下。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2024-06-18 14:26:59

5

主题

18

回帖

97

积分

注册会员

积分
97
发表于 2024-5-30 14:34:10 | 显示全部楼层
LAO*** 发表于 2024-5-30 00:22
其次,642页应改为:仅兼容传统8051部分(实际寻址空间是ff:0000-ff:ffff)可以使用movc方式读取数据。

-- ...

有个想法,不知道stc32g12k128是否可行:
    1.在4K的RAM里,某个地方(例如00:0100-00:02FF)载入一段代码;
    2.使用EJMP跳转至这个这个位置(00:0100)

如果可行,那不就跟x86微机类似了?

点评

英特尔原版 8XC251, 数据和程序地址是共用的, 此法完全可行. 但 STC 强制把地址分为前半部分(数据) , 和后半部分(程序) , 地址并不共用, 所以你此法估计不行(除非 STC硬件设计有漏洞, 没做到这一点, 才有可行的  详情 回复 发表于 2024-5-30 15:21
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:32 , Processed in 0.131769 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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