程序代码大致如下:<br />INT8U temp;<br />.....<br />//假设rSECONDDAT为秒寄存器,想以十进制显示秒,但是结果错误。<br />temp = (rSECONDDAT>>4)*10 + rSECONDDAT&0x0f;<br />printf("十进制显示:%d",temp);<br /><br />//但直接读取以16进制显示是没有问题的<br />temp = rSECONDDAT;<br />printf("十六进制显示%x",temp);<br />......<br /><br />例如某时刻秒寄存器为0x32,<br />十进制显示得不到32<br />十六进制显示是32<br /><br />用WINTC作类似的测试,结果也是一样。<br /><br />但是按照逻辑应该是没有问题的<br /><br />如果真要十进制显示:<br />方法如下:<br />INT8U temp,high,low;<br />high = rSECONDDAT>>4;<br />low = rSECONDDAT&0x0f;<br />temp = high*10 + low;<br />printf("十进制显示:%d",temp);<br /><br />大家遇到过没有? |
|