No.2ベストアンサー
- 回答日時:
「マイコンとパソコンは通信できるようになっている」のですよね。
これが具体的にはどういう通信なのかにもよりますが。
たとえば、putchar('A'); で、TeraTerm 側に、A が表示されるというようなものが準備できているということでしょうか。
さらに、10msごとに割り込みを発生させるプログラムは既に作成済みということですね。
だとすると、10msごとに、関数(下記の例では、void 10Int())を呼び出すことができます。
printf() で UART にデータを送る事ができるのであれば、下記のソースで良いかなと思います。
あと、TeraTerm で受けるとすると、"\n" じゃなくて、"\r" のほうが一般的かもしれません。
voltile int m10Count;
int main()
{
int secCount;
m10Count = 0;
// ここでタイマ割り込みを許可
// 具体的な方法は処理系により様々
while(1)
{
if(checkDiff != (m10Count / 100))
{
secCount = m10Count / 100;
printf("%d秒後\n", secCount);
}
}
return 0;
}
#pragma interrupt(m10Int)
// ここの指定は処理系により様々
void m10Int()
{
m10Count++;
}
UARTから出力できるようなprintf()がない場合は
sprintf() があるなら……
char buff[64];
sprintf(buff, "%d秒後\n", secCout);
for(i = 0; buff[i]; putchar(buff[i++]));
という感じで。(putchar() は具体的にパソコンに1バイト送信する関数に置き換えるとして)
sprintf() もない場合には……
たとえば、http://www.nest4.net/tec/strnum.html で紹介されているライブラリを使って、
char buff[] = "xxxx秒後\n";
toStr(secCount, buff, 4, 10);
zeroSuppress(buff);
for(i = 0; buff[i]; putchar(buff[i++]));
こんな感じでいけるかと。
No.8
- 回答日時:
さて、この状態で、出力が発生するためには、m10Count が、カウントアップされる必要があります。
ということは、m10Int() が呼び出される必要があります。
「10msごとに割り込み要求を出すプログラム」で、10msごとに m10Int() を呼び出すようにすれば、OKです。
具体的な方法は、それこそマイコンの機種・ボードの回路によって変わってきます。
「割り込みプログラムは作成した」という前提で回答してきましたので、これ以上はご遠慮いたします。
No.7
- 回答日時:
スペースも含めて、正確に書いていただいたおかげで助かりましたが……。
!= はこれでひとつの演算子です。! と = の間にスペースは入れません。
== や ++ や += と同じ(意味は違いますけど)
この回答への補足
何度も回答すいません
スペースを消したらコンパイルできました。
でも
teraterm上では何も動かなくなってしまいました。
どうしたら・・・・・
for文のほうも必要なのでしょうか
また、for(i = 0; buff[i]; putchar(buff[i++]));
分のiというのは何を表しているのでしょうか?
本当に申し訳ないのですが、できれば回答お願いします。
...
No.6
- 回答日時:
TeraTerm 上では、望んだものではないにしろとにかく動いていたわけですよね?
それでいて、「ソースの ! が認識されない」のですか?
そもそも、「「!」の記述が認識されません。」とはどういう意味でしょうか?
エラーですか? 警告ですか? それでしたら、正しい内容を書いてください。
それでないのなら、「認識されない」とはどういうことで、「認識されない」と判断した根拠はどこにあるのか?
そういったことがないと、さすがに回答不能です。
この回答への補足
わかりにくい補足で申し訳ないです。
if(secCount ! = (m10Count / 100))の部分なのですが、
「!」を抜いたらコンパイルすることができるのですが、
if(secCount ! = (m10Count / 100))のままだと
syntax errorと表示されます。
何度もすみませんが回答お願いします。
No.5
- 回答日時:
さらに、2カ所ほど訂正です。
voltile int m10Count; は正しくは、 volatile int m10Count;
sprintf(buff, "%d秒後\n", secCout); は、正しくは、sprintf(buff, "%d秒後\n", secCount);
です。
いずれも、このままだとエラーになるので見当は付いたとは思いますが。
だめですね、こんなところで間違えるようでは>自分。
No.4
- 回答日時:
No.3 ですが……。
> teraterm上で
> 「0 b .」とずっと表示され続けてしまいます。
ずっと表示され続けるということですが
1)どのくらいの頻度でしょうか?
1秒間隔で表示されるのなら、単なる表示の問題
ずら~と表示されるのなら、表示の条件を作っている部分(if(secCount != (m10Count / 100)) とその次の、secCount = m10Count / 100;)が変
1秒じゃない、一定の間隔なら、割り込みの設定が変
くらいの切り分けはできて欲しいのですが。
2)表示の点
まずは、putchar() で、A を毎回表示してみましょう。
正しく表示できるのなら(タイミングも含めて)漢字の扱いとか、buff 周りの設定が変
こんな所かなとは思いますが。
まさかとは思いますが、if(checkDiff != (m10Count / 100)) の間違いは修正されましたよね?
この回答への補足
何度も回答ありがとうございます。
まず、プログラムのソースなんですが、
「!」の記述が認識されません。
別の書き方はないでしょうか?
No.1
- 回答日時:
マイコン全般に使える、汎用的な方法はありません。
開発環境によってはprintf()が勝手にUART出力されるようなものもありますが、基本的にはUART通信の部分も自分で書いて出力することになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シリアル通信のデータ受信につ...
-
H8マイコンでのカウントタイマ...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ものづくりに向いているプログ...
-
エクセルVBAのIf,Then 構...
-
符号無し整数xを右にnビット回転
-
verilog 符号付加減算(最上位...
-
アセンブラからC言語に変換する...
-
ライン数とステップ数の違いは?
-
delph5 ボタンの色を変更するに...
-
ビットシフトってどんな時使うの?
-
シーケンサのデータレジスタD...
-
CASLIIでかけ算
-
エンディアンについて。
-
ビットの反転?
-
電化製品って何言語?
-
PICのアセンブラからC言語へ変...
-
MASMの擬似命令「ASSUME」について
-
SRAMとレジスタの違いは何でし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PICでパルス数をカウントし、カ...
-
PICでパルス数をカウントする方法
-
C言語によるウェイト
-
Nios II 5.1IDEでの7セグメント...
-
PICでスピードメーターを作...
-
PICの入出力切り替えの時間がプ...
-
組み込みマイコンの誤動作について
-
RTCの通信方法(I2C、S...
-
入力回数のカウントをする方法
-
PICマイコンを使った分解能1μs...
-
SHマイコンについて
-
Z80CPUを用いてステッピングモ...
-
H8マイコンでのカウントタイマ...
-
arduinoで信号間の時間を計測し...
-
16 bit timerで1秒を計る
-
C言語による赤外線受信
-
エクセルVBAのIf,Then 構...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
おすすめ情報