スタジオ ミュウ

ミュウロボ命令一覧表

LED計測制御 | LED双方向通信 | LEDグループ学習 | メロディのプログラム | RCサーボの制御 | モーターのPWM制御
MYUロボ-II | MYU-USB転送ソフト | MYU USB BASIC | USBドリトル | C アセンブラMYUUSB-1基板 | MYUUSB命令一覧
命令には、引数のない1バイト命令。引数が1つの2バイト命令。引数が2つの3バイト命令があります。
命令 引数 使用例および解説 Code
//   //から次の行までコメントを書くことができる  
定義 2 第1引数の名前を定義して第2引数から次の行までの命令に置き換える 255
パワーオンスタート 0 プログラムの先頭に置くと電源オンとともにプログラムが始まる。解除はタクトスイッチを押しながら電源オンする 111
消灯 1 消灯,10 両LEDを引数(0-255)x0.1秒だけ消灯 0
右点灯 1 右点灯,10 右LED(R)を引数(0-255)x0.1秒だけ点灯 4
左点灯 1 左点灯,10 左LED(L)を引数(0-255)x0.1秒だけ点灯 6
両点灯 1 両点灯,10 両LEDを引数(0-255)x0.1秒だけ点灯 14
前進 1 前進,10 両輪を前転させた後、引数の値(0-255)x0.1秒だけ待つ 2
後退 1 後退,10 両輪を後転させた後、引数の値(0-255)x0.1秒だけ待つ 8
左前 1 左前,10 左車輪を前転させた後、引数の値(0-255)x0.1秒だけ待つ 1
右前 1 右前,10 右車輪を前転させた後、引数の値(0-255)x0.1秒だけ待つ 3
左後 1 左後,10 左車輪を後転させた後、引数の値(0-255)x0.1秒だけ待つ 7
右後 1 右後,10 右車輪を後転させた後、引数の値(0-255)x0.1秒だけ待つ 9
右回り 1 右回り,10 左車輪を前転・右車輪を後転させた後、引数の値(0-255)x0.1秒だけ待つ 10
左回り 1 左回り,10 右車輪を前転・左車輪を後転させた後、引数の値(0-255)x0.1秒だけ待つ 11
停止 1 停止,10 全モーターを停止させた後、引数の値(0-255)x0.1秒だけ待つ 0
待つ 1 待つ,10 引数の値(0-255)x0.1秒だけ前の状態を続ける 5
モーター左 1 モーター左,10 第3モーターを左回転させた後、引数の値(0-255)x0.1秒だけ待つ 4
モーター右 1 モーター右,10 第3モーターを右回転させた後、引数の値(0-255)x0.1秒だけ待つ 6
モーター3左 1 モーター3左,10 第3モーターを左回転させた後、引数の値(0-255)x0.1秒だけ待つ 4
モーター3右 1 モーター3右,10 第3モーターを右回転させた後、引数の値(0-255)x0.1秒だけ待つ 6
モーター4左 1 モーター4左,10 第4モーターを左回転させた後、引数の値(0-255)x0.1秒だけ待つ 13
モーター4右 1 モーター4右,10 第4モーターを右回転させた後、引数の値(0-255)x0.1秒だけ待つ 14
ブザー 1 ブザー,10 引数だけブザーを鳴らす 80
電子音 2 電子音,10,30
第1引数の値(0-255)x0.1秒だけ第2の引数のパルス幅(1-255)30で音を鳴らす
パルス幅が大きいほど音は低くなる。
105
リミットスイッチ 0 リミットスイッチ(In1)が押されるまで以前の状態を続ける
左前,0 リミットスイッチ
スイッチが押されるまで左前を続ける
112
ブロックはじめ 1 ブロックはじめ,10
  前進,10 左前,10
ブロック終わり

ブロック番号(1-127)10を宣言しブロックおわりまでの間にプログラムを書く
ブロック内のプログラムは他から呼び出された時だけ実行します
81
ブロックおわり 0 ブロックの終わりを宣言する 113
ブロック実行 1 ブロック実行,10 ブロック番号10を呼び出す 82
ブロック繰り返し 2 ブロック繰り返し,10,0
ブロック番号10を回数(0-255)繰り返す。回数が0の場合は無限に繰り返す
106
ブロック脱出 0 ブロック内から強制的に抜け出し呼ばれた所に戻る 114
アンカー 1 アンカー,10
アンカー番号(1-127)10を宣言する
83
ジャンプ 1 ジャンプ,10
アンカー番号10にジャンプ
84
入力なしジャンプ 2 入力なしジャンプ,10,2
第2引数の入力ポート(1-4)2が離れていたらアンカー番号10にジャンプ
109
入力ありジャンプ 2 入力ありジャンプ,10,2
第2引数の入力ポート(1-4)2が接続されていたらアンカー番号10にジャンプ
108
サーボ 2 サーボ,190,2 停止,30
第1引数のハルス幅(30-255)190を第2引数のサーボ(1-6)2にセット
停止,30で3秒間サーボ信号を出す
107
ポート出力 2 ポート出力,10,64
第2引数のデータ(0-255)64をポートに出力した後、時間(0-255)10(1秒)だけ待つ
110

<ミュウアセンブラで使用するレジスタ(8ビット)>
A:Aレジスタ 演算用レジスタ
IX:インデックスレジスタ
IXM:インデックスメモリ IXの値(0-127)によって格納されるレジスタメモリ。128個のメモリとして使える。※:MYUROBO-1Aは80個まで
T1L:タイマー1(4nSecサイクル)の下位8ビット:MYUROBO-1A専用
T1H:タイマー1の上位8ビット 約0.26秒周期で1周します。(250KHz):MYUROBO-1A専用
T0L:タイマー0(4nSecサイクル)の下位8ビット:MYUUSB-1専用
T0H:タイマー0の上位8ビット 約0.26秒周期で1周します。(250KHz):MYUUSB-1専用
PA:ポートAレジスタ
PB:ポートBレジスタ:MYUUSB-1専用
PC:ポートCレジスタ モーターやサーボ制御用の出力ポート。
ARG1:CMD命令用第1引数 CMD命令によって使用される引数をセットする。CMD命令は引数にCodeをセットすることで命令を実行。
ARG2:CMD命令用第2引数
EEPROM:電源を切っても覚えている256バイトのメモリ
Z(ゼロ)フラグ:演算命令(ADD,SUB,CMP,AND,OR,XOR,INC,DEC)を実行して結果がゼロならセットするフラグ。
C(キャリー)フラグ:演算命令(SUB,CMP)を実行して結果が負の場合や加算命令(ADD)を実行してオーバーフローした場合セットするフラグ。RLA,RRA,CLC,STC命令でもフラグが変化します。
タイマー0はサーボ命令実行中、20msecごとにクリアされます。
命令 引数 使用例および解説 Code
TRISB 1 ポートBの入出力をビットごと(0:出力 1:入力)に設定する:MYUUSB-1専用命令 68
PB 1 ポートBに引数(0-255)を出力:MYUUSB-1専用命令 69
RS 1 引数(0-255)の値をシリアルポートに出力:MYURUBO-1A専用命令 70
FLAGA 1 引数:0(Z) 1(NZ) 2(C) 3(NC)のFLAGよってAレジスタに1を返す。なりたたない場合は0を返す:MYUUSB-1専用命令 70
AH 1 AHレジスタに引数(0-255)をセット 71
PUTAX 1 16ビット命令 IX = IXP - 引数(1-255)を実行後、AX(AH/A)レジスタの値をIXM2にセット 72
GETAX 1 16ビット命令 IX = IXP - 引数(1-255)を実行後、IXM2レジスタの値をAX(AH/A)にセット 73
AN 1 引数(入力ポート)を10ピットA/D変換して上位8ビットをAレジスタにセット 74
TRISA 1 ポートAの入出力をビットごと(0:出力 1:入力)に設定する 75
TRISC 1 ポートCの入出力をビットごと(0:出力 1:入力)に設定する 76
PUTA 1 IX = IXP - 引数(1-255)を実行後、Aレジスタの値をIXMにセット 77
GETA 1 IX = IXP - 引数(1-255)を実行後、IXMの値をAレジスタにセット 78
IXP 1 IXPレジスタに引数(0-255)をセット 79
CMD 1 引数のCode命令を実行する。その際、ARG1,ARG2レジスタの値が引数となる
ARG1,10 CMD,2 ARG1に10(1秒)をセットし、Code 2(前進)を実行。
85
A 1 A,10 Aレジスタに引数(10)をセット 86
IX 1 IX,10 IXレジスタに引数(10)をセット 87
IXM 1 IXM,10 IXの値(0-11)によって格納されるインデックスメモリに引数(10)をセット 88
T1L 1 T1L,10 タイマー1の下位8ビット(0-255)に引数(10)をセット:MYURUBO-1A専用命令 89
T0L 1 T0L,10 タイマー0の下位8ビット(0-255)に引数(10)をセット:MYUUSB-1専用命令 89
T1H 1 T1H,10 タイマー1の上位8ビット(0-255)に引数(10)をセット:MYURUBO-1A専用命令 90
T0H 1 T0H,10 タイマー0の上位8ビット(0-255)に引数(10)をセット:MYUUSB-1専用命令 90
ARG1 1 ARG1,10 CMD命令で実行される第1引数に引数(10)をセット 91
ARG2 1 ARG2,10 CMD命令で実行される第2引数に引数(10)をセット 92
PA 1 PA,10 ポートAに引数(10)を出力 93
PC 1 PC,10 ポートCに引数(10)を出力 94
ADD 1 ADD,10 Aレジスタ = Aレジスタ + 引数(10) 95
SUB 1 SUB,10 Aレジスタ = Aレジスタ - 引数(10) 96
CMP 1 CMP,10 Aレジスタと引数(10)と比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる 97
AND 1 AND,10 Aレジスタ = Aレジスタ AND 引数(10) 98
OR 1 OR,10 Aレジスタ = Aレジスタ OR 引数(10) 99
XOR 1 XOR,10 Aレジスタ = Aレジスタ XOR 引数(10) 100
JZ 1 JZ,10 Z(ゼロ)フラグが真(セット)ならアンカー番号10にジャンプ 101
JNZ 1 JNZ,10 Z(ゼロ)フラグが偽(クリア)ならアンカー番号10にジャンプ 102
JC 1 JC,10 C(キャリー)フラグが真(セット)ならアンカー番号10にジャンプ 103
JNC 1 JNC,10 C(キャリー)フラグが偽(クリア)ならアンカー番号10にジャンプ 104
AIX 0 Aレジスタの値をIXレジスタにセット 115
AIXM 0 Aレジスタの値をIXMにセット 116
AT1L 0 Aレジスタの値をタイマー1の下位8ビットにセット:MYUROBO-1A専用命令 117
AT0L 0 Aレジスタの値をタイマー0の下位8ビットにセット:MYUUSB-1専用命令 117
AT1H 0 Aレジスタの値をタイマー1の上位8ビットにセット:MYUROBO-1A専用命令 118
AT0H 0 Aレジスタの値をタイマー0の上位8ビットにセット:MYUUSB-1専用命令 118
AARG1 0 Aレジスタの値をARG1にセット 119
AARG2 0 Aレジスタの値をARG2にセット 120
APA 0 Aレジスタの値をポートAに出力 121
APC 0 Aレジスタの値をポートCに出力 122
IXA 0 IXレジスタの値をAレジスタにセット 123
IXMA 0 IXMの値をAレジスタにセット 124
T1LA 0 タイマー1の下位8ビットの値をAレジスタにセット:MYUROBO-1A専用命令 125
T0LA 0 タイマー0の下位8ビットの値をAレジスタにセット:MYUUSB-1専用命令 125
T1HA 0 タイマー1の上位8ビットの値をAレジスタにセット:MYUROBO-1A専用命令 126
T0HA 0 タイマー0の上位8ビットの値をAレジスタにセット:MYUUSB-1専用命令 126
ARG1A 0 ARG1の値をAレジスタにセット 127
ARG2A 0 ARG2の値をAレジスタにセット 128
PAA 0 ポートAの値をAレジスタにセット 129
PBA 0 ポートBの値をAレジスタにセット 130
PCA 0 ポートCの値をAレジスタにセット 130
CLA 0 Aレジスタをゼロにする 131
CLIX 0 IXレジスタをゼロにする 132
CLIXM 0 IXMをゼロにする。 133
CLT1L 0 タイマー1の下位8ビットをゼロにする:MYUROBO-1A専用命令 134
CLT0L 0 タイマー0の下位8ビットをゼロにする:MYUUSB-1専用命令 134
CLT1H 0 タイマー1の上位8ビットをゼロにする:MYUROBO-1A専用命令 135
CLT0H 0 タイマー0の上位8ビットをゼロにする:MYUUSB-1専用命令 135
CLARG1 0 ARG1をゼロにする 136
CLARG2 0 ARG2をゼロにする 137
CLPA 0 ポートAにゼロを出力する 138
CLPC 0 ポートCにゼロを出力する 139
INCA 0 Aレジスタ = Aレジスタ + 1 140
INCIX 0 IXレジスタ = IXレジスタ + 1 141
INCIXM 0 IXM = IXM + 1 142
INCARG1 0 ARG1 = ARG1 + 1 143
INCARG2 0 ARG2 = ARG2 + 1 144
DECA 0 Aレジスタ = Aレジスタ - 1 145
DECIX 0 IXレジスタ = IXレジスタ - 1 146
DECIXM 0 IXM = IXM - 1 147
DECARG1 0 ARG1 = ARG1 - 1 148
DECARG2 0 ARG2 = ARG2 - 1 149
ADDIX 0 Aレジスタ = Aレジスタ + IXレジスタ 150
ADDIXM 0 Aレジスタ = Aレジスタ + IXM 151
ADDT1L 0 Aレジスタ = Aレジスタ + タイマー1の下位8ビット:MYUROBO-1A専用命令 152
ADDT0L 0 Aレジスタ = Aレジスタ + タイマー0の下位8ビット:MYUUSB-1専用命令 152
ADDT1H 0 Aレジスタ = Aレジスタ + タイマー1の上位8ビット:MYUROBO-1A専用命令 153
ADDT0H 0 Aレジスタ = Aレジスタ + タイマー0の上位8ビット:MYUUSB-1専用命令 153
ADDARG1 0 Aレジスタ = Aレジスタ + ARG1 154
ADDARG2 0 Aレジスタ = Aレジスタ + ARG2 155
SUBIX 0 Aレジスタ = Aレジスタ - IXレジスタ 156
SUBIXM 0 Aレジスタ = Aレジスタ - IXM 157
SUBT1L 0 Aレジスタ = Aレジスタ - タイマー1の下位8ビット:MYUROBO-1A専用命令 158
SUBT0L 0 Aレジスタ = Aレジスタ - タイマー0の下位8ビット:MYUUSB-1専用命令 158
SUBT1H 0 Aレジスタ = Aレジスタ - タイマー1の上位8ビット:MYUROBO-1A専用命令 159
SUBT0H 0 Aレジスタ = Aレジスタ - タイマー0の上位8ビット:MYUUSB-1専用命令 159
SUBARG1 0 Aレジスタ = Aレジスタ - ARG1 160
SUBARG2 0 Aレジスタ = Aレジスタ - ARG2 161
CMPIX 0 AレジスタとIXレジスタと比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる 162
CMPIXM 0 AレジスタとIXMと比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる 163
CMPT1L 0 Aレジスタとタイマー1の下位8ビットと比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる:MYUROBO-1A専用命令 164
CMPT0L 0 Aレジスタとタイマー0の下位8ビットと比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる:MYUUSB-1専用命令 164
CMPT1H 0 Aレジスタとタイマー1の上位8ビットと比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる:MYUROBO-1A専用命令 165
CMPT0H 0 Aレジスタとタイマー0の上位8ビットと比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる:MYUUSB-1専用命令 165
CMPARG1 0 AレジスタとARG1と比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる 166
CMPARG2 0 AレジスタとARG2と比較しZ(ゼロ)フラグとC(チャリー)フラグ を変化させる 167
ANDIXM 0 Aレジスタ = Aレジスタ AND IXM 168
ORIXM 0 Aレジスタ = Aレジスタ OR IXM 169
XORIXM 0 Aレジスタ = Aレジスタ XOR IXM 170
RLA 0 AレジスタをC(キャリー)フラグを通して1 ビット左に回転します 171
RRA 0 AレジスタをC(キャリー)フラグを通して1 ビット右に回転します 172
CLC 0 C(キャリー)フラグをクリア 173
STC 0 C(キャリー)フラグをセット 174
PUSHA 0 スタックにAレジスタの値を保存 176
POPA 0 スタックから値を取り出しAレジスタにセット 177
INCIXP 0 IXPレジスタ = IXPレジスタ + 1 178
DECIXP 0 IXPレジスタ = IXPレジスタ - 1 179
AIXPM 0 IX = IXPを実行後、Aレジスタの値をIXMにセット。IXP = IXP + 1する 180
IXPMA 0 IXP = IXP - 1した後、IX = IXPを実行。IXMの値をAレジスタにセット 181
EXARG1 0 AレジスタとARG1レジスタの値交換 182
ANDARG1 0 Aレジスタ = Aレジスタ AND ARG1 183
ORARG1 0 Aレジスタ = Aレジスタ OR ARG1 184
XORARG1 0 Aレジスタ = Aレジスタ XOR ARG1 185
CLPB 0 ポートBにゼロを出力する 186
INIT 0 ポートを初期化する 187
STEPIN 0 デバッグモードとなりレジスタの値をシリアルポートに出力。任意のシリアル入力でステップ動作となる 188
ANDA 0 Aレジスタ = Aレジスタ AND Aレジスタ 189
ANAX 0 直前のAN命令で取得した10BITアナログ値を下位8ビットをAレジスタに、上位2ビットをAHレジスタにセットする 190
AXIXM2 0 16ビット命令 AX(AH/A)レジスタの値をIXMにセット 191
IXM2AX 0 16ビット命令 IXMレジスタの値をAX(AH/A)にセット 192
AXARG 0 16ビット命令 AX(AH/A)レジスタの値をIXMにセット 193
ARGAX 0 16ビット命令 IXMレジスタの値をAX(AH/A)にセット 194
CLAH 0 AHレジスタをゼロにする 195
CLAX 0 16ビット命令 AX(AH/A)レジスタをゼロにする 196
INCAX 0 16ビット演算 AX(AH/A) = AX(AH/A) + 1 197
INCIXM2 0 16ビット演算 IXM2 = IXM2 + 1 198
DECAX 0 16ビット演算 AX(AH/A) = AX(AH/A) - 1 199
DECIXM2 0 16ビット演算 IXM2 = IXM2 - 1 200
ADDARG 0 16ビット符号付演算 AX(AH/A) = AX(AH/A) + ARG(ARG2/ARG1) 201
SUBARG 0 16ビット符号付演算 AX(AH/A) = AX(AH/A) - ARG(ARG2/ARG1) 202
ANDAX 0 16ビット演算 AX(AH/A) = AX(AH/A) AND AX(AH/A) 203
ANDARG 0 16ビット演算 AX(AH/A) = AX(AH/A) AND ARG(ARG2/ARG1) 204
ORARG 0 16ビット演算 AX(AH/A) = AX(AH/A) OR ARG(ARG2/ARG1) 205
XORARG 0 16ビット演算 AX(AH/A) = AX(AH/A) XOR ARG(ARG2/ARG1) 206
CMPIXM2 0 16ビット命令 AX(AH/A) - IXM2 の結果が'0'ならZ(ゼロ)フラグを、負ならC(チャリー)フラグ をセットする。各レジスタ値は変化しない 207
CMPARG 0 16ビット命令 AX(AH/A) - ARG(ARG1/ARG2) の結果が'0'ならZ(ゼロ)フラグを、負ならC(チャリー)フラグ をセットする。各レジスタ値は変化しない 208
RLAX 0 16ビット命令 AX(AH/A)レジスタをC(キャリー)フラグを通して1 ビット左に回転します 209
RRAX 0 16ビット命令 AX(AH/A)レジスタをC(キャリー)フラグを通して1 ビット右に回転します 210
MULARG 0 16ビット符号付演算 AX(AH/A) = AX(AH/A) x ARG(ARG2/ARG1) 211
DIVARG 0 16ビット符号付演算 AX(AH/A) = AX(AH/A) ÷ ARG(ARG2/ARG1) 余りはARG(ARG2/ARG1)にセット 212
PUSHAX 0 16ビット命令 スタックにAX(AH/A)レジスタの値を保存 213
POPAX 0 16ビット命令 スタックから値を取り出しAX(AH/A)レジスタにセット 214
AXIXPM2 0 16ビット命令 AX(AH/A)レジスタの値をIXM2レジスタにセット。IXP = IXP + 2する 215
IXPM2AX 0 16ビット命令 IXM2レジスタの値をAX(AH/A)レジスタにセット 216
EXAH 0 AレジスタとAHレジスタの値交換。 217
EXARG 0 AX(AH/A)レジスタとARG(ARG2/ARG1)レジスタの値交換 218
COMAX 0 AX(AH/A)レジスタの補数をセットする 219
ARS 0 Aレジスタの値をシリアルポートに出力:MYUROBO-1A専用命令 220
AUSB 0 (R実行専用命令)Aレジスタの値を基板に送り、結果を有効バイト数、データの順に表示:MYUUSB-1専用命令 220
DECRS 0 Aレジスタの値を10進表記右詰め3文字でシリアルポートに出力:MYUROBO-1A専用命令 221
APB 0 Aレジスタの値をポートBに出力:MYUUSB-1専用命令 221
HEXRS 0 Aレジスタの値を16進表記でシリアルポートに出力:MYUROBO-1A専用命令 222
PBA 0 ポートBの値をAレジスタにセット:MYUUSB-1専用命令 222
AXDECRS 0 16ビット命令 AX(AH/A)レジスタの値を符号付10進表記右詰め6文字でシリアルポートに出力:MYUROBO-1A専用命令 223
MEMDMP 0 (R実行専用命令)有効バイト数、アドレスL、アドレスH、48バイトのメモリダンプ:MYUUSB-1専用命令 223
AXHEXRS 0 16ビット命令 16進表記でAHレジスタAレジスタの順で値をシリアルポートに出力:MYUROBO-1A専用命令 224
RDEEPROM 0 ARG1にセットされたEPROMアドレスの値を読み、Aレジスタにセット:MYUUSB-1専用命令 224
DELAYAX 0 16ビット命令 AX(AH/A)レジスタ x 1mSECの遅延 225
BREAKP 0 プログラムポインタ:コマンドコード:AH.A.ARG2.ARG1.IXP.IX.IXM.FSR.INDFレジスタの内容をシリアルポートに出力し停止。任意のシリアル入力で次の命令から再実行:MYUROBO-1A専用命令 226
USBSTAT 0 (R実行専用命令)有効バイト数、A、AH、ARG1、ARG2、IX、IXP、IXMレジスタ、命令コード、アドレスL、アドレスH、FLAG、BLKP、STAKPとIXMのメモリダンプの順で基板DATA値を表示:MYUUSB-1専用命令 226
WTEEPROM 0 Aレジスタの値をARG1にセットされたEPROMのアドレスに書き込む:MYUUSB-1専用命令 227