71. Decode ADC Result Using Union Bitfields

Back To All Submissions
Previous Submission
Next Submission

Code

#include <stdio.h>
#include <stdint.h>

typedef union{
    struct{
        uint16_t adc_value: 12; // The first 12 bits represent the ADC value
        uint16_t channel: 4;    // The last 4 bits represent the channel number
    }adc_register;

    uint16_t adc_reg;
}ADC_Result;

void ADC_Analyze(uint16_t input){
    ADC_Result adc;
    adc.adc_reg = input;
    printf("Channel: %hu\n", adc.adc_register.channel);
    printf("ADC Value: %hu\n", adc.adc_register.adc_value);
} 

int main(){
    uint16_t data;
    scanf("%hx", &data);
    ADC_Analyze(data);
    return 0;
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote