Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

少しはCのお勉強も – ビットシフトとキャスト –

久しぶりにPIC16F1827を使ってMCCでAD変換をやってみた。
PIC16F1827でAD変換して値に応じてLED点灯

MCCの吐くAD変換の結果を返す部分は、

となってる。

はゼロになっちゃうんじゃないの?
と思った。
そんなわけないのでカラクリを考えてみた。

後々16ビットに変換(キャストというらしい。)されるんだけど、ビットシフトの際に先に16ビットに変換されるお約束らしい。

あと、キャストと言えば(型)というのを頭に書けばいいらしく、ここではそれが(adc_result_t)となっている。
adc_result_tって何?
と思ってadc.hを見てみると、

と書いてあった。
このtypedefというのは、既存のデータ型に新しい名前をつけるものらしい。
なので、adc_result_tはuint16_t型のことってわけ。
ちなみに「2バイトの符号なし整数」なんだって。
「MPLAB XC8 C Compiler User’s Guide」で斜めに検索してみたけどuint16_tってのはヒットしなかった。
こういう表は載ってた。

このエントリーをはてなブックマークに追加

Posted under: PIC16F1827


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.