Assembler in C-Code integrieren

Gast #2183389
Lesenswert?
• ▲
▼
Hallo

Ich benütze einen Tiny13 mit 1k Flash und muss dazu sehr sparsam 
programmieren.

An Stelle von
PORTB |= (1 << 3);
versuche ich Assembler folgendermassen in C-Code zu integrieren:
asm volatile ("sbi PORTB, 3");

Doch leider erscheinen dabei die 2 Fehlermeldungen:
C:\Users\me\AppData\Local\Temp/ccd2aXXf.s: Assembler messages:
C:\Users\me\AppData\Local\Temp/ccd2aXXf.s:141: Error: constant value 
required

Was bedeutet das? Wie kann ich den Assembler-Code korrekt einbauen?
Bin um eure Hilfe sehr dankbar!!!
#2183413
Lesenswert?
• ▲
▼
markus schrieb:
> An Stelle von
> PORTB |= (1 << 3);
> versuche ich Assembler folgendermassen in C-Code zu integrieren:
> asm volatile ("sbi PORTB, 3");

Macht das der Compiler nicht automatisch? Der gcc optimiert einzelne 
Bits setzen  löschen zu sbi  cbi.
Du kannst nicht einfach PORTB usw hinschreiben, das ist etwas 
komplizierter.
Hier das Inline-ASM Manual 
http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
Gast #2183579
Lesenswert?
• ▲
▼
markus schrieb:
> C:\Users\me\AppData\Local\Temp/ccd2aXXf.s:141: Error: constant value
> required
> Was bedeutet das? Wie kann ich den Assembler-Code korrekt einbauen?

Genau das was da steht: die Ports des µC müssen Konstanten sein. Ein 
angeschlossenes Ventil liegt ja schliesslich nicht mal auf diesem und 
dann auf einem anderen Port.

Gruss Reinhard

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.