将 avr 程序集中的指定引脚设置为输出

Setting specified pins in avr assembly as outputs

我正在尝试解决下面两行空白代码的问题,但我开始感到困惑。谁能帮我看看应该填什么代码,为什么要填。

假设 PORTA 上的引脚 4 和 2 连接到一个额外的输出设备 (DevD)。填写第 1-2 行,以便将相应的引脚指定为输出。不要将端口上的任何其他引脚配置为输出。

.include “m128def.inc”
.def mpr = r16
START:
.org [=10=]00
   JMP INIT
.org [=10=]04
   RCALL ISR_DevA
   RETI
.org [=10=]0C
   RJMP ISR_DevB 
   NOP 
.org [=10=]10
   RJMP ISR_DevC
INIT:
   ldi mpr, 0b00110000
   sts EICRA, mpr
   ldi mpr, 0b11101000
   out EICRB, mpr
   ldi mpr, 10100010
   out EIMSK, mpr
   ldi mpr, [=10=]
   out DDRD, mpr 
   out DDRE, mpr 
   (1) ________________
   (2) ________________
   sei
   ...

您可以通过写入名为 DDRx(数据方向寄存器)

的寄存器来将引脚指定为 AVR 微控制器中的输出或输入

对于端口 A 中的每个引脚,DDRA 寄存器中都有对应的位控制此引脚是作为输出还是输入(1 表示输出,0 表示输入)

要将 PORTA 上的引脚 4 和 2 作为输出,您必须在相应位中放入“1”,这意味着您必须将值 0b00010100 写入寄存器 'DDRA'

ldi r16, 0b00010100 ; put the value in r16 register
out DDRA, r16       ;write to the DDRA the value in r16