Forum: Mikrocontroller und Digitale Elektronik assembler kod in C


von Jiri (Gast)


Lesenswert?

Ich brauche Hilfe mit assembler kod in C program (ATmega). Wie man eine 
Konstante in der Registr einfügen? So etwas wie

void tik(uint8_t value){
  asm("ldi  r16, value“);

von Peter II (Gast)


Lesenswert?

Die Frage ist wozu? Was hast du davon wenn die Varible im dem Register 
steht?

von Olli (Gast)


Lesenswert?


von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

solche Vermischung ist nie sinnvoll, das geht auch allein in C .

Zeig mal das ganze Programm und erkläre die Notwendigkeit der ASM 
Programmierung an deiner speziellen Stelle.


Axel

von Jiri (Gast)


Lesenswert?

Ich möchte eine Funktion für eine kurze Zeitverzögerung zu schaffen.
Der Assembler

       ldi R16, 1
Timer: dec R16
       brne Timer

Ich möchte die Zeitverzögerung als Parameter übergeben.
Ich weiß, dass in der WinAVR delay.h. Aber ich brauche eine sehr kurze 
Zeit.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

for(i = 0; i < 100; i++) asm("nop");

von Knut (Gast)


Lesenswert?

Wie kurz?


Knut

von Jiri (Gast)


Lesenswert?

Von 3 bis 10 us.

von Sam (Gast)


Lesenswert?

Dafür ist Inline ASm geeignet. Die rn Seite erklärt das gut. Dabei gibt 
man das Register aber nicht selbst an sondern überlässt diese Aufgabe 
dem Compiler.

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.