|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2014-11-5 22:30:56
|
显示全部楼层
本帖最后由 blavy 于 2014-11-5 22:37 编辑
最近学习到一个联合体的好用的方法,可以把几个不在同一个PORT口的引脚结合起来,比如PA1,PB1,PC1,PD1,可以把这几个脚放到一个字节里面用,详细如下:
typedef union
{
uint8_t byte;
struct
{
uint8_t B0:1;
uint8_t B1:1;
uint8_t B2:1;
uint8_t B3:1;
uint8_t B4:1;
uint8_t B5:1;
uint8_t B6:1;
uint8_t B7:1;
}BITS;
}BYTE_T;
先定义一个联合体分位定义的,这样里面的结构体就和byte共享同一段内存。
void DATA_RESOLVE (uint8_t DATAS)
{
BYTE_T BUFF;
BUFF.byte = DATAS;
PA1 = BUFF.BITS.B0;
PB1 = BUFF.BITS.B1;
PC1 = BUFF.BITS.B2;
PD1 = BUFF.BITS.B3;
// =BUFF.BITS.B4;
// =BUFF.BITS.B5;
// =BUFF.BITS.B6;
// =BUFF.BITS.B7;
}
这样一来,如果你想要四个脚输出PA1=1,PB1=0,PC1=0,PD2=0;只要用一条调用语句 DATA_RESOLVE (0x01);即可,可以把分散的引脚整合到一起,象一个PORT口里的一样。 |
|