【问题标题】:Setting specified pins in avr assembly as outputs将 avr 程序集中的指定引脚设置为输出
【发布时间】:2021-02-13 23:11:21
【问题描述】:

我正在尝试解决以下两行空代码的问题,我开始感到困惑。任何人都可以帮助我填写哪些代码以及为什么要填写。

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

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

【问题讨论】:

  • 是什么导致了您的问题?只需将适当的二进制值写入DDRA

标签: assembly avr


【解决方案1】:

您可以通过写入名为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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 2019-08-07
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多