mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC indirekte Adressierung


Autor: HDW (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: HDW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich war noch nicht fertig da kommt noch was

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, zwischenzeitlich gibts schon ne Lösung. Ich bin still

Autor: HDW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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???

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x1FF
welche Anweisung denn, org?

Autor: HDW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie bei C.
0xFF
0x1FF
0x1234
0x23
0x0F

usw.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.