找回密码
 立即注册
查看: 1350|回复: 4

目前出的STC32G12K128好像不支持16位读扩展SFR

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-10 08:59:03

15

主题

30

回帖

433

积分

中级会员

积分
433
发表于 2023-3-11 20:37:06 | 显示全部楼层 |阅读模式
看“stc32.h”这个头文件时,就感觉比较奇怪,里面定义的扩展SFR都是(*(unsigned char volatile far *))类型的,就是单字节的。像STC8A8K64U的头文件还有一些(*(unsigned int volatile far *))类型的呢。当时只是在想是不是忘记写了,或是自己加上是不是就可以了。然而,使用自己添加的16位SFR地址时,程序运行结果异常了。通过反编译看到汇编指令都是正常的,为什么会异常呢,比较疑惑?再仔细看了下首次,在数据存储器章节开头,有写“将来新增的特殊功能寄存器32-BIT SFR32,..........”、“将来新增的特殊功能寄存器16-BIT SFR16,..........”。现在有点明白了,大概是现阶段的这颗芯片还不支持扩展SFR的16位读取方式。建议尽快支持哦,因为在有些和速度相关的操作,16位直接读取还是可以省不少时间的。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2023-3-11 21:34:28 | 显示全部楼层
为了兼容STC8H8K64U, SFR 没有专门按32位访问设计,这样 STC8H/STC32G 的软件兼容性高
===用心良苦,STC32支持 SFR16/SFR32是很容易的事,编译器也是支持的

1.png
2.png

  • 打卡等级:以坛为家II
  • 打卡总天数:515
  • 最近打卡:2025-05-03 05:51:43

24

主题

515

回帖

994

积分

荣誉版主

积分
994
发表于 2023-3-12 10:56:34 | 显示全部楼层
非常令人遗憾啊。
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-10 08:59:03

15

主题

30

回帖

433

积分

中级会员

积分
433
发表于 2023-3-12 15:44:45 | 显示全部楼层
神*** 发表于 2023-3-11 21:34
为了兼容STC8H8K64U, SFR 没有专门按32位访问设计,这样 STC8H/STC32G 的软件兼容性高
===用心良苦,STC32 ...

确实需要考虑很多方面,大家都不容易。
有个建议啊,可以在后续版本支持SFR16/SFR32,如果用户为了兼容性,可以选择8位操作,如果没有这方面考虑,就可以用更快速度的方式访问。把选择权交给客户嘛。:lol
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2023-3-12 18:05:04 | 显示全部楼层
要改XSFR到 edata区的地址,要大调整传统8051的 SFR
===改完就不像那个熟悉的8051了, 并且对速度影响真的有限
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-3 17:15 , Processed in 0.142402 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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