欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5290|回復(fù): 8
收起左側(cè)

51單片機C語言的賦值問題,sbit要用中間變量而整個io口又可以省掉?

[復(fù)制鏈接]
ID:793261 發(fā)表于 2020-6-29 22:08 | 顯示全部樓層 |閱讀模式
請教各位大佬,C語言賦值一般是從右邊到左邊,等號的右邊是一個值,左邊是變量,如 sbit a = P0^0 ;a = 1;第一句意思是把IO口P0的第一個口賦值給a,第二句是把  1再次賦值給a ,那按照C語言的理解 ,a 最終會是1(前面第一次賦值應(yīng)該從內(nèi)存中清掉了才對),那怎么會控制P0^0了呢?還有如 b = 0xff;P0 = b ;如果我直接寫P0=0xff 這個好像也是可以的把,那問題就來了,用sbit給IO口賦值的的時候不能省掉中間變量,那為什么給整個IO口賦值的時候又省去中間變量呢?勞煩解惑!謝謝
回復(fù)

使用道具 舉報

ID:784974 發(fā)表于 2020-6-30 08:28 | 顯示全部樓層
sbit不是你理解的賦值吧,通俗的說是把a和P0^0等價起來,就是給P0^0另外起了個名字,a=1;語句才能算得上是賦值,也就是給P0^0賦值。
sbit和IO口后面這個問題,你可以看看reg51.h文件里面有沒有包含了P0和P0^0。
希望有所幫助,如有錯誤也請指正,謝謝
回復(fù)

使用道具 舉報

ID:332444 發(fā)表于 2020-6-30 08:33 | 顯示全部樓層
我也想知道哈,位定義可以獨立操作IO口其中一個,利于單獨操作,比如對外設(shè)的通信操作,數(shù)據(jù)線和時鐘線,整體操作則是操作8個,當(dāng)需要單獨操作時就用位定義,能整體操作時則不需要一一定位,我也只知道這樣了。
回復(fù)

使用道具 舉報

ID:65956 發(fā)表于 2020-6-30 08:40 | 顯示全部樓層
一看這樣的問題就知道是個初學(xué)者,我也學(xué)C才兩年,我的理解是當(dāng)你在程序前用這個sbit a = P0^0 ;定義時,這時只是定義P0寄存器的bit.0為一個IO口標志位,當(dāng)你進行a = 1;操作時,即把P0.0寄存器的bit.0置1,也是只是把那個IO口置高電平,以此類推,后面的操作建議結(jié)合硬件去試驗,這樣能加快學(xué)習(xí)應(yīng)用;
回復(fù)

使用道具 舉報

5#
無效樓層,該帖已經(jīng)被刪除
ID:644427 發(fā)表于 2020-6-30 08:43 | 顯示全部樓層
sbit是C51擴展的變量類型,是定義特殊功能寄存器的位變量。典型應(yīng)用是:sbit P0_1=P0^1;//即定義P0_1為P0口的第2位,以便進行位操作。
在C語言里,如果直接寫P1.1,C編譯器并不能識別,而且P1.1也不是一個合法的C語言變量名,所以得給它另起一個名字,這里起的名為P1_1,可是P1_1是不是就是P1.1呢?你這么認為,C編譯器可不這么認為,所以必須給它們建立聯(lián)系,這里使用了Keil C的關(guān)鍵字sbit來定義,sbit的用法有三種:
第一種方法:sbit 位變量名=地址值
第二種方法:sbit 位變量名=SFR名稱^變量位地址值
第三種方法:sbit 位變量名=SFR地址值^變量位地址值
用sbit P1_1=P1^1;就是定義用符號P1_1來表示P1.1引腳,如果你愿意也可以起P11一類的名字,只要下面程序中也隨之更改就行了

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:466730 發(fā)表于 2020-6-30 09:08 | 顯示全部樓層
sbit有點像宏定義一樣,只是針對位而已,綁定了一個端口
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2020-6-30 09:28 | 顯示全部樓層
C語言中沒有sbit關(guān)鍵字,這是keil c51編譯器里面的關(guān)鍵字。 sbit a = P0^0 ;是對端口位寄存器用戶另命名的方式。這里的a不是變量,是P0.0寄存器的別名。
回復(fù)

使用道具 舉報

ID:452950 發(fā)表于 2020-6-30 10:28 | 顯示全部樓層
sbit a = P0^0 ;不是賦值的意思,是定義a與P0^0等價。
回復(fù)

使用道具 舉報

ID:793261 發(fā)表于 2020-6-30 10:32 | 顯示全部樓層
嘿黑潶嗨 發(fā)表于 2020-6-30 08:28
sbit不是你理解的賦值吧,通俗的說是把a和P0^0等價起來,就是給P0^0另外起了個名字,a=1;語句才能算得上是 ...

謝謝!
回復(fù)

使用道具 舉報

11#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表