Carousel
跑马灯实例由5行指令,实现在编程器主控板顶部的4个LED指示灯轮转点亮的效果。
所需素材
- 编程器主控板
- 电源
tip
在辅助屏的对应页可以查看数值移位的过程中寄存器存储值的变化。
实例拆解
1. 点亮首个LED
主控板顶部4个LED指示灯是数字输出端口,以亮灭状态显示寄存器存储值。
首先调用10
指令向寄存器写入数值0001
。
10 0001 0001
然后调用13
指令将该寄存器存储值输出到数字端口点亮最右侧的首个LED指示灯
13 0001 0000
info
数字输出端口只输出存储值末尾的4-bit二进制值。如果写入以下值
写入值的二进制值最低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