newlined 发表于 2024-3-21 11:23:39

关于STC32G寄存器堆结构图的疑问

大家好,这个寄存器堆结构图的疑问的帖子不知道发在哪个板块,先发在这里,版主若感到不合适,请给转到其他的板块,谢谢。

在STC32G的说明书10.2.2章节中有下面图:在这个图中,我们可以看到寄存器组 0-寄存器组 3占用了00H到1FH的地址,图中也说明了寄存器组,通过PSW 中的 RS0和RS1进行选择。这是不是传统51中的R0~R7?

newlined 发表于 2024-3-21 11:24:21

本帖最后由 newlined 于 2024-3-21 11:33 编辑

如果是的话:请看10.3.1 寄存器堆结构图:这个图中也说明了寄存器组 0~3由位置 0 到 7 的寄存器堆实际上由四个可切换组组成,每个组有 8 个寄存器,如下图所示。这四个组使用片上内存的前 32 个字节,并且始终可在存储地址空间的 00:0000H ~ 00:001FH 的位置访问。通过 PSW 寄存器的 RS1 和 RS0 位选择四个组中的一个进行访问。这一组寄存器和首贴的寄存器组是不是一回事?在这张图中,R8到R15是不是对应的首贴中的20到27的位置?也就是说如果我修改了R8数据,地址20(位变量的地址)的内容是不是也会随着改变?谢谢

newlined 发表于 2024-3-21 11:35:25

有此疑问是因为我在CAN的例程的基础上,编写一个程序,发现我定义的一个位变量,我没有操作它,不知道为什么自己改变了数值。

社区闲人 发表于 2024-3-21 12:15:18

这部分内容,我看了十遍以上。
说一下我的理解:R0---R7部分,是RAM与寄存器堆共有,方便数据交换。
R8以上---R63,是寄存器堆的寄存器,不会出现在RAM中。

社区闲人 发表于 2024-3-21 12:21:23

切换寄存器组 0~3,用到的00---1FH空间,是真正的RAM空间,兼容8051.

newlined 发表于 2024-3-21 13:35:53

社区闲人 发表于 2024-3-21 12:15
这部分内容,我看了十遍以上。
说一下我的理解:R0---R7部分,是RAN与寄存器堆共有,方便数据交换。
R8以上 ...

谢谢您的回复,看来是我的程序哪个地方出问题了,我再找找看。

newlined 发表于 2024-3-21 13:36:48

社区闲人 发表于 2024-3-21 12:21
切换寄存器组 0~3,用到的00---1FH空间,是真正的RAM空间,兼容8051.

谢谢您的回复,我也觉得应该是同一组寄存器。

newlined 发表于 2024-3-21 16:42:06

社区闲人 发表于 2024-3-21 12:15
这部分内容,我看了十遍以上。
说一下我的理解:R0---R7部分,是RAN与寄存器堆共有,方便数据交换。
R8以上 ...

我找到了寄存器被修改的原因了,非常感谢。

_奶咖君_ 发表于 2024-3-23 14:39:48

newlined 发表于 2024-3-21 16:42
我找到了寄存器被修改的原因了,非常感谢。

所以是啥愿意导致变量被改变呢0.0

newlined 发表于 2024-3-25 15:37:45

_奶咖君_ 发表于 2024-3-23 14:39
所以是啥愿意导致变量被改变呢0.0

咳,巨汗,正常状态下,这个变量应该是0,有特殊事件发生,就置位1,所以我应该上电初始化时,应该初始化为0,但是我上电初始化时,初始化成了1。。。。。
页: [1] 2
查看完整版本: 关于STC32G寄存器堆结构图的疑问