【发布时间】:2014-09-28 17:15:34
【问题描述】:
我有一个 Arduino Uno Rev3,我正在从 C 中的主代码调用以下汇编函数。
#
# Global data (val1)
#
.extern delay
.data
.comm val1,1
.global val1
#
# Program code (compute function)
#
.text
.global compute
compute:
lds r22, val1 ;value of input
ldi r23, 0x00 ;0 value
ldi r24, 0x0D ;value to flash led
flash:
# flash LED
call SDelay ;Short Delay
out 0x04, r24 ;LED On
out 0x05, r24
call SDelay ;Delay
out 0x04, r23 ;LED Off
out 0x05, r23
dec r22
brne flash;
finish:
rjmp finish ;keep looping once finished
SDelay:
# Push registers onto stack
push r22
push r23
push r24
push r25
#Delay
ldi r22, 0xa0
ldi r23, 0x00
ldi r24, 0x00
ldi r25, 0x00
call delay
#Pop registers on stack
pop r25
pop r24
pop r23
pop r22
ret
这应该使 LED 闪烁(我不确定我在这里闪烁的是哪一个)输入的次数。此次数应存储在 val1 中(以 C 计算)。但是,我不知道我做错了什么。
有人能快速解释一下如何让 arduino 板上的特定 LED 闪烁吗?我知道我必须将一个引脚设置为高电平或低电平,但我不知道哪个引脚会为特定的 LED 做到这一点。
我知道这些都是菜鸟问题,但我是 AVR 组装的新手,而且真的很烂。我不会这样做,但我们学校的计算机系认为我们有必要了解这一点。
谢谢!
【问题讨论】: