#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; }
Test Cases
Test Results
Input
0xC3F5
Expected Output
Channel: 12 ADC Value: 1013