目前出的STC32G12K128好像不支持16位读扩展SFR
看“stc32.h”这个头文件时,就感觉比较奇怪,里面定义的扩展SFR都是(*(unsigned char volatile far *))类型的,就是单字节的。像STC8A8K64U的头文件还有一些(*(unsigned int volatile far *))类型的呢。当时只是在想是不是忘记写了,或是自己加上是不是就可以了。然而,使用自己添加的16位SFR地址时,程序运行结果异常了。通过反编译看到汇编指令都是正常的,为什么会异常呢,比较疑惑?再仔细看了下首次,在数据存储器章节开头,有写“将来新增的特殊功能寄存器32-BIT SFR32,..........”、“将来新增的特殊功能寄存器16-BIT SFR16,..........”。现在有点明白了,大概是现阶段的这颗芯片还不支持扩展SFR的16位读取方式。建议尽快支持哦,因为在有些和速度相关的操作,16位直接读取还是可以省不少时间的。 为了兼容STC8H8K64U, SFR 没有专门按32位访问设计,这样 STC8H/STC32G 的软件兼容性高===用心良苦,STC32支持 SFR16/SFR32是很容易的事,编译器也是支持的
非常令人遗憾啊。 神农鼎 发表于 2023-3-11 21:34
为了兼容STC8H8K64U, SFR 没有专门按32位访问设计,这样 STC8H/STC32G 的软件兼容性高
===用心良苦,STC32 ...
确实需要考虑很多方面,大家都不容易。
有个建议啊,可以在后续版本支持SFR16/SFR32,如果用户为了兼容性,可以选择8位操作,如果没有这方面考虑,就可以用更快速度的方式访问。把选择权交给客户嘛。:lol 要改XSFR到 edata区的地址,要大调整传统8051的 SFR
===改完就不像那个熟悉的8051了, 并且对速度影响真的有限
页:
[1]