Register Bitfields Using Struct Overlay

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_t; 

void read_and_write(ControlRegister_t *reg_handle, uint8_t enable, uint8_t mode, uint8_t interrupt){
    reg_handle->bits.enable = enable; 
    reg_handle->bits.mode = mode; 
    reg_handle->bits.interrupt = interrupt; 
    printf("%hu",reg_handle->reg); 
}


int main(){
    uint8_t e,m,i;
    scanf("%hx%hx%hx", &e, &m, &i);
    ControlRegister_t reg_handle; 
    read_and_write(&reg_handle, e, m, i); 
    return 0;
} 

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

1 2 1

Expected Output

13