相關(guān)商品
【創(chuàng)客學(xué)堂】NO pinMode!教你使用bitSet函數(shù)提高程序空間利用率
編輯:Peter2013-08-01 130708050@qq.com 瀏覽次數(shù):1578
使用Arduino我們可以做出很炫的作品,因為在Arduino語法中,枯燥的底層代碼都被封裝成了一個個的現(xiàn)成的函數(shù),我們只需要調(diào)用即可??墒?,小編認為我們還真的需要了解一些底層的知識,因為這樣可以將我們編寫的語句被有效的轉(zhuǎn)換為機器碼,提高Arduino控制器有限的程序空間的利用率。在這里小編通過本文簡單的介紹一下如何有效的使用Arduino語句,我們先通過下面兩幅圖片比較一下,
圖一 使用pinMode函數(shù)編譯后代碼的大小為1116字節(jié)
圖二 使用bitSet函數(shù)編譯后代碼的大小982字節(jié)
通過上面的兩幅圖片我們可以清楚的看到,使用bitSet函數(shù)代替pinMode函數(shù)之后——代碼變少了,整整少了134字節(jié)——這僅僅是一條語句的替換,如果是5條、10條的語句替換,那么節(jié)省量就可觀了。
究其原因只是因為在Arduino語法中,bitSet函數(shù)僅是一個宏替換語句,而不像pinMode函數(shù)大篇幅的函數(shù)定義(有興趣的讀者可以自己查閱pinMode函數(shù)的原型)。想要使用bitSet函數(shù)做到這一點,我們還需要了解一下硬件的知識:在AtmelAVR中,每個I/O口的狀態(tài)是由對應(yīng)的數(shù)據(jù)方向寄存器里的“位”配置的,以Arduino UNO為例,數(shù)字引腳13對應(yīng)的就是PB5(即DDRB,5);而在Arduino Mega 2560中,相對應(yīng)就是PB7(DDRB,7)。所以,如果我們想改變某個I/O口的輸入輸出狀態(tài),只需要改變與其對應(yīng)的寄存器里的“位”即可。
還有就是給大家介紹關(guān)于一本學(xué)習(xí)Arduino的書和博客供大家學(xué)習(xí)參考。
愛上Arduino:
http://m.lifestyle201.com/goods-193.html
Arduino電子設(shè)計實戰(zhàn)指南零基礎(chǔ)篇:
http://m.lifestyle201.com/goods-394.html
Arduino從基礎(chǔ)到實踐BeginningArduino從零開始:
http://m.lifestyle201.com/goods-393.html
Arduino愛好者Rebecca的博客:
用戶評價
暫時還沒有任何用戶評論