我正在尝试从我的ATxMega128a1读取输入,然后在我的超级终端上显示它。 8位输入(4低,4高,lsb和msb)。在端口引脚6上安装了一个按钮。
我已经编写了代码,但是当我编译代码时,我收到了这个错误:
“expect')'''''token”
这是我的代码:
#define x PORTH
PORTE.DIRCLR = PIN6_bm;
PORTE.PIN6CTRL = PORT_OPC_PULLDOWN_gc;
while(1)
{
char x;
if(!(PORTH_IN&PIN6_bm))
{
// if button pressed
PORTJ_OUTSET = PIN0_bm;
PORTJ_OUTSET = PIN1_bm;
PORTJ_OUTSET = PIN2_bm;
PORTJ_OUTSET = PIN3_bm;
PORTJ_OUTCLR = PIN4_bm;
PORTJ_OUTCLR = PIN5_bm;
PORTJ_OUTCLR = PIN6_bm;
PORTJ_OUTCLR = PIN7_bm;
scanf("%d",&x);
printf("%d\n",x);
}
}
return 0;
}
我做错了什么? 而且,我是否正确地为自己的目的做这件事?
答案 0 :(得分:0)
PORTH由#define PORTH (*(unsigned char *) 0x102)
定义。
正如Michael Walz在评论中指出的那样,你最终将x定义为一个问题,然后将其声明为变量。
char x; // becomes
char PORTH; //which becomes
char (*(unsigned char *) 0x102);
不起作用,因为声明需要一个变量名。 也许,您不需要以两种不同的方式使用x。
但也许,您的方法的主要反对意见是使用scanf()
。要读取PORTH,只需将其分配给变量,或者直接打印即可。
char c = PORTH; // copies the value of the inputs pins into variable c.
printf("%d\n", PORTH); // prints the value of the input pins as a number.
如果没有更多代码,很难说你想要做什么,但我希望你能让它发挥作用。