在嵌入式系统和单片机开发中,数值转化为二进制是非常常用的,对与位域可能很多上层开发人员都
不曾见到,位域在MCU开发中常用的使用的,例如一个开关量和高低电平信号,只用0和1两种状态。
下面是我做项目时候写的代码拿出来和大家分享
typedef unsigned char UCHAR;
typedef union
{
UCHAR byte;
struct
{
UCHAR a0:1;
UCHAR a1:1;
UCHAR a2:1;
UCHAR a3:1;
UCHAR a4:1;
UCHAR a5:1;
UCHAR a6:1;
UCHAR a7:1;
}bit;
}UA;
/***********************************************************
Function : toBin
Description : decimal base covertion binary
Parameter : num is decimal base. d[] is seve binary values
Return : void
Date : 2013.12.27
Authot : Puls
************************************************************/
void toBin(UCHAR num, UCHAR d[])
{
int i;
for(i=0; i<8; i++)
{
d[i] = num>>i&1;
}
}
/***********************************************************
Function : test
Description : bin store the num
Parameter : void
Return : void
Date : 2013.12.27
Authot : Puls
************************************************************/
void test()
{
UCHAR i;
UCHAR temp[8];
UCHAR num = 0xE8;
toBin(num, temp);
for(i=0; i<8; i++)
{
printf(“%d, ”, temp[i]);
}
}
/***********************************************************
Function : bitArea
Description : use bitArea that num to bin
Parameter : void
Return : void
Date : 2013.12.27
Authot : Puls
************************************************************/
void bitArea()
{
UA A;
UCHAR num = 30;
A.byte = num;
}