![]() |
發布時間: 2023-3-25 11:39
正文摘要:大家好!我是單片機新手。定義變量我不想用sbit=p^x這種現成的,我想用unsigned int a;/unsigned char a;編譯不了 unsigned int a;//unsigned char a;也試試 P2^0=a; K1=P2^0; unsigned int b; P2^1=b; K2=P2^ ... |
樓主要好好看看C語言,同時看一下C51。 |
devcang 發表于 2023-3-25 15:12 錯!P2是可以位尋址的,位地址從0xa0~0xa7,P2.1的位地址是0xa1。 你和樓主的錯誤就是不知道c語言里面^是個運算符,不能隨心所欲地做位地址來用,那樣子會跟c語言基本語法發生矛盾。Keil C51為了使用位地址,采用的是sbit和^配合使用來定義位地址,比如sbit P21=P2^1;這樣的寫法,因為標準c語言里面沒有sbit這個關鍵字,是c51自行擴展出來的,所以這種寫法不會與c語言語法發生矛盾。 |
unsigned int b; P2^1=b; P2第n位,不可以直接賦值。使用unsign char類型,加以位運算,如與、或等 要把第2位設置高,使用 P2 |= 2; 要把第2位設置低,使用 P2 &= 0xfd; 其它位,類推 |
^是異或,P2^0=a;是標準的語法錯誤——左值不可以參與運算。 |