变量多了,
要通迅了,
就得慢慢向结构,联合体转,
(以下指非专用接口,只有16个IO,没有ADDR,没有CS,没有COM/DAT等信号)
如设,并口是16BIT,每次传16BIT,
你知道传过来的是什么吗?不知
你可以取一BIT来区分是地址还是DAT(当然可以有其它方法)
这样,就只有15BIT了,
还有,你知道传过来的是读,还是写吗?不知,那是不是得再用1BIT来区分?
这样,就还只有14BIT了.
等等.
另外还有别的:
如有时传的是状态,选择参数,又或可能要传的是32BIT,如何区分哪一次传的是H,哪一次传的是L?等等.
有了结构,+联合就好玩很多了.
typedef struct
{
uint16_t Dat :8;
uint16_t Other :6;
uint16_t RW :1;
uint16_t ADDR_DAT:1;
} Format_Type;
有了这个结构体就可以很清楚的表达了,程序也好写了;
但是问题来了,我的GPIO-OUT是16BIT操作的.你总不能每次都将各位进行 或 操作吧.
联合体就起作用了.
typedef union
{
Format_Type Format;
uint16_t U16;
} Comm_Type;
当然结构体有时没必要用得这么高深,带来方便就好.
有时变量多了,是不是老记错,或是怕输入错..
typedef struct
{
uint8_t Temp;
uint8_t Time;
uint8_t Year;
uint8_t Month;
uint8_t Date;
} Pra_Type;
只要:
Pra_Type Tmp;
你只要记着Tmp;就行了.
当你输入Tmp. 输入.后就你可以选择结构里面的变量了...
还有.是不是老要:
Time++;
if (Time > 100) Time = 0;
是不是很累;
typedef struct
{
uint8_t Time :7;
uint8_t :1;
} Time_Type;
Time_Type Coun_Val;
Coun_Val.Time++; //计到127, 就这样一条就行了, 但是,你的计数最大次数要是2的N次
是不是很好玩. |