dポイントプレゼントキャンペーン実施中!

//ステッピングモータの回転
//右に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);//ここでとまっている
}
このプログラムのフローチャートがわかりません。

A 回答 (2件)

http://okwave.jp/qa3576919.html
上記URLでも回答しましたが、学校の課題でしょうか?

プログラム中のコメント文を順番通りに並べれば
フローチャートが完成します。

例えばプログラムの最後の部分は以下のようになります。

・4回シフトしたか?
 ・Yesなら4回シフトで初期値に戻す
・フラグが立つのを待つ
・フラグクリア
・50回繰り返し

課題の丸投げはあまりよくありませんので補足をお願いします。
何がわかっていて、何がわからないのですか?
・int
・for
・while
・>>=
などの文の内、どれがわからなくて
プログラムのどの部分がわかるかなどを補足してください
    • good
    • 0

もうソースコードが手元にあって、A4の紙1枚に印刷できる程度の分量なのですよね。

そしたら、何のためにフローチャートが必要なのですか?

フローチャートの用途は主として
(a) プログラム設計時、処理の流れを考えるため
(b) 他人に処理の流れを説明するため
(c) 他人が設計したプログラムを理解するため
になるかとおもいます。

poscam33さんの用途は (c) ですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!