【发布时间】:2013-06-30 23:06:47
【问题描述】:
我正在尝试整理这个将 10 位值转换为 6 位的函数。当我使用更高分辨率的 ADC 时,我还需要能够定义输入的位长:
BYTE ioGetADC (void)
{
BYTE r;
ConvertADC(); // Start Conversion
while(BusyADC()); // Wait for completion
{
r = ( (ReadADC())/16); // Read result and convert to 0-63 (returns 10bit right hand justified)
}
return r;
}
【问题讨论】:
-
ADC 可以将位设置为左对齐或右对齐。小端或大端。在不知道 ADC 输出格式的情况下,没有人可以回答这个问题。
-
@Lundin - 从发布的代码中可以明显看出单词中位的合理性。
-
@ChrisStratton 不,不是。我们不知道
ReadADC做了什么。如果代码按预期工作,他就不会问问题了,是吗? -
@Lundin - 请阅读问题的实际措辞。它不要求帮助使代码工作,而是帮助“整理”并使其对各种输入长度更加通用。对于给定代码与问题文本一致的输入数据,只有一种可能的对齐方式。而且您关于字节序的问题完全是虚假的,因为我们没有直接访问内存。
-
@Lundin:ADC 是左对齐还是右对齐都不是问题。如果它是一个 16 位寄存器左对齐,则将其视为 16 位值,如果它右对齐,则将其视为 10 位值。你在发明没有的问题。
标签: c embedded adc analog-digital-converter