Skip to main content

Carousel

跑马灯实例由5行指令,实现在编程器主控板顶部的4个LED指示灯轮转点亮的效果。

所需素材
  • 编程器主控板
  • 电源
tip

在辅助屏的对应页可以查看数值移位的过程中寄存器存储值的变化。

实例拆解

1. 点亮首个LED

主控板顶部4个LED指示灯是数字输出端口,以亮灭状态显示寄存器存储值。 首先调用10指令向寄存器写入数值0001

10 0001 0001

然后调用13指令将该寄存器存储值输出到数字端口点亮最右侧的首个LED指示灯

13 0001 0000
info

数字输出端口只输出存储值末尾的4-bit二进制值。如果写入以下值

(17)10=(1  0001)2(33)10=(10  0001)2(49)10=(11  0001)2(17)_{10}=(1\;0001)_{2}\\ (33)_{10}=(10\;0001)_{2}\\ (49)_{10}=(11\;0001)_{2}\\ \vdots

写入值的二进制值最低4位值只要是0001,就能实现仅点亮最右侧LED指示灯的效果。

点亮LED指示灯后调用02指令设置点亮持续时间。

02 0001 0001

2. 数值移位

要让跑马灯滚动起来,就要将点亮LED的数值按位左移。
这里调用15指令将存储值左移一位。

15 1101 0001
caution

跑马灯效果是循环滚动点亮,所以这里的15指令允许循环移位。

3. 循环执行

数值移位后,程序应该循环执行点亮继而移位的逻辑。
所以调用0E指令,无条件跳转到循环开始位置,也就是输出存储值的指令行继续执行。

0E 0000 0001

完整代码

carousel.ist
10 0001 0001
13 0001 0000
02 0001 0001
15 1101 0001
0E 0000 0001