【发布时间】:2014-06-12 17:46:38
【问题描述】:
我正在尝试让 Raspberry Pi 上的 LED 以时间间隔打开/关闭。我知道有一个关于如何做到这一点的教程,但有人告诉我这对于程序的手段来说太复杂了。
所以我的一个朋友给了我这段代码并告诉我这会延迟执行:
/* using 3 loops for delay*/
for_i:
mov r2, #0
next_i:
cmp r2, #1000
bge endfor
for_j:
mov r3, #0
next_j:
cmp r3, #1000
bge fin_i
for_k:
mov r4, #0
cmp r4, #1000
bge fin_j
add r4, #1
b for_k
fin_j:
add r3, #1
b next_j
fint_i:
add r2, #1
b next_i
endfor:
据我了解,本质上是 3 个嵌套的 for 循环。
我要插入延迟的程序如下所示:
loop$:
/*turn LED on*/
mov r5,#1
lsl r5,#16
str r5,[r4,#40]
*/insert delay*/
/*turn LED off*/
mov r5, #1
lsl r5,#16
str r5, [r4, #28]
*/insert delay*/
b loop$
当我毫无头绪地试图在代码中的某处插入循环时,LED 就一直亮着。 老实说,我不知道如何插入这段代码以使程序延迟,或者即使 3 个循环足以注意到间隔。
打开/关闭 LED 的代码应该可以正常工作,如果我在没有 loop$ 的情况下运行代码,LED 会保持关闭状态,而当我使用这个循环运行代码时,LED 会非常暗
【问题讨论】:
标签: assembly raspberry-pi delay gpio