【问题标题】:how to combine ADRESH and ADRESL on 12 bit ADC如何在 12 位 ADC 上结合 ADRESH 和 ADRESL
【发布时间】:2022-01-17 08:02:22
【问题描述】:

微: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
}

【问题讨论】:

    标签: adc pic18 xc8 mplab-x


    【解决方案1】:

    您尝试将 12 位结果放入 8 位变量中。切换到 16 位

    uint_t result;
    

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 2020-07-08
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多