将 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
我正在尝试解决下面两行空白代码的问题,但我开始感到困惑。谁能帮我看看应该填什么代码,为什么要填。
假设 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
(数据方向寄存器)
对于端口 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