欢迎光临散文网 会员登陆 & 注册

【深圳 IO 攻略】第 2 关:信号放大器

2022-05-31 14:55 作者:ココアお姉ちゃん  | 我要投稿

本文首发于 B 站《深圳 IO》文集(https://www.bilibili.com/read/readlist/rl569860)。原创不易,转载请注明出处。

关卡展示

这一关的要求是将【控制输入】端口的值扩大 2 倍送到【控制输出】端口中。这一关我们需要接触一些新的和算术有关的指令:

加法指令:add I/R/P,将 acc 寄存器的值加上【指定的数/寄存器中的数/从端口获得的数】,并覆盖 acc 寄存器原始的值。

减法指令:sub I/R/P,将 acc 寄存器的值减去【指定的数/寄存器中的数/从端口获得的数】,并覆盖 acc 寄存器原始的值。

乘法指令:mul I/R/P,将 acc 寄存器的值乘以【指定的数/寄存器中的数/从端口获得的数】,并覆盖 acc 寄存器原始的值。

遗憾的是,这个游戏里的 MC 系列芯片没有提供任何除法指令。

以上算术指令的计算结果限定在 -999~+999 范围内。如果计算结果低于下限值,则 acc 会变为下限值 -999;如果计算结果高于上限值,则 acc 会变为上限值 +999。

例如,执行以下指令后,acc 寄存器的值会变成 999 而不是 1000:

那么很明显,我们这一关需要把【控制输入】端口的值读入 acc,然后执行乘法指令将读入的值 ×2(或者执行加法指令加上 acc 自身),再执行 mov 指令将处理后的值送入【控制输出】端口即可。执行完以上操作后,需要执行 slp 指令休眠一秒,以便进入下一个时钟周期。若不执行休眠指令,则芯片会在同一个时钟周期内死循环。

现在我们从元件库中拖入一块【MC4000】到开发板中,将这块芯片的 p0 口和【控制输入】端口相连,p1 口和【控制输出】端口相连,并写出如下代码:

点击左下角的【模拟】,稍等片刻,便会弹出结算界面:


【深圳 IO 攻略】第 2 关:信号放大器的评论 (共 条)

分享到微博请遵守国家法律