@このプログラムは,めいれいの使い方のサンプルです. @部分々々はともかく,全体的にはフローチャートがめちゃくちゃなので,実際に実行す @るとたぶん暴走します(笑) @「ほんやく」はできますので,生成するwork.src等と見比べて理解してください. @ まきもののコメントは,文の最初に;や;や@(大文字)をつける.アセンブラの @ような「文末に ; 」はダメ :はじめのだん そうじ0 しかけ0:わなのだん ; ↑わなのだんの「かいめで」用カウンタ(アセンブラ的にはc2)を ;0クリアします. ;このめいれいの実行後にわなのだんを実行すると,それは「1かいめ」になります しかけ0:3のだん 5 ; ↑3のだんの「かいめで」用カウンタを5にします. ;このめいれいの実行後に3のだんを実行すると,それは「6かいめ」になります ぜんしん ;動作の数値を省略すると,以前の値を引き継ぐ.電源ON直後は7,7だ.だからこれは ;ぜんしん 7,7と同じ みぎよれ 5 こうしん ;動作の数値を省略すると,以前の値を引き継ぐ.この場合は,こうしん 5,5と同じ ;になるはず.わかる?みぎよれ なのにね @このようにわけわかんなくなるので,動作の数値はできれば省略しない方がいいと思う. @特に,大きなプログラムでは絶対省略しない方がいい.バグに苦しむことになるぞ みぎまわれ 7,7 ひだりよれ 5 みぎだ:わなのだん ひだりだ:3のだん まえだ:4のだん そうじかん50で:4のだん 3かいめで:3のだん :わなのだん こうしん 4,4 4かいめで:はじめのだん 5かいめで:3のだん @!じかん1で:は,次のように使う ●重要 :2Aのだん みぎさがれ !じかん1で:2Aのだん まえだ:はじめのだん じかん20で:3のだん @じかん20で:とは,「じかん2秒で」ではなく,「じかん2秒以上で」という意味. @だから,!じかん1で:とは,「じかん0.1秒でない時」ではなく, @「じかん0.1秒未満の時」という意味である. @この例では,まず,みぎさがれ でモータの動作を変えている.モータの動作を @変えた直後は,前面センサは電圧が不安定になり,誤動作しやすい. @そこで,0.1秒間はセンサを読まないようにするのが,!じかん1で:の役目である. @センサ不安定による誤動作は結構多く,また,これはプログラムが論理的に間違って @いるわけではないので,どこがいけないのだろうとプログラムとにらめっこして昼夜 @苦しむことになる. @なので,モータ動作切り替え時には前面センサの誤動作が起きやすいことと, @!じかん1で:のような回避技を知っておくと心強い.もちろん,プログラム間違いが @誤動作の原因である場合の方が圧倒的に多いのだが(笑) @ただ,0.1秒という時間は,低速ギヤ梵天丸では大したことはないが,高速ギヤとか @にすると,けっこう無視できない.速さ15cm/秒の時は,0.1秒は1.5cmだ. @無視できないぞ.どうする? :3のだん ひだりまわれ ふれ 2,8 つけ 3 けせ 4 けせ あか けせ 6 ; 「けせ」は灯く意味(つまり逆だ) でも一瞬しか灯かない(つまり ;「つけ」は意味なし) 6=みどり 7=あか @(でもRB6,7はセンサモニタを兼ねてるので,うまく機能しないかもしれない) ; なお,出力は電圧的にはまともで,けせ=L つけ=Hだ にゅうりょくXX10で:4のだん ; 入力は普通と逆 左からRB2,3,4,5の順(普通と逆) そして1がL, ;0がHだ(普通と逆) ;なぜならディップSWベース(プルダウン)だからね 十分注意のこと @●ver2.05(2000年夏頃配布)以降は仕様が変わり,普通と同じになった.注意! @左からRB5,4,3,2の順 そして1がH 0がLだ. 6かいめで:わなのだん :4のだん とまれ りもこん0 りもこん1で:3のだん りもこん2で:3のだん りもこん3で:3のだん りもこん4で:3のだん りもこん5で:3のだん りもこん6で:3のだん りもこん7で:3のだん りもこん8で:3のだん りもこん9で:3のだん りもこん10で:3のだん りもこん11で:3のだん りもこん12で:3のだん りもこん0で:3のだん ; ↑これは,りもこん0実行後,1回もリモコンが押されてない時に,3のだんへ ;ジャンプする :5のだん とまれ @ インライン文は,小文字の@から始める  labelには:をつけてね でないと @エラーになる 変数定義などはbon10.hdrに書くこと. @ まきもののアセンブル出力を見ると分かる通り,まきものは,行動命令と @条件分岐命令のあいだにループのラベルがある.:D2Aとかね. @インライン文でジャンプする場合は,このことを念頭に置き,ラベル位置には充分注意 @すること @また,コンパイル(b10→src)はOKで,アセンブル(src→obj)段階でエラーが出た @場合,まきものは一切エラーメッセージを出さない.単にobjファイルが @生成されないだけ. @でも,以前のobjファイルが残っていると,そのファイルは上書きされずに生き残る. @つまり,一見エラーなく終了したように見えちゃうのだ.でも実態は書き換わってない @古いファイルなわけで, @動作がおかしくて悩むことになってしまう. @特徴としては,青(MAK)ベルトが生成されない.緑(SYS)と黄色(FREE)ベルトのみである. @そんなときはこのエラーである. @インライン文に間違いがあると,これが起きる(というかこの現象は99%インライン @文の間違い). @どこが間違ってるかをチェックするには,手動でアセンブルすればよい→tab8xreadme.txt @ mov gt10m,#100 ;これは,「そうじかん」を強制的に100(10秒)にする命令である(複合命令movは ;左←右への代入であることに注意). @:loop @ movwf 4fh @ sublw 23h @ jz :loop まえだ:はじめのだん ; まえだ:loop という書き方はダメだった ; まえだ:loop もダメ