AVR基礎(I/Oポート)

I/O ポートを使うには下記レジスタを使う。

1. DDRx (方向レジスタ)で入力するのか、出力するのかを設定。1を立てたら出力。

2. PINx (入力レジスタ)で入力の取得

3. PORTx (出力レジスタ)で出力

出力する場合は、BV() を使うとそのビットのみを設定できるので便利。

//PA1(pin4) にスイッチ、PA0(pin5) に LED を接続した場合

#include

#include

uint8_t switch_a;

int main(void)

{

DDRA = 0b00000001; //PA0 = LED

PORTA= 0b00000010; //LED Off(bit 0), Pull-up register on for input (bit 1)

while (1)

{

switch_a=PINA;

if (~switch_a & 0b00000010) {

//PORTA = 0b00000011;

PORTA |=_BV(0); //1を 0 ビットにセット

}

_delay_ms(1000);

//PORTA=0b00000010;

PORTA &= ~_BV(0); //0 を 0 ビットにセット

}

return 0;

}

参照 ロボット倶楽部

http://www.ugs.kochi-tech.ac.jp/robot/lobby/parts/manual.htm