跳到主要内容

指令范例库

来自指令分册的 40 个完整范例程序。每个范例可直接复制 whole 程序文本,或一键送入代码分析器逐行解读。灰色 00 为未使用的占位符字节。

空操作指令SKIP / 0x00
空操作:什么都不做,顺序执行下一行指令。
000 00 0000 0000
001 00 0000 0000
002 00 0000 0000
003 0F 0000 0000
Set Digital Output / 0x01
000 01 0000 0001
001 00 0000 0000
002 01 0000 0000
003 00 0000 0000
004 01 0000 0009
005 0F 0000 0000
延时指令YS / 0x02
等待指定时间,在这个时间内单片机停止一切工作,时间到再执行下一行指令。
000 01 0000 0001
001 02 03E8 0000
002 01 0000 0000
003 02 03E8 0000
004 0F 0000 0000
定时指令DS / 0x03
启动定时器后程序继续执行;定时到期时硬件将超时标志寄存器R23置位(R23需程序自行清0),程序可查询R23判断时间到。
000 03 1388 0000
001 03 0000 0000
002 0F 0000 0000
大于转指令DYZ / 0x04
将两个寄存器R0与R1中的值进行比较,当R0>R1时跳转到H指定的目标行继续执行,否则顺序执行。
000 10 0000 0000
001 02 0001 0001
002 12 0000 0001
003 04 0008 0010
004 05 0008 0020
005 06 0008 0030
006 02 03E8 0000
007 0E 0000 0001
010 01 00FF 000C
011 0E 0000 0001
020 01 00FF 0003
021 0E 0000 0001
030 01 00FF 0006
031 0E 0000 0001
大于等于转指令DDZ / 0x07
当R0≥R1时跳转到H,否则顺序执行。
000 10 0000 0000
001 10 0005 0008
002 12 0000 0001
003 07 0005 0010
004 08 0005 0020
005 09 0005 0030
006 02 03E8 0000
007 0E 0000 0002
010 01 00FF 0008
011 0E 0000 0001
020 01 00FF 0004
021 0E 0000 0001
030 01 00FF 0002
031 0E 0000 0001
条件转指令TJZ / 0x0A
将专用比较寄存器R0与寄存器Rn按条件码M比较,条件成立跳转到H,否则顺序执行。条件码7/8(为0/非0)只判断Rn本身。
000 10 0000 0064
001 10 0000 0050
002 0A 0003 0005
003 01 0000 0001
004 0F 0000 0000
端口跳转指令TZ / 0x0B
检测端口/引脚电平,读到1则跳转到H,否则顺序执行。
000 25 0000 000F
001 0B FF0D 0010
002 0E 0000 0000
003 00 0000 0000
010 01 00FF 00F0
011 0F 0000 0000
调子程序指令DY / 0x0C
跳转到子程序首行执行,遇到FH(0x0D)返回到DY的下一行。子程序可嵌套调用,最多16层。
000 00 0000 0000
001 0C 0010 0000
002 0F 0000 0000
003 00 0000 0000
004 00 0000 0000
010 01 00FF 00FF
011 0C 0020 0000
012 0D 0000 0000
020 02 0001 0001
021 01 00FF 0000
022 0D 0000 0000
转移指令ZY / 0x0E
无条件跳转到指定的目标行继续执行。
000 25 0000 000F
001 0B FF0D 0010
002 0E 0000 0001
003 00 0000 0000
010 01 00FF 00F0
011 0F 0000 0000
赋值指令FZ / 0x10
向指定寄存器写入数值。运行结果可以在寄存器信息页面实时查看。
000 10 001C 03E8
001 00 0000 0000
002 13 001C 0000
003 0F 0000 0000
寄存器赋值指令RFZ / 0x11
将源寄存器R1中的值复制到目标寄存器R0中。
000 10 001C 03E8
001 11 001D 001C
002 13 001D 0000
003 0F 0000 0000
增减寄存器指令ZJ / 0x12
将指定寄存器的值增加或减少N。禁止溢出时:加法上限0xFFFF、减法下限0。
000 10 001C FF00
001 12 001C 03E8
002 13 001C 0000
003 02 0005 0001
004 12 011C 03E8
005 13 001C 0000
006 0F 0000 0000
送数指令SS / 0x13
将寄存器的值送到指定端口。
000 10 001C 03E8
001 11 001D 001C
002 13 001D 0000
003 0F 0000 0000
取数指令QS / 0x14
读取整个端口的状态存入指定寄存器。读1号口时自动转为输入方向(上拉),供外部器件驱动。
000 10 0025 00FF
001 14 001C 0000
002 00 0000 0000
003 0E 0000 0001
循环移位指令XHYW / 0x15
将指定寄存器存储值向左或向右移位指定位数。
000 10 0001 0001
001 13 0001 0000
002 02 0001 0001
003 15 1101 0001
004 0E 0000 0001
位异或指令WYH / 0x19
将目标寄存器与源寄存器按位异或,结果存回目标寄存器(R0 ^= R1)。
000 10 0025 000F
001 10 0007 8009
002 10 0009 FF00
003 0B FF0E 0010
004 0B FF0D 0020
005 0B FF0B 0030
006 0B FF07 0040
007 0E 0000 0000
010 16 0007 0000
011 0E 0000 0000
020 17 0007 0009
021 0E 0000 0000
030 18 0007 0009
031 0E 0000 0000
040 19 0007 0009
041 0E 0000 0000
寄存器除指令RCHU / 0x1D
将目标寄存器的值除以源寄存器的值,商存回目标寄存器(R0 /= R1)。
000 10 0025 000F
001 10 0006 0020
002 10 0008 1234
003 0B FF0E 0010
004 0B FF0D 0020
005 0B FF0B 0030
006 0B FF07 0040
007 0E 0000 0000
010 1A 0008 0006
011 0E 0000 0000
020 1B 0008 0006
021 0E 0000 0000
030 1C 0008 0006
031 0E 0000 0000
040 1D 0008 0006
041 0E 0000 0000
寄存器取余指令RQY / 0x1E
将目标寄存器的值除以源寄存器的值,余数存回目标寄存器(R0 %= R1)。
000 10 0006 0020
001 10 0008 1234
002 02 0001 0001
003 1E 0008 0006
004 0F 0000 0000
随机数指令SJS / 0x1F
生成一个随机数(低16位)写入指定寄存器。
000 1F 0005 0000
001 02 0001 0001
002 0E 0000 0000
高低交换指令GDJH / 0x21
将寄存器的高8位与低8位字节交换。
000 10 0025 000F
001 10 0005 2450
002 10 0006 FF00
003 0B FF0E 0010
004 0B FF0D 0020
005 0E 0000 0000
010 20 0005 0006
011 02 0001 0001
012 0E 0000 0000
020 21 0005 0000
021 02 0001 0001
022 0E 0000 0000
除指令CHU / 0x2D
将指定寄存器中的值除以立即数,商存回该寄存器。
000 10 0025 000F
001 10 0008 1234
002 0B FF0E 0010
003 0B FF0D 0020
004 0B FF0B 0030
005 0B FF07 0040
006 0E 0000 0000
010 2A 0008 0020
011 0E 0000 0000
020 2B 0008 0020
021 0E 0000 0000
030 2C 0008 0020
031 0E 0000 0000
040 2D 0008 0020
041 0E 0000 0000
取余指令QY / 0x2E
将指定寄存器中的值除以立即数,余数存回该寄存器。
000 00 0000 0000
001 10 0008 1234
002 02 0001 0001
003 2E 0008 0020
004 0F 0000 0000
编码七段指令BMQD / 0x30
将源寄存器中的数值拆成十位和个位(或十六进制高/低半字节),分别查七段字形码表:高8位=十位段码、低8位=个位段码,写入目标寄存器(bit7=a…bit0=dp)。
000 C5 0001 0000
001 C6 0001 0000
002 30 3E00 0000
003 EA 0000 0190
004 16 0000 0000
005 EA 0000 00C8
006 0E 0000 0002
三寄存器运算指令TJYS / 0x32
三寄存器运算:R0 = R1(运算码Y)R2,如Y=3时R0=R1+R2。
000 10 0001 73E8
001 10 0002 1024
002 10 0003 0000
003 32 0300 0102
004 32 0301 0102
005 32 0302 0102
006 32 0303 0102
007 32 0304 0102
008 32 0305 0102
009 32 0306 0102
00A 32 0307 0102
00B 32 0008 0102
00C 32 030B 0102
00D 32 000C 0100
00E 32 030D 0102
00F 0F 0000 0000
显示数字指令SC / 0x55
在屏幕指定位置显示寄存器数值,支持小数格式化显示。
000 C3 0001 0000
001 11 0001 002E
002 10 0028 FFFF
003 55 0000 0122
004 02 03E8 0000
005 10 0028 0210
006 5A 0000 FFFF
007 0E 0000 0000
显示文字指令WZ / 0x56
在屏幕指定位置显示寄存器内存中的ASCII文字。
000 C3 0001 0000
001 10 0004 5465
002 10 0005 6D70
003 10 0006 6572
004 10 0007 6174
005 10 0008 7572
006 10 0009 653A
007 10 0028 FFFF
008 56 2020 040C
009 02 03E8 0000
00A 10 0028 0210
00B 5A 0000 FFFF
00C 0E 0000 0000
线段指令HX / 0x5B
以画笔色画一条线段。
000 10 0028 001F
001 57 2020 2000
002 10 0028 07E0
003 58 7070 1000
004 10 0028 F100
005 59 3030 5580
006 10 0028 07FF
007 5A 1010 2020
008 10 0028 FFFF
009 5B 6060 2020
00A 0E 0000 0000
读AD通道指令AD / 0xAD
将ADS1115指定通道的采样值读入指定寄存器。采样由系统周期自动刷新,本指令读取缓存值而非即时转换。
000 10 0028 001F
001 57 2020 2000
002 10 0028 07E0
003 58 7070 1000
004 10 0028 F100
005 59 3030 5580
006 10 0028 07FF
007 5A 1010 2020
008 10 0028 FFFF
009 5B 6060 2020
00A 0E 0000 0000
模块配置指令MKPZ / 0xC0
一次性配置多个模块的开关状态:位图某位为1开启对应模块,为0关闭对应模块。
000 C0 0000 085F
001 0F 0000 0000
Activation Switch: ADC Module / 0xC1
000 C1 0001 0000
001 AD 0001 0005
002 01 00FF 0000
003 02 0005 FF00
004 01 00FF 0000
005 02 0005 FF00
006 0E 0000 0001
Activation Switch: Temperature and Humidity Sensor / 0xC3
000 C3 0001 0000
001 11 0001 002E
002 10 0028 FFFF
003 55 0000 0122
004 10 0028 0210
005 5A 0000 FFFF
006 0E 0000 0000
Activation Switch: Colour Sensor / 0xC4
000 C4 0001 0000
001 E5 3101 0001
002 0E 0000 0001
Activation Switch: External PWM Generator / 0xC5
000 C5 0001 0000
001 C1 0001 0000
002 10 0000 0003
003 10 0001 0019
004 AD 0000 0002
005 1D 0002 0001
006 12 0002 00C8
007 00 0000 0000
008 EA 0000 0002
009 0E 0000 0002
Activation Switch: RTC Clock Module / 0xC6
000 C6 0001 0000
001 13 003E 0000
002 0E 0000 0001
Set Onboard PWM Channel Duty Cycle / 0xC8
000 C0 0000 0000
001 C8 0001 03E8
002 0E 0000 0001
彩灯颜色指令CD / 0xE4
设置指定WS2812B彩灯的颜色。彩灯处于熄灭态时自动转为点亮。
000 E4 00FF 8000
001 02 0001 0001
002 E4 00FF 0000
003 02 0001 0001
004 E4 0000 FF00
005 02 0001 0001
006 E4 0000 00FF
007 0F 0000 0000
寄存器组彩灯指令RCD / 0xE5
用寄存器组中的颜色批量设置连续多颗彩灯的颜色。熄灭态自动转点亮。
000 C4 0001 0000
001 E5 3101 0001
002 0E 0000 0001
发音指令FY / 0xE8
板载蜂鸣器发出一个指定音高、指定时值的音。播放期间临时占用PA1蜂鸣器,播完自动归还PB3 PWM。
000 C0 0000 0800
001 E8 000F 0001
002 E8 0000 0001
003 E8 000F 0001
004 E8 0011 0001
005 E8 0013 0001
006 0F 0000 0000
PCA9685 Register Channel and Value / 0xEA
000 C5 0001 0000
001 C1 0001 0000
002 10 0000 0003
003 10 0001 0019
004 AD 0000 0002
005 1D 0002 0001
006 12 0002 00C8
007 00 0000 0000
008 EA 0000 0002
009 0E 0000 0002