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?
:
Verschoben durch Moderator
Michael_KM schrieb: > Auch folgendes funktioniert nicht: warum nicht, was geht denn nicht? >.equ __lcd_port=0x12 macht in einen C programm wenig sinn, wie kommst du darauf das du das brauchst?
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.