Difference between revisions of "AVR Programming/de"

From Lazarus wiki
Jump to navigationJump to search
Line 26: Line 26:
 
==Assembler==
 
==Assembler==
 
Bei AVR ist auch Inline-Assembler möglich, dies funktioniert gleich, wie auf dem PC, der grosse Unterschied ist, das man AVR-Assembler verwenden muss.<br>
 
Bei AVR ist auch Inline-Assembler möglich, dies funktioniert gleich, wie auf dem PC, der grosse Unterschied ist, das man AVR-Assembler verwenden muss.<br>
In diesem Beispielen sieht man, das die Label anders als bei Intel deklariert werden.
+
In diesem Beispielen sieht man, das die Label anders als bei Intel deklariert werden. Der Labelbezeichner muss mit '''.L'''xxx beginnen.
  
 
Assemblerblock:
 
Assemblerblock:
Line 48: Line 48:
 
   jmp .L2
 
   jmp .L2
 
end;
 
end;
 +
</syntaxhighlight>
 +
 +
Falsche Bezeichung, das es nicht mit '''.L''' beginnt.
 +
<syntaxhighlight lang="pascal">
 +
asm
 +
  .ABC:  //  Syntax-Fehler !
 +
  ...
 +
end,
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 22:06, 1 March 2018

Template:Translate

Wichtige Hinweise zu AVR-Programmierung

Generell geht alles nicht, was dynamisch ist, zB. Classen, dynamische Arrays, dynamische Strings.

Integer

Die Integer sind nur 16Bit gross, somit wird nur ein Bereich von -32'768 bis +32'767 abgedeckt. Ansonsten muss man einen LongInt oder int32 nehmen.

Classen

Classen gehen nicht auf einem AVR, alternativ Object nehmen.

Fliesskommazahlen

Fliesskommazahlen sollten wen möglich vermieden werden, da der AVR dies Hardwaremässig nicht unterstützt.

String

AVR unterstützen nur ShortString, dies muss mit folgendem Compilerschalter eingestellt werden.

{$H-}

Oder man deklariert den String so:

var
  s : String[123];

Assembler

Bei AVR ist auch Inline-Assembler möglich, dies funktioniert gleich, wie auf dem PC, der grosse Unterschied ist, das man AVR-Assembler verwenden muss.
In diesem Beispielen sieht man, das die Label anders als bei Intel deklariert werden. Der Labelbezeichner muss mit .Lxxx beginnen.

Assemblerblock:

procedure MyAsmProc;
begin
  asm
    .L2:
    nop
    jmp .L2
  end;
end;

Komplette Assembler Procedure:

procedure MyAsmProc; assembler;
asm
  .L2:
  nop
  jmp .L2
end;

Falsche Bezeichung, das es nicht mit .L beginnt.

asm
  .ABC:  //  Syntax-Fehler !
  ...
end,

Siehe auch

Autor: Mathias