Assembly 端口G Atmega 128 Avr组件

Assembly 端口G Atmega 128 Avr组件,assembly,avr,atmega,Assembly,Avr,Atmega,我正在尝试使用portG创建一个简单的功能 如果PG0中的开关闭合,则应打开PG1中的led。否则,led应熄灭。然而,我不知道如何使用一位作为输出,而另一位是输入 像这样的C程序应该可以工作: #包括将该程序转换为程序集: main: lds r24,100 ori r24,lo8(2) sts 100,r24 .L2: lds r24,99 sbrs r24,0 rjmp .L3

我正在尝试使用portG创建一个简单的功能

如果PG0中的开关闭合,则应打开PG1中的led。否则,led应熄灭。然而,我不知道如何使用一位作为输出,而另一位是输入


像这样的C程序应该可以工作:

#包括将该程序转换为程序集:

main:
        lds r24,100
        ori r24,lo8(2)
        sts 100,r24
.L2:
        lds r24,99
        sbrs r24,0
        rjmp .L3
        lds r24,101
        ori r24,lo8(2)
        rjmp .L5
.L3:
        lds r24,101
        andi r24,lo8(-3)
.L5:
        sts 101,r24
        rjmp .L2

(这不是一个很好看的汇编程序,因为有99和101这样的任意数字,但您可能可以找出这些数字所指的寄存器,并用regster名称替换这些数字。您还需要重命名标签。)

有一个端口配置寄存器。一旦您配置了哪些管脚是输入的,哪些管脚是输出的,您就可以写入端口,输出管脚将响应您写入的值。非常感谢!特别是,C++转换器就像是对我的一种文艺复兴:)提示:你也可以在命令行上运行<代码> AVR GCC < /C>或<代码> AVR G+++ >代码>,将C/C++转换成汇编。这是那些编译器的主要工作!org只是提供了一个很好的界面。