我想为设置引脚方向和级别定义宏。他们的参数必须是端口名称和引脚编号。我不想使用 TRIS 寄存器或 LAT 寄存器名称,只有端口名称(例如 PORTA)。我使用指针和位掩码来执行此操作,例如:
设置引脚目录:
#define SET_PIN_DIR_IN(port,pin) *(&port+0x80)|=1<<pin
设置引脚电平:
#define SET_PIN_HIGH(port,pin) port|=1<<pin
读取引脚状态:
#define READ_PIN_LEVEL(port,pin) (((*(&port+0x100)>>pin)&0x01)==0x01)
但我知道上面的代码不是最佳的。Q1:我可以用“(((unsigned)&(REGISTER_NAME))*8) + BIT_NUM”写我的宏吗?Q2:对于所有的 PIC MCU,I\O 寄存器的顺序是否相同?