以位为单位存储标志-共用体-union

时间:2021-02-26 19:57:57

一、程序的结构如下:

typedef union _KEYST
    {
        struct
        {
            uint8 Key1_Flag :1;//表示第0位
            uint8 Key2_Flag :1;//表示第1位
            uint8 Key3_Flag :1;//2
            uint8 Key4_Flag :1;//3
            uint8 Key5_Flag :1;//4
            uint8 Key6_Flag :1;//5
            uint8 kk :2;//6~7
        } Keya1;
        uint8 Keyb1;
    }Keyst;

程序的使用方法如下:

结构的访问方法是:

1.开头定义:

Keyst flag1_6;

2.程序中访问位的方法是:

Flag1_6.Keya1.Key1_Flag(可以赋值,可以作为判断的条件)

Flag1_6.Keya1.Key2_Flag

Flag1_6.Keya1.Key2_kk是表示的两位的

程序中做为位的整体的是:

Flag1_6.Keyb1

我们在记录这个值的时候就显的特别的方便了。

二、但对于51单片机或者其他的一些,还有另外的一种方法:

uchar  bdata sta;

sbit RX_DR =sta^6;

sbit TX_DS =sta^5;

sbit MAX_RT=sta^4;//51程序的表示方法

而第一句就跟上边的定义一样了。