我想为每个数字端口引脚(例如PORTA引脚)分配单独的名称,我希望能够将RA0,RA1等称为RED_LED,BLUE_LED等,因此可以编写以下代码:

RED_LED = 0;
BLUE_LED = 1;


目前,我必须使用:

RA0 = 0;
RA1 = 1;


例如,当放置在main()函数中时,上面的方法就可以工作。

为此我需要编写什么代码?我尝试了以下方法:

#define RED_LED RA0;
#define RED_LED @ RA0;
volatile bit RED_LED = RA0;
volatile bit RED_LED = @RA0;


都不起作用-当我尝试在代码中使用别名时,它们都会产生错误。

在编译器随附的pic16f628a.h文件中,定义了以下内容。

// Register: PORTA
volatile unsigned char           PORTA               @ 0x005;
// bit and bitfield definitions
volatile bit RA0                 @ ((unsigned)&PORTA*8)+0;
volatile bit RA1                 @ ((unsigned)&PORTA*8)+1;
volatile bit RA2                 @ ((unsigned)&PORTA*8)+2;
volatile bit RA3                 @ ((unsigned)&PORTA*8)+3;
volatile bit RA4                 @ ((unsigned)&PORTA*8)+4;
volatile bit RA5                 @ ((unsigned)&PORTA*8)+5;
volatile bit RA6                 @ ((unsigned)&PORTA*8)+6;
volatile bit RA7                 @ ((unsigned)&PORTA*8)+7;

最佳答案

正如@HotLicks在评论中所说,您必须删除;

如果编写#define RED_LED RA0;,编译器将更改RED_LED = 0;RA0; = 0;

正确的方法如下所示:

#define RED_LED  RA0
#define BLUE_LED RA1


因此,您可以根据需要使用代码。

RED_LED  = 0;
BLUE_LED = 1;

08-16 00:55