音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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的位操作

作者:我心勤奮 欄目:單片機
AVR的位操作
我編的一個程序,要求頻繁的對幾個IO口進行操作,發(fā)現(xiàn)程序?qū)懫饋頉]有51那樣直接操作位口方便,AVR在這方面沒有51的優(yōu)勢

2樓: >>參與討論
xjsman
不會的,一點都不比51差啊.
 
3樓: >>參與討論
lanmp
肯定沒51方便
不過時間上未必會慢

4樓: >>參與討論
音樂樂樂
有對io的位操作指令阿
 sbi ,cbi

5樓: >>參與討論
evans200
你們了解用C語言編程嗎
 
6樓: >>參與討論
我心勤奮
這樣行嗎PB0=1?
51的這樣行,用C編程操作位口太不方便了,而51都方便啊!

7樓: >>參與討論
hujiahua
語句寫法不方便不代表操作不方便吧?
 
8樓: >>參與討論
qjy_dali
你還是方便的,主要是MCU自己累唄!
 
9樓: >>參與討論
xij
hehe
你可以先做兩個宏定義!對I/O操作

10樓: >>參與討論
wildship
是啊,c這一點不好
是啊,c這一點不好

11樓: >>參與討論
我心勤奮
操作一二個口一二次還可以
假如需要操作很多口,操作許多次,這樣方便嗎?

12樓: >>參與討論
madaha
如果用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
可以用與或非操作
聰明的編譯器會把它轉(zhuǎn)換為位操作指令。

你所說的編寫方便是可以實現(xiàn)的。

為端口建立一個類。然后重載運算符。
不過已經(jīng)是C++了,建議不要用。因為效率比較低

14樓: >>參與討論
ytr
請問哪里有C++編譯器
我也想把C++的類用到AVR的編程上,不知哪種編譯器支持C++的類?

15樓: >>參與討論
DEF
WINAVR
 
16樓: >>參與討論
xjsman
如果你用的IAR的編譯器的話
也可以這樣操作啊,只要你重寫一下特殊寄存器的定義就行了.ICC和GCC沒用過,不做評論.如果你想偷懶的話,就用宏定義也一樣啊.

17樓: >>參與討論
xjsman
附一段程序

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;
    }
}


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
雙龍 你有沒有簡單的M8的I/O口發(fā)生聲音匯編程序
PWN輸出驅(qū)動
我用雙龍的OK-AVR,怎么下載AT89S系列單片機。
串行下載線和MCU之間可以串接多大的電阻?
avr studio軟件運行很慢
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號