80. Register Bitfields Using Struct Overlay

Back To All Submissions
Previous Submission
Next Submission

Code

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

typedef union {
    struct {
        uint8_t enable    : 1;
        uint8_t mode      : 2;
        uint8_t interrupt : 1;
        uint8_t reserved  : 4;
    } bits;
    uint8_t reg;
} ControlRegister;

int main() {
    uint8_t e, m, i;
    if(scanf("%hhu %hhu %hhu", &e, &m, &i) != 3){
        return 0;
    }
    // Construct and print register value
        ControlRegister active_X;

        active_X.bits.enable = e;
        active_X.bits.mode = m;
        active_X.bits.interrupt = i;
        active_X.bits.reserved = 0;

    printf("%u",active_X.reg);
    return 0;
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote