- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Parameterübergabe C-Programm -> Assembler Source

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2006
    Beiträge
    5

    Parameterübergabe C-Programm -> Assembler Source

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Atmel-Freunde,

    dieses Problem treibt mich noch in den Wahnsinn. Ich möchte aus meinem in C verfassten Programm Funktionen einer Assembler-Source-Datei aufrufen. Dabei sollen Parameter übergeben werden. Soweit ist es auch kein Problem, aber wenn ich z.B.

    sbi PORTB, PB4

    dynamisch realisieren möchte, komme ich nicht weiter.

    PORTB soll fix sein, aber die Position des Bits (PB4) möchte ich übergeben. sbi erwartet aber einen "constant value" und kein Register. Der Befehl "sbi PORTB, 4" funktioniert ja auch. Wie kann ich diese einfache Dezimalzahl nun am einfachsten übergeben?

    Ich glaube fast, die Frage könnte hier als Scherz aufgefasst werden, aber ich stehe erst am Anfang der Assembler-Programmierung

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.10.2007
    Beiträge
    68
    Hallo mfischer,

    nicht verzweifeln, es liegt nicht an Dir, sondern daran, das der µC natürlich wissen muß welches Bit zu setzen ist. Der Befehl erwartet einen konstanten Ausdruck.

    Eine Lösungsmöglichkeit, in Assembler das Bit ein ODERN


    Register xx enthält Bitmuster von C-Code

    IN ax,PINB
    OR ax,xx
    OUT PORTB,ax

    oder in C mittels switch case den richtigen Konstanten-Ausdruck verwenden (nicht so schön).

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo gummi_ente,
    Der Ansatz ist schonmal nicht schlecht, aber Achtung manchmal fällt man damit ziemlich auf die Schnauze.
    Ich habe vor kurzem diese Erfahrung gemacht Klick mich

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    11.12.2006
    Beiträge
    5
    Danke für Eure Antworten. Leider bin ich aber noch nicht auf die praktische Lösung gestoßen.

    Ich arbeite mit einem Tiny2313. Sein PORTB Register würde demnach auf 0x18 liegen, richtig? An welcher Stelle würde ich nach PINB suchen?

    Die C-Variante des Konstantenwählens hab ich auch nicht verstanden. Wie ist es denn möglich, der ASM-Source eine Konstante zu übermitteln, die dann nicht in einem Register liegt. Vielleicht über Inline-Assembler, aber das wollte ich eigentlich vermeiden.

    Nochmals danke für Eure Mühe.
    Viele Grüße,
    MF

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test