asm inline-coding in C (AVR Studio)

OP #2240696
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"
                );
.
.
.
}

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