我正在使用 XC8 编译器开发一个带有 PIC 的小型嵌入式应用程序。在 XC8 中设置引脚的使用(输出或输入),程序员应该执行如下指令:
TRISAbits.RA0 = 1;
尤其是:
- 寄存器前缀中的 TRIS(常量)
- A是端口
- bits 是后缀(常量)
- RA0 是引脚的名称
我想要做的是用人类可读的名称定义所有引脚,例如:
#define LED_1 A,RA0
#define LED_2 A,RA1
#define SWITCH_1 B,RB5
...
并以这种方式定义一些类似SET_OUTPUT
或使用的宏: .SET_INPUT
SET_OUTPUT(LED_1)
我试图做的是这两个宏:
#define SET_INPUT(port, pin) TRIS ## port ## bits. ## pin ## = 0
但是,先前定义的常量内的逗号不会扩展并解释为单个参数。我也试过:
#define SET_INPUT(X) SET_INPUT_(X ## "")
#define SET_INPUT_(port, pin) TRIS ## port ## bits. ## pin ## = 0
没有成功。
本质上与这个问题相反:Comma in C/C++ macro
它是否存在解决方案或更方便的方法来做到这一点?