本页指令包括一些基础的输入、输出和逻辑操作。
也有可以指定执行时间与延迟的指令。
空指令执行任何操作,程序无条件进入下一行。
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_TIMER | 编号 | 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_GR | 编号 | 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_JIGR | 编号 | 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 | 忽略 |