原创 单片机编程的几种新用法(二)

2011-5-3 18:03 1523 12 12 分类: MCU/ 嵌入式

单片机编程的几种新用法(二)

三、用枚举数据类型来定义特定的状态

    在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个函数在操作过程中会返回几个特定的状态:操作成功,操作失败,忙,等等。如果我们直接在函数里用0,1和2来表示这三种状态,有时偶尔会出现数值与实际状态对不上号的情况,造成置状态和判断状态错误,那么我们可以在程序里用宏或者枚举来事先定义好这些状态。

如:用宏定义:

#define Sucess 0

#define Failure 1

#define Busy 2

用枚举

typedef enum { Sucess = 0, Failure , Busy } FlagStatus;

四、用共用体类型定义共享内存空间

共用体类型定义的数据是将多个成员共享同一内存空间,该空间的大小为最大成员的大小,其用法与结构体完全相同,但值得注意的是不能同时引用多个成员,在某一时刻只能使用其中之一成员。

在程序中如果全局变量比较多,包含几个结构和数组,如果这些全部定义的话势必会占大量的内存,有可能还会导致单片机内存不够,如果能让几个不同时用到的数组和结构变量共享一段内存,则能省出很多的内存空间。

比如以下输入输出若不同时进行,则可以共享同一段内存空间

union {

                   struct {

                            unsigned char   Flag;

unsigned char   Type;

                            unsigned char   State;

                            unsigned long   DataLen;                        

                            unsigned char Buffer[64];           

                   }DataOut;                                                               

                   struct {

                            unsigned char   Flag;

unsigned char   Type;

                            unsigned char   State;

                            unsigned long   DataLen;                        

                            unsigned char Buffer[64];  

                   } DataIn;                                                         

         } BOC;

文章评论0条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条