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
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.
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
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
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???
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.