计算机实验室之树莓派:课程 2 OK02
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/26/120026xuuxhsb00kqsubkk.jpg">Media</a>OK02 课程构建于 OK01 课程的基础上,通过不停地打开和关闭 OK 或 ACT LED 指示灯来实现闪烁。假设你已经有了 <a href="https://linux.cn/article-10458-1.html">课程 1:OK01</a> 操作系统的代码,它将是这一节课的基础。1、等待等待是操作系统开发中非常有用的部分。操作系统经常发现自己无事可做,以及必须要延迟。在这个例子中,我们希望通过等待,让 LED 灯打开、关闭的闪烁可以看到。如果你只是打开和关闭它,你将看到这个视觉效果,因为计算机每秒种可以打开和关闭它好几千次(LCTT 译注:视觉暂留效应会使你难以发觉它的闪烁)。在后面的课程中,我们将看到精确的等待,但是现在,我们只要简单地去消耗时间就足够了。<pre class="prettyprint linenums">mov r2,#0x3F0000wait1$:sub r2,#1cmp r2,#0bne wait1$</pre>sub reg,#val 从寄存器 reg 中的值上减去数字 valcmp reg,#val 将寄存器中的值与数字 val 进行比较。如果最后的比较结果是不相等,那么执行后缀了 ne 的 b 命令。上面是一个很常见的产生延迟的代码片段,由于每个树莓派基本上是相同的,所以产生的延迟大致也是相同的。它的工作原理是,使用一个 mov 命令将值 3F000016 推入到寄存器 r2 中,然后将这个值减 1,直到这个值减到 0 为止。在这里使用了三个新命令 sub、 cmp 和 bne。sub 是减法命令,它只是简单地从第一个参数中的值减去第二个参数中的值。cmp 是个很有趣的…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/26/120026xuuxhsb00kqsubkk.jpg">Media</a>OK02 课程构建于 OK01 课程的基础上,通过不停地打开和关闭 OK 或 ACT LED 指示灯来实现闪烁。假设你已经有了 <a href="https://linux.cn/article-10458-1.html">课程 1:OK01</a> 操作系统的代码,它将是这一节课的基础。1、等待等待是操作系统开发中非常有用的部分。操作系统经常发现自己无事可做,以及必须要延迟。在这个例子中,我们希望通过等待,让 LED 灯打开、关闭的闪烁可以看到。如果你只是打开和关闭它,你将看到这个视觉效果,因为计算机每秒种可以打开和关闭它好几千次(LCTT 译注:视觉暂留效应会使你难以发觉它的闪烁)。在后面的课程中,我们将看到精确的等待,但是现在,我们只要简单地去消耗时间就足够了。<pre class="prettyprint linenums">mov r2,#0x3F0000wait1$:sub r2,#1cmp r2,#0bne wait1$</pre>sub reg,#val 从寄存器 reg 中的值上减去数字 valcmp reg,#val 将寄存器中的值与数字 val 进行比较。如果最后的比较结果是不相等,那么执行后缀了 ne 的 b 命令。上面是一个很常见的产生延迟的代码片段,由于每个树莓派基本上是相同的,所以产生的延迟大致也是相同的。它的工作原理是,使用一个 mov 命令将值 3F000016 推入到寄存器 r2 中,然后将这个值减 1,直到这个值减到 0 为止。在这里使用了三个新命令 sub、 cmp 和 bne。sub 是减法命令,它只是简单地从第一个参数中的值减去第二个参数中的值。cmp 是个很有趣的…