//ステッピングモータの回転
//右に2回転、停止、左に1回転、停止これを3回繰り返す
//ITUO使用、フラグが立つのを待つ
//10msごとにモータに出力
//str_4.c
#include <3048f.h>
void ioinit(void)
{
PB.DDR = 0xff;
}
void ituinit(void)
{
ITUO.TCR.BIT.CCLR = 1;//カウンタクリア要因
ITUO.TCR.BIT.TPSC = 3;//タイマプリスケーラ 25MHz/8=3.125MHz
ITUO.GRA = 31249;//3.125MHz/31250=100Hz、10ms、100pps
ITUO.TIER.BIT.IMIEA = 0;//IMFAフラグによる割り込み禁止
}
void wait(void)//停止時間
{
Long t=200000;
while(t--);
}
int main(void)
{
int i = 3;//繰り返しカウンタ
int p;//回転パルス数
int md = 0x11;//モータ出力データ
ioinit();
ituinit();
PB.DR.BYTE = md;
wait();
ITU.TSTR.BIT.STR0 = 1;//タイマスタート
while(i--){
for(p=0;p<96;p++){//2回転
PB.DR.BYTE = md;
md <<= 1;//右回転
if(md == 0x110)//4回シフトしたかの判断
md = 0x11;//4回シフトで初期値に戻す
while(!ITU0.TSR.BIT.IMFA);//フラグが立つのを待つ
ITU0.TSR.BIT.IMFA = 0;//フラグクリア
}
wait();//少し停止
for(p=50;p>0;p--){//1回転、1パルス多くした
PB.DR.BYTE = md;
md >>= 1;//左回転
if(md == 0x08)//4回シフトしたかの判断
md = 0x88;//4回シフトで初期値に戻す
while(!ITU0.TSR.BIT.IMFA);//フラグが立つのを待つ
ITU0.TSR.BIT.IMFA = 0;//フラグクリア
}
wait();
}
PB.DR.BYTE = 0x00;//モータ励磁OFF
while(1);//ここでとまっている
}
このプログラムのフローチャートがわかりません。
No.1ベストアンサー
- 回答日時:
上記URLでも回答しましたが、学校の課題でしょうか?
プログラム中のコメント文を順番通りに並べれば
フローチャートが完成します。
例えばプログラムの最後の部分は以下のようになります。
・4回シフトしたか?
・Yesなら4回シフトで初期値に戻す
・フラグが立つのを待つ
・フラグクリア
・50回繰り返し
課題の丸投げはあまりよくありませんので補足をお願いします。
何がわかっていて、何がわからないのですか?
・int
・for
・while
・>>=
などの文の内、どれがわからなくて
プログラムのどの部分がわかるかなどを補足してください
No.2
- 回答日時:
もうソースコードが手元にあって、A4の紙1枚に印刷できる程度の分量なのですよね。
そしたら、何のためにフローチャートが必要なのですか?フローチャートの用途は主として
(a) プログラム設計時、処理の流れを考えるため
(b) 他人に処理の流れを説明するため
(c) 他人が設計したプログラムを理解するため
になるかとおもいます。
poscam33さんの用途は (c) ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- その他(生活家電) 僕は今でもMDコンポで、MDをかけているんですが、今の時代MDをかける家庭はとても少ないのでしょうか 11 2022/08/11 08:38
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で%を使わない余りの出し方
-
intとlongは同じ?
-
OpenCVによる4値化について
-
OpenGLの惑星プログラム
-
unsigned int に0xffffffを代入...
-
画像の拡大・縮小
-
2の補数を計算するプログラム
-
迷路を脱出する経路探索プログ...
-
ヒストグラム均等化処理プログラム
-
関数とビット列
-
C言語のプログラムについて(...
-
再起呼び出しの回数をカウント...
-
C言語の問題
-
分数の足し算をさせるプログラ...
-
C++で表を作成したいのです ...
-
16bitで乱数を生成する方法
-
c言語8クイーン問題が分かりません
-
3のつく数と3の倍数を表示 C言語
-
PIC16F88マイコンのC言語プログ...
-
C言語で簡単なパックマンゲーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
C言語で%を使わない余りの出し方
-
迷路を脱出する経路探索プログ...
-
画像の拡大・縮小
-
分数の足し算をさせるプログラ...
-
C言語で簡単なパックマンゲーム...
-
C++で表を作成したいのです ...
-
条件が多い場合
-
複数の共有メモリの作成
-
ヒストグラム均等化処理プログラム
-
3のつく数と3の倍数を表示 C言語
-
argvのNULLチェック
-
乱数で交互に偶数、奇数が、、、。
-
プログラミングに関して
-
OpenCVによる4値化について
-
whileとifを使い偶数を出すには
-
16bitで乱数を生成する方法
-
再帰処理をループ処理に変換
おすすめ情報