Anzeigemodul 2 von Scott-Falk Huehn [AVR]

OP #1241054
Lesenswert?

Hallo Forengemeinde,

ich wollte heute besagten Code assemblieren und bekomme dabei folgenden 
Fehler:
1
AVRASM: AVR macro assembler 2.1.17 (build 435 Apr 10 2008 09:27:55)
2
Copyright (C) 1995-2008 ATMEL Corporation
3

4
D:\avr\tempmess-am2-v2020\AnzModul2.asm(112): Including file 'C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\m128def.inc'
5
D:\avr\tempmess-am2-v2020\AnzModul2.asm(1893): error: syntax error, unexpected '\n', expecting '('
6

7
Assembly failed, 1 errors, 0 warnings
.
Der Angemeckerte asm Block sieht so aus:
1
  ldi  r22,0xa0    ;schmales Leerzeichen laden
2
  call  asclcd      ;Zeichen ausgeben
3
  movw  r16,r8      ;gesicherte EEPROM-Adresse holen
4
  ldi  r19,16      ;Preset-Textlänge im EEPROM
5
  call  eeplcd      ;EEPROM-Text ausgeben
6
  rjmp  m13110
7
;
8
; Menüzeile ausgeben: Menü-Option ausgeben
9
;
10
m13100:  call  strlen      ;Stringlänge ermitteln -- hier meckert er!
11
  ldi  r20,222      ;Endposition der Menüzeile
12
  sub  r20,r18      ;Text-Anfang berechnen, bis
13
  ldi  r21,126      ;dahin alle Pixel löschen
14
  mov  r18,r13      ;gesicherte Anfangsposit. holen

Die Funktion strlen sieht so aus:
1
strlen:  clr  r18      ;Länge Anfangswert=0 setzen
2
  lds  r16,confg1    ;Konfigurationsbyte 1 holen
3
  bst  r16,0      ;Sprache englisch?
4
  brts  str110      ;nein -> weiter
5
  ldi  zl,byte3(stengl*2)  ;sonst
6
  out  rampz,zl
7
  ldi  zl,low(stengl*2)
8
  ldi  zh,high(stengl*2)  ;Zeiger auf englische Texte
9
  rjmp  str120
10
;
11
str110:  ldi  zl,byte3(stgerm*2)
12
  out  rampz,zl
13
  ldi  zl,low(stgerm*2)
14
  ldi  zh,high(stgerm*2)  ;Zeiger auf deutsche Texte
15
;
16
str120:  elpm  r16,z+      ;Zeichen holen
17
  cpi  r16,0xfe    ;String-Kennung gefunden?
18
  brne  str120      ;nein -> weiter suchen
19
  elpm  r16,z+      ;Zeichen holen
20
  cp  r16,r22      ;Zeichenkette gefunden?
21
  breq  str130      ;ja -> Länge ermitteln
22
  cpi  r16,0xfe    ;Endezeichen gefunden?
23
  brne  str120      ;nein -> weitersuchen
24
  ret        ;sonst Ende
25
;
26
str130:  elpm  r16,z+      ;Zeichen holen
27
  cpi  r16,0xff    ;Endezeichen?
28
  brne  str140      ;nein -> weiter
29
  ret        ;sonst Ende
30
str140:  cpi  r16,' '      ;Leerzeichen?
31
  brne  str150      ;nein -> weiter
32
  ldi  r16,0xa0    ;sonst schmales Leerzeichen
33
str150:  subi  r16,0x20    ;Korrektur für Tabelle
34
  cpi  r16,0xe0    ;Bereich überschritten?
35
  brcs  str160      ;nein -> weiter
36
  ret        ;sonst Ende (Fehler)
37
str160:  ldi  r17,12      ;Tabellen-Offset
38
  mul  r16,r17      ;Tabellenplatz berechnen
39
  push  zl
40
  push  zh
41
  in  zl,rampz
42
  push  zl      ;String-Zeiger sichern
43
;
44
  ldi  zl,low(chrset*2)  ;Zeiger auf Zeichentabelle L
45
  ldi  zh,high(chrset*2)  ;Zeiger auf Zeichentabelle H
46
  ldi  r16,byte3(chrset*2)  ;Zeiger auf Zeichentabelle B3
47
  clr  r17
48
  add  zl,r0      ;Tabellenadresse L berechnen
49
  adc  zh,r1      ;Tabellenadresse H berechnen
50
  adc  r16,r17      ;Tabellenadresse B3 berechnen
51
  out  rampz,r16
52
  elpm  r16,z      ;Zeichenbreite holen
53
;
54
  pop  zl
55
  out  rampz,zl
56
  pop  zh
57
  pop  zl      ;String-Zeiger restaurieren
58
  inc  r16      ;Zeichenbreite korrigieren
59
  add  r18,r16      ;zur Gesamtlänge addieren
60
  rjmp  str130      ;Schleife
.
Wie bekomm ich das jetzt zum Assemblieren?
Mit Assembler kenn ich mich (noch) nicht aus.
SD-Fritze

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren