-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Assemlber-Befehle

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30

    Assemlber-Befehle

    Anzeige

    Hallo zusammen,
    ich finde nirgendswo erklärt, was für Befehle es bei Assembler gibt für

    if
    else
    for

    do
    loop

    kleiner als
    größer als
    kleiner oder gleich als
    größer oder gleich als
    +
    -
    *
    /

    des weiteren wollte ich Fragen, wie ich es bewerkstelligen kann, dass wenn ich einen Wert bei einer Schnittstelle einlese, nacheinander die Bits einzeln im gleichen Register setze.

    z.B. so:

    das Register 16 ist leer
    nun liest er einen Wert ein
    und setzt beim ersten Bit des Register 16 eine 1 oder eine 0

    dann liest er wieder einen Wert ein
    und setzt beim zweiten Bit des Register 16 eine 1 oder eine 0

    ingesamt wird dies 8 mal bewerkstelligt.
    Nachdem er das Register 16 mit Werten gefüllt hat, wird dieses Register woanderst hinkopiert.

    Wenn das Register woanderst hinkopiert wird, sollte eine Variabele mit dem Wert 1 addiert wird.

    Damit will ich erreichen, damit das Programm aber einer gewissen empfangen Byte Zahl aufhört zu arbeiten.

    Hoffe ihr könnt mir schnellstmöglich helfen

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Hallo Andy123,

    ich kann dir nur die Seite von Sprut empfehlen:

    www.sprut.de

    Ich bin leider auch neu und quäle mich auch durch die Assembler Befehle durch....

    Viel Spaß
    michael

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    dann gibts da noch das PDF von Atmel, in dem alle Befehle der AVRs stehen:
    http://www.atmel.com/dyn/resources/p...ts/doc0856.pdf
    Welche Befehle der AVR nun wirklich kann, steht in dessen Datenblatt relativ weit hinten "Instruction Set Summary".

    Diese Seite wird auch gern erwähnt:
    http://www.avr-asm-tutorial.net/index.html

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Auch in unserer Wiki tut sich da was.
    http://www.roboternetz.de/wissen/ind...inf%C3%BChrung

    Besonders deine Fragen findest du hier
    http://www.roboternetz.de/wissen/ind...Cr_Bascom-User
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111
    Hi!
    If, else, for, do usw. sind Hochsprachenbefehle! Dafür gibt es kein Pendant in Assembler! Die entsprechenden Funktionen musst Du Dir aus einzelnen Befehlen zusammenbauen.
    Bsp.: If x=0 then code
    - kopiere x in r16: ldi r16, x
    - vergleiche mit 0: cpi r16, 0
    - springe nach"Gleich" wenn gleich: breq Gleich
    - sonst mache was anderes: anderer Code
    Gleich ist dabei ein Label.
    Da Du sowas nicht zu wissen scheinst, empfehle ich dringend ein Buch oder ähnliches. In diesem Forum kann Dir das Programmieren an sich keiner erklären. Das ist einfach zu viel.
    Bit 3 in Register r16 wird mit Bit 3 von Register r17 zb so gesetzt:
    Isoliere Bit 3 in r17: andi r17, 0b00001000
    übertrage isoliertes Bit in r16: or r16, r17
    Das hab ich jetzt schnell runtergeschrieben, Richtigkeit garantiere ich nicht.
    Gruß

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30
    http://www.avr-asm-tutorial.net/index.html

    Diese Seite ist doch dafür gut geeignet oder


    Mir geht es eigendlich nur darum, dass ich z.B Daten von einem GPS Empfänger hinaustakten muss.
    Demnach muss ich ein I/O Register verwenden wo ich z.B. Pin 1 auf Ausgang schalte.
    Anschliessend muss ich beim gleichen I/O Register dann Pin 2 auf Eingang schalten.
    Nun lese ich bei diesem Eingangspin einen digitalen Wert 1 oder 0 ein.

    Diesen Wert speichere ich dann in ein anderes Register z.B. name "erstesRegister".
    Dieses Register ist dann r0.

    Zu vor muss aber das Schieberegister name "zweitesRegister, was r1 ist" um 1 addiert werden.

    Demzufolge weiss man dann, wo der eingelesene Binärwert bei welchem Bit des Registers erstesRegister gespeichert werden muss.

    Hat das Register zweitesRegister den Wert 8 erreicht, so wird der Binärcode vom Register erstesRegister in eine SD Karte geschoben.


    Diese SD Karte hat nun z.B. 12 Sektoren.
    Jedes Sektor besitzt 512 Byte.

    Wurden nun 8 Bit des Registers erstes Register in die SD Karte geschoben, so wird dann anschliessend ein anderes Register namens drittesRegister "was r3 ist" mit dem Wert 8 addiert.

    Nun werden die Register erstesRegister, zweitesRegister auf den Wert 0 zurückgesetzt.

    Nun läuft dieses Programm dann solange ab, bis das Register drittesRegister den Wert 6144 hat.
    Nun wird das Programm unterbrochen und eine rote LEd fängt an zu leuchten.


    Demzufolge benötige ich noch 3 Register.

    r4 = um 1 Ausgang bei I/O zu schalten "für GPS Empfänger"
    r5 = um 1 Eingang bei I/O zu schalten "für GPS Empfänger
    r6 = um 1 Ausgang bei I/O zu schalten "für SD KArte"


    r4 bis r6 werden dann in das I/O Register geladen.

    Wäre dies so möglich, wie ich es gerade beschildert habe?

    Bis denne

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.07.2006
    Ort
    Mannheim
    Beiträge
    454
    In der Hilfe des AVR Studios (Assembler Hilfe) ist jeder Befehl erklärt.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Warum willst Du mit Null Ahnung Assembler direkt so was "großes" machen ?

    Bring erstmal eine LED zum blinken...

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

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    03.02.2007
    Beiträge
    30
    Frage, ist die Programmierung des Atmega8 mit der Hochsprache C besser?
    Wenn ja, wo gibt es da Befehlreferenzen.

    Mit Assembler würde mir ein viel zu langer Bart wachsen.

    Cu

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Fakt ist, solange du nicht per DU mit dem Mikrocontroller bist bleibt dir wohl nur Basic ... nur wirklich lernen wirst du damit nichts.

    Für anständig kompilierten Code sollte man sich mit C näher befassen.
    In Assembler programmieren meines Wissens nach nur Leute, die:
    1. sich wirklich mit dem Mikroconroller beschäftigen
    2. zeitkritische Dinge verwirklichen wollen.

    Grüße,
    Hanni
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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