--/--/--  --:--    スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
というわけで、テスト期間中の現実逃避第14弾ぐらい?
AVRのIOポートの使い方(C言語)
って考えてみればちゃんと書いてませんでしたね。
AVRのWEBページには書きましたが、今回はマイコンは使える人向けに、
マイコンの概念さえ知っていれば、簡単にわかるはず・・・。

というわけでやってみましょう!

注記:○=ポート番号、△=16進数、□=変数、◇=ビット

DDR○ = 0x△△;
DDRは指定したポートのビットを入力か出力かを決定するレジスタです。
0を入れれば入力に、1を入れれば出力になります。

PORT○ = 0x△△;
PORTは指定したポートの出力でHを出すかLを出すか決定するレジスタです。
DDRで出力に設定されているビットに1を入れるとHを出力、0を入れるとLを出力します。
また、DDRで入力に設定されているビットに1を入れると、そのピンはプルアップされます。

□ = PIN○;
□という変数に現在のピンの入力状況を代入します。
正直言って、ポート全体の状態入力はあまりしません。なのでほとんど使いません。

ここからポートのビットごとの操作になります。

必ず以下の3行をプログラムの最初またはヘッダファイルを作ってincludeなどしてください。
#define sbi(PORT,BIT) PORT|=_BV(BIT)
#define cbi(PORT,BIT) PORT&=~_BV(BIT)
#define ibi(sfr, bit) (bit_is_set(sfr,bit)?1:0)

これをしないと、書くのが面倒です。

sbi(PORT○,P○◇);
指定したポートの指定したビットのレジスタに1を入れます。

cbi(PORT○,P○◇);
指定したポートの指定したビットのレジスタに0を入れます。

□ = ibi(PIN○,P○◇);
指定したポートの指定したビットの入力状態を□という変数へ代入します。
このとき、もしHだったら1を、Lだったら0が入ります。

はい、こんだけです。
これでIOポート使えますね。
もっと詳しく書いたのを見たいという人は、
WEBページを参照ください。もう少しちゃんと書いてあります。

(WEBページ作り直しにより一時的に消しました)
WEBページの方にポートの入出力について書き直したものを掲載しました。

上記は、ある程度マイコンを知っている人なら理解できるはず・・・
まあもし、わからない・間違え・批判等ありましたらコメントくださいな。
さーて現実逃避もココらへんで終わりかな?
テス勉~テス勉~orz
Secret

TrackBackURL
→http://amenotiyukizora.blog76.fc2.com/tb.php/112-74da434d
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。