PWM的各个寄存器的值,写入后可以读吗
STC8G2K64S4的PWM的几个寄存器,如果我先写入一个值,然后再马上读出来,通过比较写入的原值和读出的值是否同等,来判断对该寄存器的设置是否生效。这个方法可行吗?unsigned char old_value = 0xF1;
unsigned char new_value;
sfrPWMSET = old_value;
new_value = PWMSET ;
//我主要是想知道是不是类似胡所有寄存器的值能不能被正确读出?这个值和写入的值一样吗?今天周末没事干,突然想到这个菜鸟级的问题,感谢指导答复
if(old_value == new_value){
//正确
}
else{
//错误
}
只能说有些可以有些不行。所有和PWM计数相关的基本上都不行,其它的得再看了 看具体寄存器,大部分是可以的。
但是这样做一般来说,意义不大,特殊功能寄存器,基本没听说写入读出不同的。 嗯理解,也就是特殊功能寄存器如果被写入,就一定写对了。除非被写入的值有问题。所以如果发现运行结果和预期的不一样,基本可以排除“没有被成功写入”这个可能性,应该检查值的问题、程序问题等等,对吧? 提出这个问题的源头是因为调试程序的时候,总是考虑到是不是特殊功能寄存器没有被成功赋值,但是这种不成功的赋值又没有方式检查出来 楼主可以换一种思路,重要的寄存器多写几次同样的数据不就放心了吗,写一次绝大部分都会成功,连写两次三次那就是100%{:4_174:} 加入串口输出,写完延时一定时间后输出写入值。
页:
[1]