
No.3ベストアンサー
- 回答日時:
> まずはC言語のプログラミングでの動作を実証してみてから、
> マイコンへの書き込みを考えています。
といわれても、処理のロジックをパソコンのCで実証するということはありますけど、タイマのようなシステムよりというか、ハードウエアよりのものは、なかなか。
とはいえ、パソコンで秒単位ということであれば、
#include <stdio.h>
#include <time.h>
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() は、同じコードで動かすことができます。
No.4
- 回答日時:
> 指摘された質問と同じものです。
> まずはC言語のプログラミングでの動作を実証してみてから、
> マイコンへの書き込みを考えています。
なんとなく。
本当に必要なのは,C言語でどうこうではなくて,
マイコンの周辺デバイスの使い方とか,レジスタの設定の仕方といった,
低レベル(ハードウェアに近いという意味です)な話ではないのでしょうか?
No.2
- 回答日時:
この回答への補足
何度も回答ありがとうございます。
指摘された質問と同じものです。
まずはC言語のプログラミングでの動作を実証してみてから、
マイコンへの書き込みを考えています。
No.1
- 回答日時:
幾つかの課題がある。
まず、printfで書くというのは、表示ごとに行を進めていくの? それとも同じ位置で数値だけ書き換えるの? 前者だったら、タイマ周期でprintfを呼び出すだけ。後者だとコンソール依存になる。コンソールの持つカーソル制御機能を使うので。
次に、タイマーの周期。1秒周期だとsleep関数などで比較的簡単に実装できる。ミリ秒単位だとリアルタイムOSでないとタイマー待ちでは難しい。OSの最小タイマ刻みが10ミリ秒とかいうことが平気であるので。そうすると待てないのでループで時刻を監視して表示更新(いわゆるビジーウェイト)という方式になるが、これでもディスクアクセスなどOS処理にCPUが取られて1ミリ秒周期を守り続けることは難しくなる。
この回答へのお礼
お礼日時:2010/12/20 17:37
すばやい回答ありがとうございます。
最初にprintf文は表示ごとに行を進めたいと思っています。
また、タイマーの周期なのですが、1秒が簡単にできるのであれば、まずは周期1秒からはじめてみたいと考えています。
プログラムのソースの例だけでも、よろしかったら記述お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CPU温度・負荷等を調べるには
-
C言語プログラミング 漸化式に...
-
既約分数の表示プログラム
-
摂氏の値を計算するプログラム...
-
すごろくに使用するサイコロ
-
Cプログラム
-
printf()文の書式
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
プログラムでの数字につく”f”の...
-
「Aに対するBの割合」と「Aに対...
-
C++のfor文について
-
変数とパラメータとは違うもの...
-
C言語のプログラミングですが、
-
LNK2019:未解決の外部シンボル ...
-
main.c:7:43: warning: implici...
-
For文の終了値を関数にしても問...
-
2÷3などの余りについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
CTRL+Dでループを抜けるには
-
Cプログラムについて
-
コマンドラインに出力した文字...
-
WM_CLOSEで閉じれないウィンド...
-
C言語の&に関する質問
-
すごろくに使用するサイコロ
-
文字と数字の判定について
-
printf( " %2d", p * q );
-
【C言語教えてください】sin波...
-
%P と %X の違い
-
C言語の勉強しています。すみま...
-
strcmp
-
c言語でAからZまでを表示する...
-
unsigned int型について
-
(C言語)めちゃくちゃな値にな...
-
printf で二進表示を行いたい。
-
プログラミング C言語 課題でプ...
-
c言語で2000年以降カレンダーを...
おすすめ情報