質問: c言語 タイマーのソースについて c言語でタイマーを使ってprintf文を記述することで 「1秒経過」、「2秒経過」、「3秒経過」のように表示させたいのですが、どのように表示させるのでしょうか? タイマーの間隔は、できれば1 [ms]だとうれしいてす。 回答お願いします
回答: > まずはc言語のプログラミングでの動作を実証してみてから、 > マイコンへの書き込みを考えています。 といわれても、処理のロジックをパソコンのcで実証するということはありますけど、タイマのようなシステムよりというか、ハードウエアよりのものは、なかなか。 とはいえ、パソコンで秒単位ということであれば、 #include #include int main() { time_t last = time(0); time_t next; int pastsec = 0; while(1) { if (time(&next) != last) { last = next; pastsec++; printf("%d 秒経過\n", pastsec); } } return 0; } こんなので可能です。 同じように標準の time.h や time() 関数があれば、同じように動きますが。 と書きましたが、実際の所、このコードも、http://oshiete.goo.ne.jp/qa/6396223.html で書いたコードもそっくりさんではあるのですね。 time() 関数が1秒ごとに異なる数値を返せば、とりあえず、このプログラムは動くわけです。 たとえば、 volatile int m10count; void m10int() // この関数は 10ms 間隔で割り込まれる { m10count++; m10count %= 10000; // オーバーフロー対策(時間の長さによってはこれ必須) } time_t time(time_t *timer) { *timer = m10count / 100; return *timer; } とすれば、1秒単位程度であれば、main() は、同じコードで動かすことができます。