【问题标题】:AVR-GCC: Error: garbage at end of lineAVR-GCC:错误:行尾有垃圾
【发布时间】:2016-03-25 22:17:58
【问题描述】:

我的堆栈初始化行有问题,因为 avr-gcc 返回

LED_Blink.asm:10: 错误:行尾有垃圾

上线:

ldi r17, low(RAMEND)
ldi r17, high(RAMEND)

我很困惑。我已经定义了 RAMEND。我在这个命令中使用了 avr-gcc:

avr-gcc -x 汇编器 -mmcu=atmega328p LED_Blink.asm

我的汇编代码:

.equ    SPL, 0x3d
.equ    SPH, 0x3e
.equ    RAMEND, 0x8ff

.equ    PORTB, 0x05
.equ    DDRB, 0x04
.org    0x000000
rjmp main
main:
    ldi r17, low(RAMEND)
    out SPL, r17
    ldi r17, high(RAMEND)
    out SPH, r17

    ldi r16, 0xff
    out DDRB, r16
    out PORTB, r16
loop:
    ldi r16, 32
    rcall outer_loop
    cbi PORTB, 5
    ldi r16, 32 
    rcall outer_loop
    sbi PORTB, 5
    rjmp loop
outer_loop:
    clr r24
    clr r25
delay_loop:
    adiw r24, 1
    brne delay_loop
    dec r16
    brne outer_loop
    ret

【问题讨论】:

    标签: gcc assembly avr avr-gcc atmel


    【解决方案1】:

    lowhigh 对 AVR 的 GNU 汇编器没有任何意义,我认为您想使用 lo8hi8 分别获取低字节和高字节。

    【讨论】:

    • @PaulR 无论如何都是半有用的。这意味着它只适用于地址,这似乎不是现实——它也适用于常量:)
    • 谢谢。好像要过去了。但是我遇到了另一个问题: avr-gcc -Wall -g -mmcu=atmega328p -o LED_Blink.elf LED_Blink.o /usr/lib/gcc/avr/4.8.1/../../../ avr/lib/avr5/crtm328p.o:(.init9+0x0): undefined reference to `main' collect2: error: ld returned 1 exit status
    • 已解决。只需删除 -mmcu=atmega328p。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多