DDRレジスタとはマイコンのピンを出力か入力か設定するレジスタです。
入力…マイコンにスイッチやセンサなどを接続した際、マイコンのピンにかかっている電圧がHighかLowか識別する時に設定します。
出力…マイコンにLEDなどを接続した際に、マイコンのピンの電圧をHighかLowにする時に設定します。
いま、ピンの電圧において、High・Lowという表現しましたが、これらはなにかというと、入力では、マイコンのピンはそれにかかっている電圧がVcc(電源電圧)とGNDどちらに近い値の状態か識別することしかできず(今後AD変換というものを行うとVccとGNDの間の電圧も識別できるようになりますが今回は2種類の状態しか識別できないと思っておいてください)、出力では、マイコンのピンの電圧をVccかGNDの2種類の状態にすることしかできないのですが、このときのVccに近い状態をHigh、GNDに近い状態をLowといっています。
DDRレジスタを書き換える際には、DDR◯というレジスタに設定値を代入します。
◯には設定したいピンのポートのアルファベットを入れてください。(例:DDRB,DDRD)
ポート…マイコンのピンは、グループ分けされていて、そのグループをポートといい、ポート内のピンはそのポートの 番という風に表現されます。例えば、データシートでのピン配置図でPB3というピンがありましたが、これはポートBの3番ピンを表しています。
次は、DDRレジスタに代入する設定値について説明します。
DDRB = 0b11110000;
上記のコードを書くと、ポートBのレジスタは書き換えられるわけですが、実際、ポートB内のピンそれぞれがどのように
入出力設定されるかというと、PB0~PB3が入力、PB4~PB7が出力に設定されます。
ここで、覚えてほしい事は2つです。
1つ目…設定値を2進数で表した時の各Bitはポート内の各ピンに対応している事
2つ目…ポート内のピンに対応する設定値のBit目の数字が0なら入力に、1なら出力にそのピンは設定される事
|
|
PB7 |
PB6 |
PB5 |
PB4 |
PB3 |
PB2 |
PB1 |
PB0 |
DDRB = |
0b |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
上記の例でみると、設定値の3bit目は、0になっていますね。つまり、PB3は入力設定になっているわけです。
このとき、DDRレジスタに代入する設定値の値はどんな表記でもいいのですが、2進数表記にしておけば、ポート内のピンでどれがどんな設定になっているかわかりやすいので、2進数で表記することをお勧めします。
最終更新:2015年08月17日 05:52