#include <stdio.h> #include <stdint.h> typedef union { struct { uint16_t adc_value : 12; uint16_t channel : 4; }bits; uint16_t adc_reg; } ADC_Result; #define ADC_REAL(reg) {\ ADC_Result adc;\ adc.adc_reg = reg;\ printf("Channel: %d\n", adc.bits.channel);\ printf("ADC Value: %d\n", adc.bits.adc_value);\ } int main() { uint16_t reg; scanf("%hx", ®); ADC_REAL(reg); // Fill union and print channel and adc_value return 0; }
Test Cases
Test Results
Input
0xC3F5
Expected Output
Channel: 12 ADC Value: 1013