【发布时间】:2014-10-21 18:48:00
【问题描述】:
您好,我在理解代码时遇到问题。如下:
ldi R17, $02
out PORTD, R17
我不知道$02 是什么意思。你能帮我么?提前谢谢你
【问题讨论】:
-
$02是十六进制数2。
您好,我在理解代码时遇到问题。如下:
ldi R17, $02
out PORTD, R17
我不知道$02 是什么意思。你能帮我么?提前谢谢你
【问题讨论】:
$02 是十六进制数 2。
LDI 操作码是立即加载,这会将数字 2 放入寄存器 R17。然后下面的行将该值从 R17 复制到寄存器 PORTD 中(该寄存器的实际地址取决于您正在运行的确切 Atmel 芯片,在头文件中定义)。这两行将由一行 c 代码生成,例如 PORTD=2;
之所以需要两行是因为端口寄存器的内存空间较高,不能直接将立即值加载到其中。因此,该值首先加载到寄存器中,然后复制到所需的最终位置。
【讨论】: