MICRO:PIC18LF47K42 编译器:XC8 应用程序:MPLABX
嗨,我试图在我的 12 位 ADC 中组合这些值。他们进入 ADRESH 和 ADRESL。我的 ADC 设置为右对齐,格式如下: ADRESH:(----MSB,x,x,x) ADRESL: (X,X,X,X,X,X,X,LSB)
这是我第一次与 ADC 合作,诚然我对他们了解不多。但是通过检查我的结果寄存器中的值,我可以看出我没有很好的分辨率。我很确定这是因为我如何结合 ADRESH 和 ADRESL。我怎么能这样做?又是一个 12 位 ADC。它正在使用 han LDR 进行测试,当没有光时,我得到 0,这很好,但是当有轻微的光时,它会变成 48 的十进制值,所以我再次稍微增加亮度,它保持在 48。直到大跳到哪个命中跳到64或什么的。
#include "myIncludes.h"
volatile unsigned char ZCDSoftwareFlag = 0;
volatile unsigned char switchValue = 0;
void main(void)
{
portInit();
triac = 0;
unsigned char result;
adcInit();
while(1)
{
__delay_us(4);
ADCON0bits.GO = 1; //Start conversion
while (ADCON0bits.GO); //Wait for conversion done
result = ADRESH;
result = result << 8;
result = result |ADRESL;
}
}
这是 ADC 初始化函数
void adcInit(void)
{
ADCON0bits.FM = 1; //right-justify
ADCON0bits.CS = 1; //ADCRC Clock
ADPCH = 0x00; //RA0 is Analog channel
ADCON0bits.ON = 1; //Turn ADC On
ADCON0bits.GO = 1; //Start conversion
}