Forum: Compiler & IDEs asm inline-coding in C (AVR Studio)


von Georg S. (hgs07)


Lesenswert?

Bei der C-Compilierung (Assemblierung) des untenstehenden 
Code-Schnipsels  erhalte ich die Fehlermeldung:
...\Temp/ccC9yBGs.s:37: Error: constant value required
Gibt es im Forum einen Experten für diesen speziellen Fall, der mir 
helfen kann? Ich habe vieles versucht, aber mir fällt nichts Gescheites 
mehr ein.
Wo liegt der Fehler?
Danke im voraus
Georg

static void lcd_out( uint8_t data ) {
   data &= 0xF0;
   // Die 4 Bits im oberen Nibble spiegeln
   //  MSB                       LSB
   //  bit7 bit6 bit5 bit4 0 0 0 0
   // Nach der Spiegelung:
   //  MSB                       LSB
   //  bit4 bit5 bit6 bit7 0 0 0 0
   asm volatile ( "lds r3, data"  "\n\t"
                  "bst r3, 7"     "\n\t"
                  "bld r4, 4"     "\n\t"
                  "bst r3, 6"     "\n\t"
                  "bld r4, 5"     "\n\t"
                  "bst r3, 5"     "\n\t"
                  "bld r4, 6"     "\n\t"
                  "bst r3, 4"     "\n\t"
                  "bld r4, 7"     "\n\t"
                  "lds data, r4"  "\n\t"
                 : /* No Output List */
                 : /* No Input List */
                 : "r3", "r4"
                );
.
.
.
}

: Verschoben durch User
von waschmaschinenforscher (Gast)


Lesenswert?


von Floh (Gast)


Lesenswert?

Keiner weis wo bei dir Zeile 37 ist.
Außerdem beschleicht mich hier gerade sowieso die Sinnfrage, wieso man 
diesen Programmteil in Assembler schreiben will und den Rest in C.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

> Experten für diesen speziellen Fall
> Ich habe vieles versucht

beschreib doch mal, was du schon alles versucht hast. Damit brauchen 
dann die Experten hier im Forum dich nicht nochmal mit Dingen zu 
langweilen, welche du schon ausprobiert hast, und können zielgerichteter 
dein Problem angehen

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
Noch kein Account? Hier anmelden.