AVR-GCC:错误:垃圾在行尾 [英] AVR-GCC: Error: garbage at end of line

查看:345
本文介绍了AVR-GCC:错误:垃圾在行尾的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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


LED_Blink.asm:10:错误:行末垃圾


行:

  ldi r17,低(RAMEND)
ldi r17,高(RAMEND)

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


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


我的汇编代码:

  .equ SPL,0x3d 
.equ SPH,0x3e
.equ RAMEND,0x8ff
$ b。b .equ PORTB,0x05
.equ DDRB,0x04
.org 0x000000
rjmp main
main:
ldi r17,低(RAMEND)
出SPL,r17
ldi r17,高(RAMEND)
出SPH,r17

ldi r16,0xff
出DDRB,r16
出PORTB,r16
循环:
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 dec16
brne outer_loop
ret


解决方案

对于AVR的GNU汇编器没有任何意义,我想你要使用 lo8 hi8 来分别取低位和高位字节。

I have problem with stack init lines because avr-gcc returns

LED_Blink.asm:10: Error: garbage at end of line

On lines:

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

And I am confused. I have already defined RAMEND. I used avr-gcc with this command:

avr-gcc -x assembler -mmcu=atmega328p LED_Blink.asm

My assembly code:

.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

解决方案

low and high don't mean anything to the GNU assembler for AVR, I think you want to use lo8 and hi8 to take the low and high bytes, respectively.

这篇关于AVR-GCC:错误:垃圾在行尾的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆