【发布时间】:2022-01-17 10:23:08
【问题描述】:
我正在使用带有 XC8 编译器的 PIC18lF47k42。
我正在尝试获得这个完整的 12 位 ADC 值,因此我拥有完整的分辨率,但是,我似乎无法从 ADRESL 获取 4 位数据以使用来自 ADRESH 的数据进入结果。
结果是一个 16 位变量,因此它可以适合所有 12 位。有什么想法吗?
例子:
ADRESH = 00110101 ADRESL = 10100000,我希望结果 = 0000001101011010。
#include "myIncludes.h"
volatile unsigned char ZCDSoftwareFlag = 0;
volatile unsigned char switchValue = 0;
void main(void)
{
portInit();
adcInit();
uint16_t result;
while (1)
{
ADCON0bits.GO = 1; //Start conversion
while (ADCON0bits.GO); //Wait for conversion done
result = 0b0000000000000000;
result = ADRESH << 4;
result = (result) | ADRESL;
//result = (ADRESH << 4) | ADRESL;
}
}
【问题讨论】:
-
由于绿线高亮显示,我认为还没有执行。如果您在调试器中再前进一行会发生什么?
-
while (ADCON0bits.GO);- 另一个使用大括号的好理由 -
while循环很好。
标签: c concatenation pic