|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
C51程序求救 |
| 作者:xin___xin 欄目:單片機(jī) |
這是數(shù)組定義,要實(shí)現(xiàn)取一個(gè)uint數(shù)的位 uchar Ar[] = {1,2,4,8,16,32,64,128}; 這是程序: for(Row=0; Row<8; Row++) { R1 = (R1_Temp & Ar[Row]) ? 1 : 0; R2 = (R2_Temp & Ar[Row]) ? 1 : 0; G1 = (G1_Temp & Ar[Row]) ? 1 : 0; G2 = (G2_Temp & Ar[Row]) ? 1 : 0; CLKout } 其中 R1 = (R1_Temp & Ar[Row]) ? 1 : 0; 執(zhí)行時(shí)間太長(zhǎng)了,哪位老兄幫我找一個(gè)短一點(diǎn)的語(yǔ)句實(shí)現(xiàn)? |
| 2樓: | >>參與討論 |
| 作者: computer00 于 2006/4/17 10:27:00 發(fā)布:
re: unsigned CHAR mask; mask=1; for(Row=0; Row<8; Row++) { R1 = R1_Temp & mask; mask<<=1; CLKout } |
|
| 3樓: | >>參與討論 |
| 作者: xin___xin 于 2006/4/17 10:30:00 發(fā)布:
我試試,謝謝圈圈 |
|
| 4樓: | >>參與討論 |
| 作者: 鎮(zhèn)關(guān)西 于 2006/4/17 10:34:00 發(fā)布:
移位會(huì)好一點(diǎn)嗎 |
|
| 5樓: | >>參與討論 |
| 作者: computer00 于 2006/4/17 10:39:00 發(fā)布:
如果你要R1只能是1和0的話,這條語(yǔ)句要改一下: R1 = (R1_Temp & mask) && 0xFF; 如果你的R1只用來(lái)做判斷真假的話,就可以不用&&0xFF了。 |
|
| 6樓: | >>參與討論 |
| 作者: xin___xin 于 2006/4/17 11:11:00 發(fā)布:
如果是位變量的話 如果是位變量的話是不是用1來(lái)代表ture,用0來(lái)代表fouse呢? |
|
| 7樓: | >>參與討論 |
| 作者: xin___xin 于 2006/4/17 11:15:00 發(fā)布:
R1定義為位變量 sbit R1; |
|
| 8樓: | >>參與討論 |
| 作者: computer00 于 2006/4/17 16:43:00 發(fā)布:
如果R1是位變量的話,就可以直接給它賦值。 R1 = R1_Temp & mask; 如果R1_Temp & mask非0的話,R1就是1。 編譯器生成的代碼,是用0xFF去加上R1_Temp & mask,然后看有沒(méi)有進(jìn)位,只要R1_Temp & mask非0,那么就有進(jìn)位,R1就是1。 |
|
| 9樓: | >>參與討論 |
| 作者: yanfengzhu 于 2006/4/17 21:25:00 發(fā)布:
浪費(fèi)空間啊 for(Row=1; Row; Row<<=1) { bit tmp; tmp = R1_Temp & Row; R1 = tmp; tmp = R2_Temp & Row; R2 = tmp; tmp = G1_Temp & Row; G1 = tmp; tmp = G2_Temp & Row; G2 = tmp; CLKout } |
|
| 10樓: | >>參與討論 |
| 作者: PointRtos 于 2006/4/17 21:45:00 發(fā)布:
這個(gè)問(wèn)題好說(shuō): 根據(jù)C51的語(yǔ)法,定義為: bdata R1; 然后定義位域: sbit R10 = R1^0; .... sbit R17 = R1^7; 然后定義一個(gè)宏直接取其值就是了: #define getbit(num) (R1##num) |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |