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