本页指令包括一些基础的输入、输出和逻辑操作。
也有可以指定执行时间与延迟的指令。
空指令执行任何操作,程序无条件进入下一行。
INST_NOP | 编号 | OP-0 | OP-1 |
---|
空指令 | 00 | 0000 | 0000 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 | 忽略 |
指令将指定值输出到指定管脚,或着复位。
对应位置的LED灯收到输出数值为高时将被点亮,为低时熄灭。
当程序使用超声波测距、或者MIDI模式时,部分数字输出管脚将被占用。
INST_DIGITAL_OUTPUT | 编号 | sOP00 | sOP01 | sOP10 | sOP11 |
---|
指定LED0管脚输出为高 | 01 | 00 | 00 | 00 | 01 |
指定4个管脚输出二进制数值1001 | 01 | 00 | FF | 00 | 09 |
注意第2行指令想要输出的数值是二进制的1001,转换为十六进制:
(1001)2=23+20=9⋅160=(09)16 所以sOP11要取值十六进制的09
。
OP/sOP | 取值 | 含义 |
---|
sOP00 | 00 | 忽略 |
sOP01 | 00 ~03 | 指定输出管脚LED0~LED3 |
sOP10 | 00 | 忽略 |
sOP11 | 00 | 管脚输出为低 |
| 01 | 管脚输出为高 |
OP/sOP | 取值 | 含义 |
---|
sOP00 | 00 | 忽略 |
sOP01 | FF | 指定全部4个管脚 |
sOP10 | 00 | 忽略 |
sOP11 | 00 ~0F | 管脚输出指定值对应的十六进制值 |
等待指定时间之后,执行下一行指令。
可以直接输入延时数值,或者指定寄存器值作为延时数值。
INST_PROG_DELAY | 编号 | OP-0 | sOP10 | sOP11 |
---|
延时1000毫秒 | 02 | 03E8 | 00 | 00 |
延时R01 寄存器数值时长 | 02 | 0001 | FF | 00 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~FFFF | 延时数值 |
sOP10 | 00 | 以输入值为延时数值 |
sOP11 | 00 | 单位:毫秒 |
| 01 | 单位:秒 |
| 02 | 单位:分钟 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~003F | 指定寄存器编号 |
sOP10 | FF | 以寄存器值为延时数值 |
sOP11 | 00 | 单位:毫秒 |
| 01 | 单位:秒 |
| 02 | 单位:分钟 |
设置定时器进入倒计时,此时倒计时寄存器R23
被设置为0001
。
计时结束后,倒计时寄存器重置为0000
。
倒计时寄存器也可以作为普通寄存器使用,但设置定时器时会覆盖原来存有的值。
INST_SET_TIME R | 编号 | OP-0 | OP-1 |
---|
倒计时5000毫秒 | 03 | 1388 | 0000 |
倒计时10秒 | 03 | 000A | 0001 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~FFFF | 倒计时数值 |
OP-1 | 0000 | 单位:毫秒 |
| 0001 | 单位:秒 |
| 0002 | 单位:分钟 |
如果寄存器R00
存储的数值大于输入数值,跳转到指定的指令行;
否则继续执行下一行。
INST_JUMP_IF_REG0_G R | 编号 | OP-0 | OP-1 |
---|
如果R00 值大于00FF ,跳转到01C0 行 | 04 | 00FF | 01C0 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~FFFF | 输入数值 |
OP-1 | 0000 ~01FF | 指定行号 |
如果寄存器R00
存储的数值小于输入数值,跳转到指定的代码行;
否则继续执行下一行。
INST_JUMP_IF_REG0_LS | 编号 | OP-0 | OP-1 |
---|
如果R00 值小于00EA ,跳转到01C5 行 | 05 | 00EA | 01C5 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~FFFF | 输入数值 |
OP-1 | 0000 ~01FF | 指定行号 |
如果寄存器R00
存储的数值等于输入数值,跳转到指定的指令行;
否则继续执行下一行。
INST_JUMP_IF_REG0_EQ | 编号 | OP-0 | OP-1 |
---|
如果R00 值等于00EC ,跳转到0027 行 | 06 | 00EC | 0027 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~FFFF | 输入数值 |
OP-1 | 0000 ~01FF | 指定行号 |
如果寄存器R00
存储的数值大于指定寄存器的值,跳转到指定的指令行;
否则继续执行下一行。
INST_REG0_REGx_JIG R | 编号 | sOP00 | sOP01 | OP-1 |
---|
如果R00 值大于R05 值,跳转到0010 行 | 07 | 00 | 05 | 0010 |
OP/sOP | 取值 | 含义 |
---|
sOP00 | 00 | 忽略 |
sOP01 | 00 ~3F | 指定寄存器编号 |
OP-1 | 0000 ~01FF | 指定行号 |
如果寄存器R00
存储的数值小于指定寄存器的值,跳转到指定的指令行;
否则继续执行下一行。
INST_REG0_REGx_JILS | 编号 | sOP00 | sOP01 | OP-1 |
---|
如果R00 值小于R05 值,跳转到0020 行 | 08 | 00 | 05 | 0020 |
OP/sOP | 取值 | 含义 |
---|
sOP00 | 00 | 忽略 |
sOP01 | 00 ~3F | 指定寄存器编号 |
OP-1 | 0000 ~01FF | 指定行号 |
如果寄存器R00
存储的数值等于指定寄存器的值,跳转到指定的指令行;
否则继续执行下一行。
INST_REG0_REGx_JIEQ | 编号 | sOP00 | sOP01 | OP-1 |
---|
如果R00 值等于R05 值,跳转到0030 行 | 09 | 00 | 05 | 0030 |
OP/sOP | 取值 | 含义 |
---|
sOP00 | 00 | 忽略 |
sOP01 | 00 ~3F | 指定寄存器编号 |
OP-1 | 0000 ~FFFF | 指定行号 |
将寄存器R00
存储的数值与指定寄存器的值比较,如果返回TRUE跳转到指定的指令行;
否则继续执行下一行。
INST_JUMP_CONDITION | 编号 | sOP00 | sOP01 | OP-1 |
---|
如果R00 值等于R05 值,跳转到0030 行 | 0A | 01 | 05 | 0030 |
如果R00 值大于等于R05 值,跳转到0040 行 | 0A | 05 | 05 | 0040 |
如果R05 值为零,跳转到0050 行 | 0A | 07 | 05 | 0050 |
OP/sOP | 取值 | 含义 |
---|
sOP00 | 01 | 判断:= |
| 02 | 判断:≠ |
| 03 | 判断:> |
| 04 | 判断:< |
| 05 | 判断:≥ |
| 06 | 判断:≤ |
| 07 | 判断:为零 |
| 08 | 判断:不为零或与R00无关 |
sOP01 | 00 ~3F | 指定寄存器编号 |
OP-1 | 0000 ~01FF | 指定行号 |
根据指定管脚数字输入值的判断结果,跳转到指定的指令行。
INST_JUMP_IF_PORT | 编号 | sOP00 | sOP01 | OP-1 |
---|
如果管脚DIN3输入为高,跳转到0030 行 | 0B | 03 | 01 | 0030 |
如果4个管脚输入二进制数值1101,跳转到0050 行 | 0B | FF | 0D | 0050 |
注意第2行指令希望判断输入的数值是否二进制的1101,转换为十六进制:
(1101)2=23+22+20=13⋅160=(0D)16 所以sOP01要取值十六进制的0D
。
OP/sOP | 取值 | 含义 |
---|
sOP00 | 00 ~03 | 指定输入管脚DIN0~DIN3 |
sOP01 | 00 | 管脚输入为低 |
| 01 | 管脚输入为高 |
OP-1 | 0000 ~01FF | 指定行号 |
OP/sOP | 取值 | 含义 |
---|
sOP00 | FF | 指定全部4个输入管脚 |
sOP01 | 00 ~0F | 判断管脚输入值对应的十六进制值 |
OP-1 | 0000 ~01FF | 指定行号 |
从当前运行位置,跳转到指定的指令段。
指定的指令段必须包含0D
指令语句。
当运行到0D
指令时,程序返回跳转前位置的后一行指令继续执行。
INST_ROUTINE | 编号 | OP-0 | OP-1 |
---|
调用0080 行开始的指令段 | 0C | 0080 | 0000 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 ~01FF | 指定行号 |
OP-1 | 0000 | 忽略 |
使程序返回到最近一个调用指令0C
的后一行。
INST_RETURN | 编号 | OP-0 | OP-1 |
---|
返回最近调用指令的后一行 | 0D | 0000 | 0000 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 | 忽略 |
无条件跳转到指定行号继续执行。
INST_JUMP_TO | 编号 | OP-0 | OP-1 |
---|
无条件跳转到0010 行 | 0E | 0000 | 0010 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 ~01FF | 指定行号 |
程序运行到该指令后终止。
如果不包含终止指令,程序将一直执行到01FF
语句。
INST_TERMINATE | 编号 | OP-0 | OP-1 |
---|
程序终止 | 0F | 0000 | 0000 |
OP/sOP | 取值 | 含义 |
---|
OP-0 | 0000 | 忽略 |
OP-1 | 0000 | 忽略 |