ver 2.0: モータ4をサポート(Cロボ基板,Cロボかたつむり基板でも使えます)
ver 1.0: バッチ処理をサポート
ver 1.0b2: バッチ処理を一部サポート
ver 1.0b: AD入力値が不連続になるのを修正
ver 1.0a: 公開
命令語 | 処理内容 | ||||||
1バイト目(A) | 2バイト目(B) | 16進表現 | |||||
上位4ビット | 下位4ビット | 上位4ビット | 下位4ビット | 上位 | 下位 | 概要 | 詳細 |
0001 | 0001 | 対象モータ | 0x11 | 0xXX | モータ制御 | 前転 | |
0010 | 対象モータ | 0x12 | 0xXX | 後転 | |||
0011 | 対象モータ | 0x13 | 0xXX | モータは各ビットが立っているか | ブレーキ | ||
0100 | 対象モータ | 0x14 | 0xXX | で判断する(0はすべてを意味する) | 停止 | ||
0101 | any | 0x15 | ― | モータ連動動作 | 前進 | ||
0110 | 0x16 | ― | 後退 | ||||
0111 | 0x17 | ― | 右折 | ||||
1000 | 0x18 | ― | 左折 | ||||
1001 | 0x19 | ― | 右回転 | ||||
1010 | 0x1A | ― | 左回転 | ||||
1011 | 0x1B | ― | 右後ろ | ||||
1100 | 0x1C | ― | 左後ろ | ||||
0010 | センサ番号 | オプション (0〜8) | 0x2X | 0xXX | A/D入力 | (2^オプション)回平均をとる.通常は4(16回) バッチ処理中は値を返さない | |
0100 | 出力する値(12ビット) | 0x4X | 0xXX | D/A出力 | D/A出力1(DAC0) | ||
0101 | 出力する値(12ビット) | 0x5X | 0xXX | D/A出力2(DAC1) | |||
0110 | 0001 | オフにするポート | 0x61 | 0xXX | D/A出力OFF | ポートはビット指定(0は全て) | |
0111 | any | 0x7X | 0xXX | halt(現在実行中の処理を強制終了) | 命令の間に割り込んで停止させる | ||
1000 | バッチ番号 | 必要ページ数(0〜160) | 0x8X | 0xXX | バッチ処理登録開始 B=0は未定義 | メモリに書き込む(足りない場合不可能)。ページ数はターミネータを含む。1ページは2命令。 | |
1001 | 0001 | バッチ番号 | 0x91 | 0xXX | バッチ処理開始1 | リターンする(Call) | |
0010 | バッチ番号 | 0x92 | 0xXX | バッチ処理開始2 | リターンしない | ||
0011 | バッチ番号 | 0x93 | 0xXX | バッチ処理一回だけ実行 | 現在使用不可 | ||
0100 | バッチ番号 | 0x94 | 0xXX | バッチが登録されているか確認する | 実際はサイズの確認(0なら未登録) | ||
0101 | バッチ番号 | 0x95 | 0xXX | バッチ処理削除 | バッチ処理中は削除できない(0は全削除) | ||
0110 | any | 0x96 | ― | バッチ繰り返し停止 | ポーズ送信(その場で強制終了はhaltを使用) | ||
1010 | any | 0x9A | ― | バッチ終了 | 現在実行中のバッチから抜ける | ||
1011 | any | 0x9B | ― | バッチのターミネータ | バッチの最後に入力する。バッチ処理中に現れたら終了する | ||
1111 | 持続時間(0〜22.5s) | 0x9F | 0xXX | wait | バッチに使う。それ以外はsqueakで。引数Bはおよそ0.1[秒/1] | ||
バッチの書き込み時は、一命令送るごとに若干のwaitを掛ける必要がある(Flashメモリの書き込み中に割り込みが効かないから)。 waitは0.1秒で十分 | |||||||
1010 | 比較したい値 | 0xAX | 0xXX | Accの値と大小比較する | 結果に応じてフラグの値を変化させる(ビットを立てる。)「Acc(比較記号)値」 | ||
1011 | 比較演算子 | ジャンプする命令数 | 0xBX | 0xXX | 比較演算子とフラグが成立する場合素通しする。それ以外のときジャンプ | ||
0xBX | 0xXX | 「=」→1ビット目を立てる(0001) | 比較演算子とフラグのANDをとってTRUE(=0以外)なら素通しする | ||||
0xBX | 0xXX | 「<」→2ビット目を立てる(0010) | FALSE(=0)ならジャンプする。 | ||||
0xBX | 0xXX | 「>」→3ビット目を立てる(0100) | 2ビット目と3ビット目が立っている場合など、ありえない組み合わせでは | ||||
0xBX | 0xXX | 「!=」→4ビット目を立てる(1000) | 正常に動かない(ジャンプしない)。無条件ジャンプは0を代入。 | ||||
0xBX | 0xXX | 複数ビットを立てるとORをとれる(<=などが表現できる) |