久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

謝謝!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产三级国产aⅴ入口 | 一区二区精品 | 亚洲区在线 | 超碰在线影院 | 成人国产精品色哟哟 | 欧美日韩国产一区二区三区 | 狠狠干狠狠操 | 韩国毛片一区二区三区 | 黄色网址在线免费播放 | 99精品国产一区二区三区 | 日韩不卡视频在线 | 日韩中文字幕视频在线观看 | 亚洲色图在线观看 | 成人免费在线 | 中文字幕av亚洲精品一部二部 | 日本天天操 | 国产亚洲一区二区三区在线 | 在线免费看黄 | 久久久久亚洲精品 | 视频一区二区三区中文字幕 | 国产精品视频久久久 | 亚洲精品视频在线 | 亚洲欧美日韩中文字幕一区二区三区 | 精精精精xxxx免费视频 | 91毛片在线观看 | 久久久精彩视频 | 免费观看一级黄色录像 | 亚洲一区二区三区在线 | 国产高清在线观看 | 黄色毛片在线看 | 国产精品亚洲欧美日韩一区在线 | 酒色成人网 | 夜夜撸av| 青青草视频网 | 国产91在线播放 | 日韩成人在线视频 | 色橹橹欧美在线观看视频高清 | 免费av手机在线观看 | www.色综合| 中文字幕 在线观看 | 国产在线精品一区二区三区 |