我試圖從ATxMega128a1讀取輸入,然後在超級終端上顯示它。 8位輸入(4低電平,4高電平,lsb & msb)。上了車端口引腳安裝一個按鈕6.如何從xmega讀取輸入,然後在超級終端上顯示它
我已經寫代碼,但是當我編譯它,我得到這個錯誤:
"expected ')' before '*' 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;
}
什麼我做錯了嗎? 而且,我是否爲我的目的做正確的事情?
您在哪一行發生此錯誤? –
只需刪除'#define x PORTH'。 這沒有任何意義,因爲然後每次在程序中寫入'x'時,預處理器會將'x'替換爲'PORTH'。 然後,編譯器實際上看到'char PORTH;'而不是'char x;',這與之前的'PORTH'聲明(你沒有顯示順便說一句)衝突。 –
不要爲整個文件定義單個字母的宏。使用更長和不言自明的名字。這也適用於變量,但對於宏可能會導致更多的混亂。 – Olaf