|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
還是不太懂bit與sbit的區(qū)別,比如我想這樣,該怎么處理: |
| 作者:風... 欄目:單片機 |
uchar command = 0x55; uchar TEMP = 0; bit TEMP0,TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6,TEMP7; TEMP0 = command^0; TEMP1 = command^1; TEMP2 = command^2; TEMP3 = command^3; TEMP4 = command^4; TEMP5 = command^5; TEMP6 = command^6; TEMP7 = command^7; //這一段編譯沒有問題 TEMP^0 = TEMP0; TEMP^1 = TEMP1; TEMP^2 = TEMP2; TEMP^3 = TEMP3; TEMP^4 = TEMP4; TEMP^5 = TEMP5; TEMP^6 = TEMP6; TEMP^7 = TEMP7; //可這一段就不行了,即使我把TEMP定義到bdata也依舊 P2 = TEMP; 如果我想達到上面的目的,是不是非得用sbit???sbit似乎是可以的吧?還沒試! 既然第一段TEMP0 = command^0;都沒問題,為什么下一段TEMP^0 = TEMP0;就有問題? 這是不是失去了C51特有的bit的存在的意義! |
| 2樓: | >>參與討論 |
| 作者: cpld163 于 2006/6/9 15:08:00 發(fā)布:
re 幫你頂! |
|
| 3樓: | >>參與討論 |
| 作者: kingsr 于 2006/6/9 17:12:00 發(fā)布:
^_^ 打錯了 * - 本貼最后修改時間:2006-6-10 8:55:50 修改者:kingsr |
|
| 4樓: | >>參與討論 |
| 作者: 滌綸 于 2006/6/9 18:42:00 發(fā)布:
回復 int bdata ibase; CHAR bdata bary[4]; sbit mybit0=ibase^0; sbit mybit15=ibase^15; sbit Ary07=bary[0]^7; sbit Ary37=bary[3]^7; * - 本貼最后修改時間:2006-6-9 18:43:14 修改者:滌綸 |
|
| 5樓: | >>參與討論 |
| 作者: computer00 于 2006/6/9 19:42:00 發(fā)布:
在樓主的帖中,^ 是異或(C語言中的一種位操作)操作。 |
|
| 6樓: | >>參與討論 |
| 作者: smileage 于 2006/6/10 10:40:00 發(fā)布:
個人理解 ^號是不是只在定義的時候表示第幾位的意思 在具體運算表達式里表示“異或“的意思 那么TEMP0 = command^0;表示的是把command和0異或的結(jié)果賦給TEMP0; 這也是TEMP^0 = TEMP0;編譯出現(xiàn)錯誤的原因 那么TEMP^0 = TEMP0;的實現(xiàn)途徑可以如下: sbit a0 = TEMP^0; a0 = TEMP0; (前提TEMP是bdata) bit是定義一個變量,額外占據(jù)內(nèi)存中一個bit的空間 sbit是聲明一個變量,就好比一個標號,與原變量地址空間相同 |
|
| 7樓: | >>參與討論 |
| 作者: computer00 于 2006/6/10 11:28:00 發(fā)布:
樓上的smileage 解釋正確。 |
|
| 8樓: | >>參與討論 |
| 作者: 風... 于 2006/6/10 15:44:00 發(fā)布:
非常非常的感謝樓上各位朋友! 在此謝過! 似乎有點明白了,再仔細琢磨琢磨! 再次感謝樓上各位兄弟,謝謝啊^_^ |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |