|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
AVR的位操作 |
| 作者:我心勤奮 欄目:單片機 |
我編的一個程序,要求頻繁的對幾個IO口進行操作,發(fā)現(xiàn)程序?qū)懫饋頉]有51那樣直接操作位口方便,AVR在這方面沒有51的優(yōu)勢 |
| 2樓: | >>參與討論 |
| 作者: xjsman 于 2004/12/22 8:17:00 發(fā)布:
不會的,一點都不比51差啊. |
|
| 3樓: | >>參與討論 |
| 作者: lanmp 于 2004/12/22 8:49:00 發(fā)布:
肯定沒51方便 不過時間上未必會慢 |
|
| 4樓: | >>參與討論 |
| 作者: 音樂樂樂 于 2004/12/22 10:15:00 發(fā)布:
有對io的位操作指令阿 sbi ,cbi |
|
| 5樓: | >>參與討論 |
| 作者: evans200 于 2004/12/22 14:21:00 發(fā)布:
你們了解用C語言編程嗎 |
|
| 6樓: | >>參與討論 |
| 作者: 我心勤奮 于 2004/12/22 14:44:00 發(fā)布:
這樣行嗎PB0=1? 51的這樣行,用C編程操作位口太不方便了,而51都方便啊! |
|
| 7樓: | >>參與討論 |
| 作者: hujiahua 于 2004/12/22 20:22:00 發(fā)布:
語句寫法不方便不代表操作不方便吧? |
|
| 8樓: | >>參與討論 |
| 作者: qjy_dali 于 2004/12/22 20:59:00 發(fā)布:
你還是方便的,主要是MCU自己累唄! |
|
| 9樓: | >>參與討論 |
| 作者: xij 于 2004/12/22 21:11:00 發(fā)布:
hehe 你可以先做兩個宏定義!對I/O操作 |
|
| 10樓: | >>參與討論 |
| 作者: wildship 于 2004/12/22 21:11:00 發(fā)布:
是啊,c這一點不好 是啊,c這一點不好 |
|
| 11樓: | >>參與討論 |
| 作者: 我心勤奮 于 2004/12/22 23:24:00 發(fā)布:
操作一二個口一二次還可以 假如需要操作很多口,操作許多次,這樣方便嗎? |
|
| 12樓: | >>參與討論 |
| 作者: madaha 于 2004/12/23 10:36:00 發(fā)布:
如果用BASCOM-AVR Set PortB.0 相當于Pb.0=1 Reset PortB.0 Pb.0=0 BASCOM-AVR中也可以直接: PB.0=1 PB.0=0 方便 * - 本貼最后修改時間:2004-12-23 10:53:00 修改者:madaha |
|
| 13樓: | >>參與討論 |
| 作者: DEF 于 2004/12/24 0:43:00 發(fā)布:
可以用與或非操作 聰明的編譯器會把它轉(zhuǎn)換為位操作指令。 你所說的編寫方便是可以實現(xiàn)的。 為端口建立一個類。然后重載運算符。 不過已經(jīng)是C++了,建議不要用。因為效率比較低 |
|
| 14樓: | >>參與討論 |
| 作者: ytr 于 2004/12/24 20:38:00 發(fā)布:
請問哪里有C++編譯器 我也想把C++的類用到AVR的編程上,不知哪種編譯器支持C++的類? |
|
| 15樓: | >>參與討論 |
| 作者: DEF 于 2004/12/25 0:08:00 發(fā)布:
WINAVR |
|
| 16樓: | >>參與討論 |
| 作者: xjsman 于 2004/12/25 8:56:00 發(fā)布:
如果你用的IAR的編譯器的話 也可以這樣操作啊,只要你重寫一下特殊寄存器的定義就行了.ICC和GCC沒用過,不做評論.如果你想偷懶的話,就用宏定義也一樣啊. |
|
| 17樓: | >>參與討論 |
| 作者: xjsman 于 2004/12/25 9:05:00 發(fā)布:
附一段程序 typedef struct { unsigned CHAR b0 : 1; unsigned CHAR b1 : 1; unsigned CHAR b2 : 1; unsigned CHAR b3 : 1; unsigned CHAR b4 : 1; unsigned CHAR b5 : 1; unsigned CHAR b6 : 1; unsigned CHAR b7 : 1; }BIT_FIELD; typedef union { unsigned CHAR byte; BIT_FIELD bit; }IO_RW; __no_init volatile __io IO_RW _portb @0x18; #define PORTB _portb.byte #define PORTB0 _portb.bit.b0 #define PORTB1 _portb.bit.b1 #define PORTB2 _portb.bit.b2 #define PORTB3 _portb.bit.b3 #define PORTB4 _portb.bit.b4 #define PORTB5 _portb.bit.b5 #define PORTB6 _portb.bit.b6 #define PORTB7 _portb.bit.b7 #define water_var_out PORTB0 #define mode_forward_out PORTB2 #define display_control_out PORTB5 #define round_back_out PORTB6 #define mode_back_out PORTB7 void port_transfer(void) { if(mix_forward_out_buf) { mix_forward_out = 1; } else { mix_forward_out = 0; } if(mix_back_out_buf) { mix_back_out = 1; } else { mix_back_out = 0; } if(round_forward_out_buf) { round_forward_out = 1; } else { round_forward_out = 0; } if(round_back_out_buf) { round_back_out = 1; } else { round_back_out = 0; } if(mode_forward_out_buf) { mode_forward_out = 1; } else { mode_forward_out = 0; } if(mode_back_out_buf) { mode_back_out = 1; } else { mode_back_out = 0; } } |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |