Skip to main content

运行指令

本页指令包括一些基础的输入、输出和逻辑操作。
也有可以指定执行时间与延迟的指令。

0x00 空指令

空指令执行任何操作,程序无条件进入下一行。

tip

可以用来保留空行,预备将来修改程序时使用。

INST_NOP编号OP-0OP-1
空指令0000000000
info
OP/sOP取值含义
OP-00000忽略
OP-10000忽略

0x01 设置:输出指定值

指令将指定值输出到指定管脚,或着复位。
对应位置的LED灯收到输出数值为高时将被点亮,为低时熄灭。

tip

可以用来控制各类数控模块。

caution

当程序使用超声波测距、或者MIDI模式时,部分数字输出管脚将被占用

warning

管脚输出电流较小,不可直接连接大功率电机使用。

INST_DIGITAL_OUTPUT编号sOP00sOP01sOP10sOP11
指定LED0管脚输出为高0100000001
指定4个管脚输出二进制数值10010100FF0009

注意第2行指令想要输出的数值是二进制的1001,转换为十六进制:

(1001)2=23+20=9160=(09)16(1001)_{2}=2^{3}+2^{0}=9\cdot16^{0}=(09)_{16}

所以sOP11要取值十六进制的09

单管脚输出
OP/sOP取值含义
sOP0000忽略
sOP0100~03指定输出管脚LED0~LED3
sOP1000忽略
sOP1100管脚输出为低
01管脚输出为高
全管脚输出
OP/sOP取值含义
sOP0000忽略
sOP01FF指定全部4个管脚
sOP1000忽略
sOP1100~0F管脚输出指定值对应的十六进制值

0x02 设置:延时

等待指定时间之后,执行下一行指令。

tip

可以直接输入延时数值,或者指定寄存器值作为延时数值。

INST_PROG_DELAY编号OP-0sOP10sOP11
延时1000毫秒0203E80000
延时R01寄存器数值时长020001FF00
输入延时
OP/sOP取值含义
OP-00000~FFFF延时数值
sOP1000以输入值为延时数值
sOP1100单位:毫秒
01单位:秒
02单位:分钟
指定延时
OP/sOP取值含义
OP-00000~003F指定寄存器编号
sOP10FF以寄存器值为延时数值
sOP1100单位:毫秒
01单位:秒
02单位:分钟

0x03 设置:定时器

设置定时器进入倒计时,此时倒计时寄存器R23被设置为0001
计时结束后,倒计时寄存器重置为0000

tip

定时器运行时,不影响程序顺序执行。

caution

倒计时寄存器也可以作为普通寄存器使用,但设置定时器时会覆盖原来存有的值。

INST_SET_TIMER编号OP-0OP-1
倒计时5000毫秒0313880000
倒计时10秒03000A0001
info
OP/sOP取值含义
OP-00000~FFFF倒计时数值
OP-10000单位:毫秒
0001单位:秒
0002单位:分钟

0x04 条件跳转:大于输入值

如果寄存器R00存储的数值大于输入数值,跳转到指定的指令行;
否则继续执行下一行。

INST_JUMP_IF_REG0_GR编号OP-0OP-1
如果R00值大于00FF,跳转到01C00400FF01C0
info
OP/sOP取值含义
OP-00000~FFFF输入数值
OP-10000~01FF指定行号

0x05 条件跳转:小于输入值

如果寄存器R00存储的数值小于输入数值,跳转到指定的代码行;
否则继续执行下一行。

INST_JUMP_IF_REG0_LS编号OP-0OP-1
如果R00值小于00EA,跳转到01C50500EA01C5
info
OP/sOP取值含义
OP-00000~FFFF输入数值
OP-10000~01FF指定行号

0x06 条件跳转:等于输入值

如果寄存器R00存储的数值等于输入数值,跳转到指定的指令行;
否则继续执行下一行。

INST_JUMP_IF_REG0_EQ编号OP-0OP-1
如果R00值等于00EC,跳转到00270600EC0027
info
OP/sOP取值含义
OP-00000~FFFF输入数值
OP-10000~01FF指定行号

0x07 条件跳转:大于指定值

如果寄存器R00存储的数值大于指定寄存器的值,跳转到指定的指令行;
否则继续执行下一行。

INST_REG0_REGx_JIGR编号sOP00sOP01OP-1
如果R00值大于R05值,跳转到00100700050010
info
OP/sOP取值含义
sOP0000忽略
sOP0100~3F指定寄存器编号
OP-10000~01FF指定行号

0x08 条件跳转:小于指定值

如果寄存器R00存储的数值小于指定寄存器的值,跳转到指定的指令行;
否则继续执行下一行。

INST_REG0_REGx_JILS编号sOP00sOP01OP-1
如果R00值小于R05值,跳转到00200800050020
info
OP/sOP取值含义
sOP0000忽略
sOP0100~3F指定寄存器编号
OP-10000~01FF指定行号

0x09 条件跳转:等于指定值

如果寄存器R00存储的数值等于指定寄存器的值,跳转到指定的指令行;
否则继续执行下一行。

INST_REG0_REGx_JIEQ编号sOP00sOP01OP-1
如果R00值等于R05值,跳转到00300900050030
info
OP/sOP取值含义
sOP0000忽略
sOP0100~3F指定寄存器编号
OP-10000~FFFF指定行号

0x0A 高级条件跳转:比较指定值

将寄存器R00存储的数值与指定寄存器的值比较,如果返回TRUE跳转到指定的指令行;
否则继续执行下一行。

INST_JUMP_CONDITION编号sOP00sOP01OP-1
如果R00值等于R05值,跳转到00300A01050030
如果R00值大于等于R05值,跳转到00400A05050040
如果R05值为零,跳转到00500A07050050
info
OP/sOP取值含义
sOP0001判断:=
02判断:≠
03判断:>
04判断:<
05判断:≥
06判断:≤
07判断:为零
08判断:不为零或与R00无关
sOP0100~3F指定寄存器编号
OP-10000~01FF指定行号

0x0B 高级条件跳转:判断输入值

根据指定管脚数字输入值的判断结果,跳转到指定的指令行。

INST_JUMP_IF_PORT编号sOP00sOP01OP-1
如果管脚DIN3输入为高,跳转到00300B03010030
如果4个管脚输入二进制数值1101,跳转到00500BFF0D0050

注意第2行指令希望判断输入的数值是否二进制的1101,转换为十六进制:

(1101)2=23+22+20=13160=(0D)16(1101)_{2}=2^{3}+2^{2}+2^{0}=13\cdot16^{0}=(0D)_{16}

所以sOP01要取值十六进制的0D

单管脚判断
OP/sOP取值含义
sOP0000~03指定输入管脚DIN0~DIN3
sOP0100管脚输入为低
01管脚输入为高
OP-10000~01FF指定行号
全管脚判断
OP/sOP取值含义
sOP00FF指定全部4个输入管脚
sOP0100~0F判断管脚输入值对应的十六进制值
OP-10000~01FF指定行号

0x0C 子程序调用:跳转

从当前运行位置,跳转到指定的指令段。

tip

可以多级嵌套使用。

caution

指定的指令段必须包含0D指令语句。
当运行到0D指令时,程序返回跳转前位置的后一行指令继续执行。

INST_ROUTINE编号OP-0OP-1
调用0080行开始的指令段0C00800000
info
OP/sOP取值含义
OP-00000~01FF指定行号
OP-10000忽略

0x0D 子程序调用:返回

使程序返回到最近一个调用指令0C的后一行。

caution

本指令必须配合0C指令使用。

INST_RETURN编号OP-0OP-1
返回最近调用指令的后一行0D00000000
info
OP/sOP取值含义
OP-00000忽略
OP-10000忽略

0x0E 无条件跳转

无条件跳转到指定行号继续执行。

INST_JUMP_TO编号OP-0OP-1
无条件跳转到00100E00000010
info
OP/sOP取值含义
OP-00000忽略
OP-10000~01FF指定行号

0x0F 程序终止

程序运行到该指令后终止。

caution

如果不包含终止指令,程序将一直执行到01FF语句。

INST_TERMINATE编号OP-0OP-1
程序终止0F00000000
info
OP/sOP取值含义
OP-00000忽略
OP-10000忽略