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

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(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

編程技巧:IO引腳的宏定義

作者:枯竹 欄目:單片機(jī)
編程技巧:IO引腳的宏定義
相信不少人都有在不同CPU間移植程序的經(jīng)歷,在移植過程中,對(duì)IO引腳的移植又占據(jù)了移植工作的大部分。那么,是否能在編碼過程中采用一種較好的方法來減少將來移植中的工作量呢?
假設(shè)430的P40,P41,P42分別接在I2C的WP,SCK,SDL引腳上。通常,你可能會(huì)最先想到下面這種辦法:
.H
#define I2C_WP    1
#define I2C_SCK    2
#define I2C_SDA  4
#define I2C_PDIR    P4DIR
#define I2C_POUT    P4OUT
#define I2C_PIN    P4IN
.C
I2C_PDIR |= (I2C_WP | I2C_SCK | I2C_SDA);
I2C_POUT |= I2C_WP;
….


若WP是由P30經(jīng)反相器接到WP腳上的,那么移植的工作量仍然是比較多,

#define IO_I2C_WP(m)        m(3, 0, Y)
#define IO_I2C_SCK(m)    m(4, 1, N)
#define IO_I2C_SDA (m)    m(4, 2, N)

#define IO_SET(NAME)  IO_##NAME(SET_)
#define IO_SET_(PORT.html">PORT, bit, inv)    IO_SET_##inv(PORT.html">PORT, bit)
#define IO_SET_Y(PORT.html">PORT, bit)        P##PORT.html">PORT##OUT &= ~(1<<bit)
#define IO_SET_N(PORT.html">PORT, bit)        P##PORT.html">PORT##OUT |= (1<<bit)

#define IO_CLR(NAME)  IO_##NAME(CLR_)
#define IO_CLR_(PORT.html">PORT, bit, inv)    IO_CLR_##inv(PORT.html">PORT, bit)
#define IO_CLR_Y(PORT.html">PORT, bit)        P##PORT.html">PORT##OUT |= (1<<bit)
#define IO_CLR_N(PORT.html">PORT, bit)        P##PORT.html">PORT##OUT &= ~(1<<bit)

#define IO_DIR_O(NAME)        IO_##NAME(DIR_O_)
#define IO_DIR_I(NAME)        IO_##NAME(DIR_I_)
#define IO_DIR_O_(PORT.html">PORT, bit, inv)        P##PORT.html">PORT##DIR |= (1<<bit)
#define IO_DIR_I_(PORT.html">PORT, bit, inv)        P##PORT.html">PORT##DIR &=~ (1<<bit)

#define IO_TEST(NAME)        IO_#NAME(TEST_)
#define IO_TEST_(PORT.html">PORT, bit, inv)    IO_TEST_##inv(PORT.html">PORT, bit)
#define IO_TEST_Y(PORT.html">PORT, bit)    ((P##PORT.html">PORT##IN & (1<<bit)) == 0)
#define IO_TEST_N(PORT.html">PORT, bit)    ((P##PORT.html">PORT##IN & (1<<bit)) != 0)


#define IO_PORT(NAME) IO_##NAME(PORT_)
#define IO_PORT_(PORT.html">PORT, bit, inv)        PORT.html">PORT

#define IO_BIT(NAME) IO_##NAME(BIT_)
#define IO_BIT_(PORT.html">PORT, bit, inv) (1<<bit)

#define IO_P4_MASK(m) \
    (\
        m(I2C_SCK) \
        | m(I2C_SDA) \
    )

…..
如上所示,你可以按照上面的方式增加自己的功能。

也請(qǐng)各位把你們的IO宏定義方法介紹一下,大家互相交流交流。



2樓: >>參與討論
jackf125
SPI_CLK  EQU  81H
SPI_CLK  EQU  81H;  P0.1

3樓: >>參與討論
wolfererer
講得好
吸收中
~~~
支持
~

4樓: >>參與討論
xlander
在不同CPU之間移植?
你的方法比較不錯(cuò),受教了。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
org指令的問題?
為什么仿真器通過的程序燒到芯片后不能正常工作
請(qǐng)問多機(jī)通訊該如何實(shí)現(xiàn),有沒有比較好的例子,感覺有點(diǎn)無從下手
推薦一款單片機(jī)!
請(qǐng)教關(guān)于單片機(jī)產(chǎn)生波形問題
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)