PIC indirekte Adressierung

Gast #25946
Hallo

Mit der indirekten Adressierung habe ich noch meine Probleme.

Ich möchte zu Testzwecken drei Bytes nacheinander an PORTB ausgeben. 
Dazu möchte ich die indirekte Adressierung über das FSR-Register 
benutzen.

Meine Bytes, die ausgeben werde sollen, liegen in den Registern 0x10, 
0x11 und 0x12.
Das Programm soll immer das Byte ausgeben, das gerade im FSR steht.
Sind alle drei Bytes einmal angezeigt worden, soll der PIC in 
Sleep-Modus gehen.

Hab' den asm-File mal angehängt. Der macht aber nicht das, was er soll.


mfg   Wolfram Hildebrandt
Angehängte Dateien:
Gast
Hallo

Hat sich erledigt.

Ich habe habe zwei asm-Files erstellt. Der eine wurde verändert, der 
andere ist ein alter File.
Jetzt habe ich dämlicherweise immer den falschen File gebrannt.
Gast
mir dieser einstellung müsste es eigentlich hinhauen. Hattest du 
eigentlich den WDT eingeschaltet? Wenn demm so ist dann macht ihn aus.

    movwf  0x10

    movlw  B'00001111'
    movwf  0x11

    movlw  B'10101011'
    movwf  0x12


    bcf     STATUS, IRP
    movlw  0x10
    movwf  FSR


    movlw  D'3'   !!!!!!!!!!
    movwf  0x13

loop
  movfw  INDF
     movwf  PORTB
     call  waitl
Gast
Ich kann Dir zwar nicht sagen welchen Still Du Dir angewöhnen sollst, 
aber es erleichtet die Lesbarkeit der Programme, wenn Du nicht die 
Adressen der Register nimmst, sondern ihnen Namen gibts.

Und als Ziel nicht 1
    incf  FSR,1
sondern
    incf  FSR,F
das liest sich unmisverständlich


    movlw  D'2'
ist
    movlw       .2




start

    movlw  B'11111111'
    movwf  0x10

    movlw  B'00001111'
    movwf  0x11

    movlw  B'10101011'
    movwf  0x12


    bcf     STATUS, IRP
    movlw  0x10
    movwf  FSR


    movlw  D'2'
    movwf  0x13

loop
  movfw  INDF
     movwf  PORTB
     call  waitl

    incf  FSR,1
    decfsz  0x13
    goto  loop



    Sleep
Gast
Hallo Reiner

Wo du gerade schon die Zahlensystem ansprichst,
was bedeutet denn 0x0C. Klar, das ist die Adresse 0Ch im Flash-Speicher.

Wie schreibt man das denn im PIC, wenn man z.B. 1FF hat?
 0x1FF?, oder x1FF, oder 01FF???
Gast
Nein. Ich bin nicht sicher, wie ich Zahlen schreiben muss, damit der PIC 
sie versteht.
Binärzahlen schreibt man ja als B'XXXXXXXX'.
Dezimalzahlen als D'X' oder .X.

Wie muss man denn generell große Hexadezimalzahlen schreiben, damit der 
PIC sie versteht.
Kleine Zahlen habe ich bisher immer so geschrieben: z.B. 0x0C.
Bei größeren Zahlen also solchen mit drei oder mehr Ziffern wie z.B. 1FF 
weis ich nicht, was ich dann mit dem X aus der gewohnten Schreibweise 
(z.B. 0x0C) machen soll.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.