Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>
uint8_t reg;
uint8_t i;
const char *a[8]={"Power On",
"Error",
"Tx Ready",
"Rx Ready",
"Overheat",
"Undervoltage",
"Timeout",
"Reserved"};
    
   
void decode_status(uint8_t reg) 
{
    for(i=0;i<8;i++)
    {
        if((reg&(1<<i))==(1<<i))
        {
            printf("%s\n",a[i]);
        }
    }
}
int main() 
{
    uint8_t reg;
    scanf("%hhu", &reg);
    decode_status(reg);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready