#define HC165_CE_0 PBout(0) #define HC165_PL_0 PAout(11) #define HC165_CP_0 PAout(12) #define HC165_Q7_0 PBin(1) #define HC165_CE_1 PBout(8) #define HC165_PL_1 PBout(6) #define HC165_CP_1 PBout(7) #define HC165_Q7_1 PBin(9) 如何做成宏定义数组
时间: 2023-09-14 14:03:25 浏览: 96
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
5星 · 资源好评率100%
可以将HC165_CE、HC165_PL、HC165_CP、HC165_Q7定义为宏定义数组,如下所示:
```
#define HC165_CE {PBout(0), PBout(8)}
#define HC165_PL {PAout(11), PBout(6)}
#define HC165_CP {PAout(12), PBout(7)}
#define HC165_Q7 {PBin(1), PBin(9)}
```
然后在readVoltage函数中通过传入参数来确定使用哪一组HC165引脚,如下所示:
```
uint8_t readVoltage(uint8_t group) {
uint8_t i = 0;
uint8_t temp = 0;
HC165_PL[group] = 0;
HC165_PL[group] = 1;
if(HC165_Q7[group] == 1)
temp |= 0x01;
for(i = 0; i < 7; i ++)
{
temp = temp << 1;
HC165_CP[group] = 0;
delayUs(1);
HC165_CP[group] = 1;
if(HC165_Q7[group] == 1)
temp |= 0x01;
}
return temp;
}
```
这样可以大大简化代码,提高代码的可读性和可维护性。同时,如果需要添加更多的HC165引脚组,只需要在宏定义数组中添加对应的引脚即可。
阅读全文