Inline Assembler ATMEL Studio 6.1

Gast #3313785
Lesenswert?

Hallo.

Ich möchte gern mit ATMEL Stduio 6.1 und dem eingebundenen C Compiler
des Codevision ein alphanumerisches LCD ansteuern. Auf PORTD, ist
Adresse 0x12.
Dazu möchte ich gern die folgende Zeile einbinden:

.equ __lcd_port=0x12

im Inline Assembler im ATMEL Studio 6.1 einfügen.
Leider habe ich es bisher nicht geschafft mit

ams volatile (".equ __lcd_port=0x12")

es zum Laufen zu bekommen.
Auch folgendes funktioniert nicht:

#define LCD_PORT PORTD

Ist die Syntax verkehrt?
Und wenn ja wie muss die Syntax korrekter weise lauten?
Zusätzlich habe ich die LCD.h des Codevision eingebunden um die dort 
verwendete LCD.LIB zu verwenden.
Kann mir jemand helfen?
Gast #3313830
Lesenswert?

Ich möchte gern die vorhandene Libary für alphanumerische LCD's 
verwenden LCD.LIB heißt diese.
Zur Einbindung wird eine entsprechende LCD.h verwendet, in welcher auf 
diese Bibliothek zugegriffen wird.

Die Bibliothek ist nun in Assembler geschrieben. Und der LCD_Port muss 
im C Code initalisiert werden, da dieser universell sein soll.

Im Compiler des Codevision werden in C definierte Variablen im Inline 
Assembler mit "__" eingeleitet. Somit kann im Assembler auf diese 
Variablen zu geriffen werden.

Lasse ich das ATMEL Studio außen vor und arbeite mit dem Codevision 
direkt, funktioniert die Einbidung tadellos:

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

.
.
.
.

lcd_init(16);

lcd_gotoxy(1,0);
sprintf(string,"AAAA");
lcd_puts(string);

Wenn ich das mit dem Codevision compeliere und dann brenne, zeigt das 
Display alles korrekt an.
Ich habe nun versucht im ATMEL Studio das gleiche nachzu empfinden. 
Bisher ohne Erfolg. Leider weiß ich nicht genau wo mein Klemmer ist.
#3313912
Lesenswert?

Das hat aber nichts mit dem AVR-Studio an sich zu tun.

Das AVR-Studio macht nur die Verwaltung der Programmtexte, Aufrufe des 
COmpilers, Aufruf des Assemblers etc.

Wenn du den Codevision Compiler ins AVR-Studio eingebunden hast, dann 
ändert sich nichts an der Syntax. Denn es ist ja nach wie vor der 
gleiche Compiler wie sonst auch, der sich den Programmtext vornimmt und 
übersetzt. Und dem Texteditor ist es piep schnurz egal, was du in deinen 
Programmtext hineinschreibst.
Allenfalls kommt das Syntax-Highlighting durcheinander. Aber das ist 
eine Sache des Komforts und nicht der Programmfunktionalität.


Ich glaube allerdings eher, dass du eben nicht den Codevision Compiler 
ins AVR-Studio eingebunden hast, sondern nach wie vor mit dem 
default-mässig installierten AVR-GCC arbeitest.
Ganz abgesehen davon, dass eine 08/15 HD44780 LCD Library in Assembler 
zu schreiben, für einen C-Programmierer keine gute Idee ist. Es gibt 
ganz einfach keinen Grund dafür. Ob der µC jetzt in C Däumchen dreht 
oder direkt in Assembler ist Jacke wie Hose.

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