简述
指令(opcode)是属于某一类别的具体功能。在指令模式下它表示为一个 8 位(单字节)十六进制数,在"助记符模式"下则表示为缩写形式。
指令集按 6 个分册发布:
- 基础控制与跳转 —
0x00~0x0F、0x41~0x44 - 寄存器运算 —
0x10~0x21、0x2A~0x2E、0x30、0x32 - 绘图显示 —
0x55~0x5B - 传感器 —
0xAD - 外设配置 —
0xC0~0xD0、0xE1~0xE3、0xEB~0xEF - 彩灯与音乐 —
0xE4~0xE7、0xE8、0xFE
程序行格式
每行代码由 5 个字节组成:[inst] [P00] [P01] [P10] [P11]。在编程器界面上,一行显示为:
LINE INST OP-0 OP-1
其中 LINE 是 3 位十六进制行地址,INST 是指令码(2 位十六进制)或其助记符,OP-0 = P00+P01、OP-1 = P10+P11(各 4 位十六进制)。
基本单位
| 标签 | 说明 | 范围 |
|---|---|---|
| P00 | 第 1 个 8 位操作数字节 | 00~FF |
| P01 | 第 2 个 8 位操作数字节 | 00~FF |
| P10 | 第 3 个 8 位操作数字节 | 00~FF |
| P11 | 第 4 个 8 位操作数字节 | 00~FF |
组合的 16 位操作数
| 标签 | 组成 | 范围 |
|---|---|---|
| OP-0 | P00 + P01 组合为 16 位 | 0000~FFFF |
| OP-1 | P10 + P11 组合为 16 位 | 0000~FFFF |
操作数解释方式
自指令集 v2 起,操作数只有三种解释方式。凡是 16 位参数,一律标注为 P00P01 = 16 位整体 或 P10P11 = 16 位整体——不要拆成两个独立字节。
方式 A — 两个 8 位子操作数 + 一个 16 位整体
| P00 | P01 | P10P11 |
|---|---|---|
00~FF | 00~FF | 0000~FFFF(整体) |
典型:跳转家族(0x04~0x0E,P10P11 = 目标行)、0x10 FZ(P10P11 = 立即数)、0x02/0x03(P00P01 = 时值,P10P11 = 寻址方式 + 单位码)。
方式 B — 四个独立的 8 位子操作数
| P00 | P01 | P10 | P11 |
|---|---|---|---|
00~FF | 00~FF | 00~FF | 00~FF |
典型:绘图家族(X/Y 坐标)、0xE4 CD(灯号 + R/G/B)。
方式 C — 16 位整体 + 16 位整体
| P00P01 | P10P11 |
|---|---|
0000~FFFF(整体) | 0000~FFFF(整体) |
典型:0xE1~0xE3、0xEB~0xEF(通道位掩码 / 占空比)。
无关操作数
有些指令不需要操作数,或某些操作数字节被忽略。这些位置在分册表格中标注为**"无关"**。
警告
标注为"无关"的操作数可以取任意值。为清晰一致起见,文档中被忽略的操作数统一写作 00 或 0000。
单位码
时值的单位由 P11 中的单位码选择,由 0x02 YS(延时)与 0x03 DS(定时)共用:
| 码 | 0(默认) | 1 | 2 | 3 | 4 | 0x10 |
|---|---|---|---|---|---|---|
| 时值 | 1 ms | 10 ms | 100 ms | 1 s | 10 s | 1 min |
端口体系
端口体系由 0x0B TZ、0x13 SS、0x14 QS、0x41 JT 和 0x42 DK 共用:
| 端口 | 引脚 | 方向 | 说明 |
|---|---|---|---|
| Port0 | 00~06 | 只读 | 7 个板载按钮 |
| Port1 | 10~17 | 双向 | 8 路数字 IO(LED 网络)—— SS 写恢复输出方向,QS 读切换为输入上拉 |
| Port2 | 20~23 | 输出 | 4 路 IO/PWM 复用引脚 |
| Port3 | 30~3F | 只读 | ADS1115 16 通道(高于 2.5 V 记 1 / 毫伏值) |
| Port4~6 | 40~6F | 只写 | PCA9685 模块 0/1/2,各 16 通道 |
引脚寻址:1 字节 = port<<4 | pin,如 0x14 = Port1 Pin4。