標(biāo)題: 51單片機(jī)定義變量error C129: missing ';' before '^1 [打印本頁]

作者: lihuajie32    時(shí)間: 2023-3-25 11:39
標(biāo)題: 51單片機(jī)定義變量error C129: missing ';' before '^1
大家好!我是單片機(jī)新手。定義變量我不想用sbit=p^x這種現(xiàn)成的,我想用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^1;
unsigned int c;
P1^0=c;
L1=P1^0;

弄成這樣,如何實(shí)現(xiàn)呢?



作者: Hephaestus    時(shí)間: 2023-3-25 14:32
^是異或,P2^0=a;是標(biāo)準(zhǔn)的語法錯(cuò)誤——左值不可以參與運(yùn)算。
作者: devcang    時(shí)間: 2023-3-25 15:12

unsigned int b;
P2^1=b;

P2第n位,不可以直接賦值。使用unsign char類型,加以位運(yùn)算,如與、或等

要把第2位設(shè)置高,使用
P2 |= 2;

要把第2位設(shè)置低,使用
P2 &= 0xfd;

其它位,類推
作者: Hephaestus    時(shí)間: 2023-3-25 15:35
devcang 發(fā)表于 2023-3-25 15:12
unsigned int b;
P2^1=b;

錯(cuò)!P2是可以位尋址的,位地址從0xa0~0xa7,P2.1的位地址是0xa1。

你和樓主的錯(cuò)誤就是不知道c語言里面^是個(gè)運(yùn)算符,不能隨心所欲地做位地址來用,那樣子會(huì)跟c語言基本語法發(fā)生矛盾。Keil C51為了使用位地址,采用的是sbit和^配合使用來定義位地址,比如sbit P21=P2^1;這樣的寫法,因?yàn)闃?biāo)準(zhǔn)c語言里面沒有sbit這個(gè)關(guān)鍵字,是c51自行擴(kuò)展出來的,所以這種寫法不會(huì)與c語言語法發(fā)生矛盾。
作者: coody_sz    時(shí)間: 2023-3-25 22:52
樓主要好好看看C語言,同時(shí)看一下C51。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1