Forum: Mikrocontroller und Digitale Elektronik PIC indirekte Adressierung


von HDW (Gast)


Angehängte Dateien:

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

von HDW (Gast)


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.

von Tom (Gast)


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

von Reiner (Gast)


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

von Reiner (Gast)


Lesenswert?

Ich war noch nicht fertig da kommt noch was

von Reiner (Gast)


Lesenswert?

Oh, zwischenzeitlich gibts schon ne Lösung. Ich bin still

von HDW (Gast)


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???

von Reiner (Gast)


Lesenswert?

0x1FF
welche Anweisung denn, org?

von HDW (Gast)


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.

von Reiner (Gast)


Lesenswert?

Wie bei C.
0xFF
0x1FF
0x1234
0x23
0x0F

usw.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.