Ich möchte dieses Assembler Programm aus dem C Programm aufrufen. Dabei soll ein Wert (im Bsp. 0x23) an das Assembler Programm übergeben werden. Wie funktioniert das? Wo finde ich die 0x23? Assembler Datei: #define _ASSEMBLER_ 1 #define __SFR_OFFSET 0 #include <avr/io.h> #include <ports.h> .global display_command display_command: cbi LCD_PORT, LCD_CLK cbi LCD_PORT, LCD_DATA sbi LCD_PORT, LCD_CLK ldi r19, 8 dis_cmd1: cbi LCD_PORT, LCD_CLK mov r16, r24 rol r16 C: extern void display_command(char data); display_command(0x23);
hallo, selber nicht ausprobiert, aber schau mal hier: http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage bei "Function call conventions" lässt mich vermuten, dass R24 verwendet wird. bye kosmo
Ja, das habe ich gerade auch im Dissassembler gesehen, dass es R24 ist. Die verwenden wohl einfach bestimmte Register je nach Anzhal der Parameter. Ich vermisse im Dissassembler Fenster jedoch den Code für den Assembler File. Schreibt AVR Studio den nicht mit rein?
Warum machst du's nicht in inline-Assembler? Dann wird die Parameterübergabe von der C-Seite erledigt.
Es ging um eine Grafikroutine, die ich in Assembler schreiben wollte, damit das Display schneller ist. Das wäre in Inline Assembler zu aufwendig. Mittlerweile läuft der Code und wird als externe Assembler Funktion eingebunden. Damit ist das Display 3,5-4 mal schneller.
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.