2020年8月14日金曜日

おしゃべり時計withUSB開発日誌(6)、printfで2進数表示。

 RTCCのキャリブレーションの設定についてコーディングしたので、デバッグでコンソールに値を2進数で表示したい。

しかしながら、c言語のprintfには、2進数の出力フォーマット指定が無い。

そこでネットでいろいろ調べて下記のよにコーディングを追加して2進数で表示するようにした。

---------------------------------------------------------------------------------------------

void printb(unsigned int val) 

{

    unsigned int mask = (int)1 << (sizeof(int) * 8 - 1);

    do 

    {

        if ( val & mask ){

            xputs("1");

        }

        else{

            xputs("0");

      }

    }

    while (mask >>= 1);

  

}


void putb(unsigned int v) 

{

  xputs("0b"), printb(v), xputs("\n");

}

---------------------------------------------------------------------------------------------


これで、次のようにコーディングすれば、下記のように出力される。
xputs("Cal Value = "); 
putb(RTCCONbits.CAL);



20200730(+2.0)




0 件のコメント:

コメントを投稿

pic16F18326のNCO1の機能を使った信号発生器

pic16F18326のNCO1の機能を使った、信号発生器をテストしました。 8Mhzのセラクロックを内部PLLで4倍し、FOSC 32Mhzを基に動いています。 pic16FのNOC1の仕様上は上限16MHz程度まで発信できるようですが、試していません。 ロータリーエンコーダー...