組み込み開発でよく使うbit演算子まとめ

組み込み基礎

はじめに

こんちゃす!

今回はお勉強回です。

bit演算子ってやつです。マイコンを使用した組み込み開発を行っているとレジスタ操作などでbit単位で演算することは必須ですよね。

私くろべこはよく演算子の機能を忘れるので、その度にグーグル先生に聞いて調べていることが多々あります。

ので、今回はよく使用するbit演算子のまとめと使い道を紹介という名の備忘録記事になります。

bit演算子まとめ

bit演算子一覧

機能 演算子 使用例
OR | 指定bitのセット
AND & 指定bitの取り出し, NOTと併用した指定bitのクリア
XOR ^ bit反転
NOT ~ bit反転, bitクリア
ビットシフト(右) >> ビットシフト
ビットシフト(左) << ビットシフト

よくある表ですね。+αとして、使用例をつけてみました。次の項で詳細の説明をしますね。

今回は教材用のデモコードとして以下のコードを使用しながら進めていきたいと思います。

デモの回路はPB0~PB4にLEDをつけてみてください。

bit演算デモコード①

デモコードなのですが、ATtiny13のPORTBを使用して実際にbit演算の確認を行っていこうと思います。使用するbitはPB0~PB4です。初期状態はPB1以外はHIGHをしています。

1.初期状態

PORTB = 0b00011101;

2.OR ( | ):演算式の左辺と右辺のどちらかが1だったらbitをセットする

1bit目指定でセットします。

3.AND( & ):演算式の左辺と右辺の両方が1だった場合bitをセットする

NOTと組み合わせて0bit, 1bitをクリアします。

4.XOR( ^ ):演算式の左辺と右辺で値異なる場合bitをセットする

0bit, 1bitを反転します。

5.bit右シフト(>>):右辺の値分左辺のビットを右にシフトする

1bitずつ右にシフトします(計四回)。

6.bit左シフト(<<):右辺の値分のビットを左にシフトする

1bitずつ左にシフトします(計四回)

7.NOT( ~ ):論理を反転します

PORTBの論理を反転します。

bit演算デモコード②

ここではデモコードで紹介した演算子の組み合わせを紹介していきます。初期状態はデモコード①と同じです。デモコード①をコメントアウトしてご使用ください。

1.まとめてのbitクリア

4bit分を2bit左にbitシフトさせて、bit2~bit5をクリアします。

2.まとめてbitセット

4bit分を1bit左にbitシフトさせて、bit1~bit4をセットします。

おまけ

最後にANDを使用したbit状態の抽出を紹介して終わります。

デモコード①と②はコメントアウトしてください。

また、回路はPB0にLEDを取り付けて、PB4とGNDとの間にスイッチのみを入れてください。(LEDはつながないでください)

何をやるのかというとPB4をbit入力ピンとしてます。そしてANDを使用し、PB4のbit状態を抽出して、そのbit状態によってPB0のLEDを光らせていきます。

PB4は内部プルアップさせているのでスイッチが押されていないときは1です。

演算式ではいったんPINBのbit状態を反転させて4bit右にシフトさせます。これでPB4のbit状態がPB0に移動します。そして1とANDで比較します。もしもスイッチが押されている場合は1がstate変数にセットされて、押されていない場合は0がセットされます。

LEDの点灯制御に関してはSWITCH関数で分岐させています。

以下の動画に内容をまとめておりますのでご覧いただければと思います。

おわりに

今回は備忘録としてbit演算子のまとめを行いました。

これで機能を忘れたときも自分のブログを見に来ればよくなりました。

というくらい私の為だけの記事だったかもしれません。でも、使用方法とかはよく使うものなので覚えておいて損はないかと思います。

以上です!では!

コメント

タイトルとURLをコピーしました