今天就寫幾個demo代碼,來更加深入的瞭解avr單片機的io口的操作。
1.流水燈的實現
方法一:(這是寫的第一個demo,就寫全一點,後面的demo代碼就只寫主要的部分了。)
簡單的說明一下程序:
注意我這個8個燈均是低電平點亮,這個程序是一個典型的操控總線的程序
首先,定義一個數組,注意數組的取值,其實就是8個燈的循環。
在操作io前,一定要初始化端口,這個在教程1中有詳細的講解。
直接用for循環,去操作數組裡面的數,就可以實現流水燈了,是不是特別的簡單呢。
方法二:
也簡單的說明一下程序吧:
BIT()這個函數,可用來對位(bit)的操作。這個函數在頭文件#include
在for循環裡面,首先使用按位取反,其實就是清位,第一位就亮了
延遲一段時間後,按位或,其實就是置位,將電平拉高,燈其實就滅了。
就這樣其實就循環起來了。
方法三:
簡答的說明一下:
按位異或,其實就可以翻轉電平,兩個翻轉不就實現一次亮滅了嗎。
方法四:
這個其實也沒啥說明了,和方法三本質上一樣。
在說一個吧,語句DDRA |= BIT(DDRA3),這個語句是正確的
DDRA |= BIT(DDRAi) 這個就是錯誤的了,這個有很多人在循環那弄錯。
2.讀端口電平就不多說了,假如 a = PINA , 這就把A口的數據讀到a裡面了。
好了,io口的操作就說這麼多了。
閱讀更多 小5嵌入式 的文章