當前位置:
首頁 > 知識 > AVR開發 Arduino方法(一)埠子系統

AVR開發 Arduino方法(一)埠子系統

Arduino UNO R3使用的主處理器ATMega328P上有3個8位的輸入/輸出埠,它們分別是PB,PC和PD。Arduino IDE提供的Blink示例可以幫助我們了解埠的數字輸出功能:

1 int led = 13;
2
3 void setup {
4 pinMode(led, OUTPUT);
5 }
6
7 void loop {
8 digitalWrite(led, HIGH);
9 delay(1000);
10 digitalWrite(led, LOW);
11 delay(1000);
12 }

這個示例使Arduino 13(PB5)引腳上的LED閃爍。與數字輸出相關的Arduino庫函數有:

pinMode(pin, mode):配置指定引腳為輸入或輸出

pin:指定引腳

mode:OUTPUT(輸出),INPUT(輸入)或INPUT_PULLUP(帶上拉電阻的輸入)

digitalWrite(pin, value):從指定引腳輸出電平

pin:指定引腳

value:LOW(低電平,0V),HIGH(高電平,5V)

ATMega328P的每個埠都由3個相關寄存器控制,方向寄存器DDRx(x = B, C, D)用於指定埠引腳方向,若向其中某位寫入1,則該位控制的引腳被設置為輸出,寫入0則為輸入。輸出寄存器PORTx(x = B, C, D)在該埠引腳被設置為輸出時,寫入1則輸出高電平,寫入0則輸出低電平;在該埠引腳被設置為輸入時,寫入1則對其啟用上拉電阻,即在該埠引腳被懸空時默認輸入高電平。輸入寄存器PINx(x = B, C, D)在埠引腳被設置為輸入時存儲該埠引腳的輸入,若埠引腳輸入高電平,則寄存器相應位被置為1,輸入低電平則置為0。

通過直接訪問寄存器改寫以上程序:

1 void setup {
2 DDRB |= (1 << PB5);
3 }
4
5 void loop {
6 PORTB ^= (1 << PB5);
7 delay(1000);
8 }

向電路中添加一個按鍵,讓它的兩端分別連接在Arduino 2(PD2)引腳和GND(地)引腳上(如下所示)。

AVR開發 Arduino方法(一)埠子系統

這樣使得按鍵在沒有按下時2(PD2)引腳處於懸空狀態,因此需要將2(PD2)引腳設置為帶上拉電阻的輸入模式:

1 const int buttonPin = 2;
2 const int ledPin = 13;
3
4 int buttonState = 0;
5
6 void setup {
7 pinMode(ledPin, OUTPUT);
8 pinMode(buttonPin, INPUT_PULLUP);
9 }
10
11 void loop{
12 buttonState = digitalRead(buttonPin);
13
14 if (buttonState == HIGH) {
15 digitalWrite(ledPin, HIGH);
16 }
17 else {
18 digitalWrite(ledPin, LOW);
19 }
20 }

除了pinMode函數外,與數字輸入相關的Arduino庫函數有:

digitalRead(pin):從指定引腳上讀取電平

pin:指定引腳

函數返回LOW(低電平,0V)或HIGH(高電平,5V)

通過直接訪問寄存器改寫以上程序:

1 void setup {
2 DDRB |= (1 << PB5);
3 DDRD &= ~(1 << PD2);
4 PORTD |= (1 << PD2);
5 }
6
7 void loop {
8 if (PIND & (1 << PD2)) {
9 PORTB |= (1 << PB5);
10 } else {
11 PORTB &= ~(1 << PB5);
12 }
13 }

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

spring boot 項目筆記2一自定義配置文件的讀取
Linux常用命令——顯示文件列表
es6系列教程-函數的默認參數詳解

TAG:達人科技 |

您可能感興趣

受AlphaGo啟發,AI重建量子系統新方法登上Nature Physics
jQuery UI API 類別-方法(Methods)
jQuery UI API 類別-方法重載(Method Overrides)
jQuery UI 小部件(Widget)方法調用
CodeWarrior IDE使用Tips-使用burner將elf文件轉換生成HEX和BIN文件的方法和步驟詳解
撲朔迷離的黑色版本OFF-WHITE x Nike Air Force 1迎來官方發售!入手方法告訴你!
JSON編程的parse() 方法
Ray Dalio的思考方法
DeepMind於Nature子刊發文提出非對稱博弈的降維方法
Acta Neuropathol Commun:科學家們開發出診斷神經退行性疾病的新方法
Unit 5 Geophysical Methods of Exploration 地球物理勘探方法
Whelen案例,六西格瑪設計DMADV方法
MyBatis使用筆記——原始方法開發dao層
RED VELVET節目公開吵架解決方法!成員大讚Irene隊內和平維持者
python開發利器,python shell和vim中都需要的tab補全方法
解決Electra越獄顯示Error:topanga錯誤的方法!
iPhone X 添加Hoem鍵方法簡單方便!
iPhone iOS 9系統源碼已被泄露至GitHub 越獄者或可找到新方法
SOS大逃殺無限卡loading解決方法
蘋果iPhone打開簡訊iMessage就死機怎麼辦?附解決方法