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