
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ミリ秒周期を守り続けることは難しくなる。
すばやい回答ありがとうございます。
最初にprintf文は表示ごとに行を進めたいと思っています。
また、タイマーの周期なのですが、1秒が簡単にできるのであれば、まずは周期1秒からはじめてみたいと考えています。
プログラムのソースの例だけでも、よろしかったら記述お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 ① 5秒間 1秒間隔で点滅を繰り返す ② 3秒間 0.5秒間隔で点滅を繰り返す ①→②→①→ 5 2022/05/03 23:37
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- C言語・C++・C# gettimeofday() と localtime_r() を使って現在の日時をマイクロ秒単位で表 2 2022/10/26 21:15
- その他(ソフトウェア) OMRON PLC CP2Eのプログラム 1 2022/11/24 10:57
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- C言語・C++・C# C言語 コードを書いたのですが上手く実行出来なかったです。どこが間違ってますか? 【作成したいもの】 1 2022/05/04 11:36
- 冷蔵庫・炊飯器 炊飯器のタイマー 7 2022/12/15 21:05
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 物理学 ここで回答している相対論信者って全員、相対性理論を理解できてないですよね? 4 2023/03/08 12:40
- その他(プログラミング・Web制作) ラダー図で0秒のタイマーが複数ある理由は何ですか? 1 2023/05/31 22:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語で2000年以降カレンダーを...
-
c言語でAからZまでを表示する...
-
【C】fizzbuzzのトリッキーなコ...
-
strcmp
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
コマンドラインに出力した文字...
-
8人分のテストの点数を入力し、...
-
コンパイルエラーについて
-
CTRL+Dでループを抜けるには
-
(C言語)めちゃくちゃな値にな...
-
cshの文字列操作(0埋め)
-
テキストカーソル位置の取得
-
コマンドプロンプトがすぐ消える
-
printfの出力内の文字をdefine...
-
scanfに文字が入力されたときに...
-
台形の面積を求めるプログラム
-
改行について 1行に何個かづ...
-
WM_CLOSEで閉じれないウィンド...
おすすめ情報