2013-04-21 73 views
0

我有以下功能:HOWTO转换UWORD的下部10位为十六进制用C

uword ADC_uwReadConv(void) { 
    ADCIR = 0; 
    return(ADDAT); 
} 

该函数返回一个AD转换的结果(一个C164CI的)。低10位包含转换结果,而高4位标识转换后的模拟通道。

现在,我有一些问题:

  • 我现在的想法datatyp UWORD是什么。如果有人能给我一个详细的解释,那会很棒。
  • 我需要将结果转换为十六进制,我真的不知道如何做到这一点。
+2

这也不是标准C.你应该给你要遵循的确切标准(C99?),并给予'#包括你正在使用的编译器,以及你正在使用的编译器。我猜'uword'是一些'unsigned'(例如'unsigned short'或'unsigned int')......用标准的* C *你可以'printf(“%x \ n”,ADC_uwReadConv()&0x3ff); '以十六进制打印低10位。 – 2013-04-21 14:46:41

回答

0

这是一个16位微处理器,所以字大小是16位。一个uword是一个无符号字;在这种情况下,范围从0x0000 - 0xFFFF。

“转换”结果并不一定是单词的最佳选择。如果妳确实需要显示该值的低10位,你可以使用类似

printf("%x", ADC_uwReadConv()&0x3F)