|
|||||||||||
| 技術(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ī) |
相信不少人都有在不同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 于 2006/1/4 22:09:00 發(fā)布:
SPI_CLK EQU 81H SPI_CLK EQU 81H; P0.1 |
|
| 3樓: | >>參與討論 |
| 作者: wolfererer 于 2006/1/7 13:55:00 發(fā)布:
講得好 吸收中 ~~~ 支持 ~ |
|
| 4樓: | >>參與討論 |
| 作者: xlander 于 2006/1/7 19:35:00 發(fā)布:
在不同CPU之間移植? 你的方法比較不錯(cuò),受教了。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |