在C30中,对一个IO口进行设置和操作时,通常需要使用3个寄存器,例如_RB1、_LATB1、_TRISB1,分别代表读取端口电平、设置端口电平、设置端口方向。这样对于1个IO就需要进行3个定义,维护起来比较麻烦。如果我们使用下面的宏定义方式,就只需要一个定义即可,代码维护就变得简单多了。
#define REG2(A, B) A ## B
#define INPIN(PIN) REG2(_R, PIN)
#define
OUTPIN(PIN) REG2(_LAT, PIN)
#define TRISPIN(PIN) REG2(_TRIS, PIN)
#define INPUT 1
#define OUTPUT 0
#define LED1 B8
#define LED1_on() OUTPIN(LED1) = 0
#define
LED1_off() OUTPIN(LED1) = 1
#define LED1_rev() OUTPIN(LED1) = !OUTPIN(LED1)
使用时,可以用下面方式使用:
TRISPIN(LED1) = OUTPUT;
LED1_on();
如果以后改变了端口,也只需要修改LED1这一个宏定义。
文章评论(0条评论)
登录后参与讨论