帮忙看看这个帖子内容是什么结果?
P6 =~(~P6<<1)是将P6=0b1111 1110的值变成P6=0b1111 1101WangChong 发表于 2023-11-19 23:22
这个是位运算符,首先P6寄存器内的值 你用 0000 0000 填充下,比如说 0001 0000 就是0x10, 然后0001 0000 向 ...
我的意思你可能没看明白,我知道那个是将某个为0的位左移一位,但是我想知道,如果对端口寄存器进行了更改后立马进行i=P6的操作,printf输出的是计算的结果不? 还是那句话,新人先熟悉仿真,不要在那猜
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4249
神农鼎 发表于 2023-11-20 07:42
还是那句话,新人先熟悉仿真,不要在那猜
不是瞎猜,之前公司人员在有的项目中出现过类似问题,当对某个端口寄存器进行更改之后立马进行读取,读取到的数据不正确,我帖子中的内容在实际运行中会出现第一个printf能够正确输出P6的初始化值0xFE,当对P6进行了P6 = ~(~P6<<1)后紧着着对P6进行读取,理论该是0xFD,但是实际却是0xFF,我不知道STC的单片机会不会出现类似的问题,因为没有实物,所以发帖问一下。 rengran 发表于 2023-11-20 07:52
不是瞎猜,之前公司人员在有的项目中出现过类似问题,当对某个端口寄存器进行更改之后立马进行读取,读取 ...
一些可能的原因:单片机内部用的是流水线结构,也就是说操作以后可能要4个时钟后才能实际执行到位。
可以尝试加点nop延时再读取
这种一般可以用一个变量中转一下
页:
[1]