- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: zwei Einsprungadressen im Assemblerprogramm

  1. #1
    andyoo1
    Gast

    zwei Einsprungadressen im Assemblerprogramm

    Anzeige

    Praxistest und DIY Projekte
    Hi

    Kann mir jemand sagen, wie ich zwei Einsprungadressen im Assemblerprogramm bekomme.
    Ich dachte .org $101 und .org $102 ( aber das geht einfach nicht)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    Ich verstehe Deine Frage nicht ganz, und weiss auch nicht, was "geht einfach nicht" bedeutet.

    Wenn Du ein AS-Programm schreibst und dann die Adresse(n) für die SYS-Aufrufe in CCBASIC brauchst: Schau ins Übersetzungs-Listing, und schreib die Adressen in den SYS-Befehl hin, die Du aufrufen willst. Dazu musst Du im Assembler nix besonderes machen; CCBASIC springt zu Laufzeit einfach da hin und hofft, dass das schon gut gehen wird.

    Wenn Du (warum auch immer) im Assembler ORG-en willst: beim AS80 hab ich nicht ".ORG" geschrieben, sondern " org" (ohne Punkt, mit SPACE vorneweg), und per Parameter (war das "-i" ?) die Befehlssyntax auf "Gross-/Kleinschreibung" gesetzt.

  3. #3
    andyoo1
    Gast
    Hi

    Ich möchte aus dem Basic ins Assembler springen, um einen PCF 8574 einmal zu lesen.
    Weiter untem im Basic möchte ich wieder ins Assembler springen um auf diesem PCF zu schreiben.
    Dafür brauch ich zwei Einsprungadressen. Beide habe ich aus der Liste.
    Aber im Testlauf geht nichts mehr. Assemblerprogramm zeigt auch keinen Fehler an.


    im Basic einmal: sys &H0101 und weiter unten sys &H0102
    im Assembler:
    .org $101
    jsr I2C_Start
    lda $0A1
    jsr I2C_Write
    lda $0A2
    jsr I2C_Write
    jsr I2C_Stop
    jsr I2C_Ack
    rts

    .org $102
    jsr I2C_Start
    lda $0A1
    jsr I2C_Read
    lda $0A2
    jsr I2C_Stop
    jsr I2C_NoAck
    rts

  4. #4
    Gast
    jsr I2C_Write hab ich noch vergessen.kommt nach lda $0A1

  5. #5
    mike123
    Gast
    Hi

    Kann mir jemand sagen ob sich das lesen auf einem PCF 8574 kürzen läst.

    I2C_Read BCLR SDA,DIR
    CLRA
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    LDX PORT1
    LDX PORT2
    RORX
    ROLA
    BSET SCL,PORT1 ; scl hi
    BSET SCL,PORT2 ; scl hi
    RTS

    Ich dache mit (LDX #aber komme nicht weiter.
    Es ist doch 8x das gleiche. Das muß doch gehen ?????ODER

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    Hallo andy001:
    Mir kommen 2 Dinge komisch vor:
    1. Durch den ORG auf &102 überschreibt Dein READ code den WRITE code, der ja bei $101 beginnt und bei $102 noch lange nicht fertig ist. Das kann nicht gehen. Lass den ORG weg, und übernimm für den SYS zum Lesen genau die Adresse, die im Listing für den READ rauskommt (das ist dann nicht mehr $102).
    2. In der READ routine muss das eben gelesene Byte gespeichert werden, also sollte es wohl nicht heissen "jsr I2C_Read / lda $0A2 " sondern "jsr I2C_Read / sta $0A2".



    2. Ich meine, es fehlt generell noch ein JSR auf I2C_ReadLast.
    3
    Vorschlag: Nimm meinen I2C Code

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    PS: der Rest meiner Antwort war Mist:
    Du verwendest ja wohl nicht den system I2C-Bus, sondern Deinen eigenen...

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    Hallo mike123,

    wenn ich's recht sehe, willst Du nicht von EINEM PCF lesen, sondern von ZWEI, die an verschiedenen I2C Bussen hängen (eine Bus am PORT1 und der andere Bus am PORT2). Aber irgendwie hast Du Dich da ver-kopiert:
    1. " LDX PORT1 / LDX PORT2": damit ist der zuerst gelesene Wert vom PORT1 nicht mehr da
    2. "BSET SCL,PORT1 ; scl hi / BSET SCL,PORT2 ; scl hi ": Du setzt zwar SCL bei beiden Port auf HI, aber die müssen doch auch beide wieder LO werden, damit der PCF was tut.

    Willst Du denn wirklich von zwei I2C-Bussen lesen?

    Verkürzen: das sollte auch in einer Schleife gehen: Zähler von 8 runterzählen und dann Schleife oder aufhören.

    Aber schau doch vorher mal da rein: https://www.roboternetz.de/phpBB2/viewtopic.php?t=676

  9. #9
    andyoo1
    Gast
    Hi Jörg

    Alles i.o.
    Ich bin durch das &H0102 in die falsche Richtung gelaufen,
    denn das Programm ist bei &H0102 noch lange nicht fertig.
    Habe meinen Fehler erkannt. Im List steht doch alles drin.
    Habe Adresse nur auf &H0115 gesetzt und alles ist ok.
    Bei &H0115 ist auch der Assembler mit dem Programm fertig.

    Ich Danke Dir für Antwort, denn List brachte mich zum umdenken.

  10. #10
    andyoo1
    Gast
    Hi mike123

    Kannst du deine Frage bitte besser beschreiben.
    Womit möchtest du den Pcf lesen.
    Das ist wichtig, um dir eine Antwort zu geben. Hier eine Adresse die du dir anschauen solltest......
    http://www.wolfgang-back.com/PDF/Assembler.pdf

Seite 1 von 2 12 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

LiFePO4 Speicher Test