2012年3月16日金曜日

HI-TECHでprintfとかscanf

PICでデバッグしたい時にいちいち定数を書き換えてコンパイルしなおして焼き直すというのは面倒ですよね
毎回上手に焼けましたぁってなるまで待つのもめんどくさいし

ってことで PICでscanfが使えれば便利

どうやって使うか
シリアルポートの場合
char getche(void) { while(!RCIF); return RCREG; }

void putch(unsigned char ch) { while(!TRMT); TXREG = ch; }
の2行を追加すればおk
STDOUTはputch
STDINはgetcheです
出力がchだからといって入力もchとは限らない
紛らわしい...

で 実際に使うには

普通にC言語のコンソールアプリと同じです
scanf("%d", &num);
でnumに整数を読み込んで
printf("%d\r\n", num);
でnumを文字列にして書きだす

ただまぁscanfとかの問題もそのまま残ってるはずなので
製品には使用しないほうがいいよなぁ
もっとも使う用途も思いつかないけど

↑のget/putはとにかく簡単に済ます方法なので
速度とかを優先するならこのコードではダメです

例えば9600bpsで通信した場合1バイト送/受信するのに1mS位かかります
これはかなりのロス
バッファとか割り込みとかを活用すれば
100バイトでもメインのコードは1mSかからずに処理できるので
ただそうすると割り込みやら色々めんどくさいんだよなぁ


とりあえず PICで数値とか読み取る方法
覚書でした

0 件のコメント:

コメントを投稿