- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: Verständnisproblem mit Bitorientierten Befehlen

  1. #1

    Verständnisproblem mit Bitorientierten Befehlen

    Anzeige

    Praxistest und DIY Projekte
    Hallo

    Habe folgendes Verständnisproblem. Ich versuche an meinem PIC Demo Board 2 LEDs einzuschalten.

    Zuerst aktiviere ich die Ausgänge und danach schalte ich sie einzeln mit dem Befehl "BSF" ein. Siehe folgeder CODE:


    BSF STATUS,RP0
    BCF TRISC,0
    BCF TRISC,1
    BCF STATUS,RP0

    BSF PORTC,0
    BSF PORTC,1


    Das Ergebnis ist nur, dass die 2. LED leuchtet, jedoch die erste nicht. Überschreibe ich mit jedem neu geschrieben BITBEFEHL das Regsiter komplett oder was mache ich falsch? (Ich weiss das mann obigen Code vereinfachen kann, aber mich nimmt dass jetzt wunder)

    MFG Marius

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2006
    Ort
    Berlin
    Beiträge
    21
    Das liegt daran, das BCF,BSF u. a. Read-Modify-Write-Befehle sind.
    Das entsprechende Register wird gelesen, ein Bit gesetzt/gelöscht
    und das ganze Byte wieder zurückgeschrieben.
    Durch das interne Befehlspipelining überlappen sich die Ausführungs-
    zyklen aufeinaneiderfolgender Befehle.
    In deinem Fall wird bei dem zweiten BSF-Befehl das Port gelesen,
    bevor der erste Befehl zurückgeschrieben hat.
    Abhilfe: NOP-Befehl dazwischensetzen, LAT-Register verwenden
    oder beide Bits mit einem Befehl verändern,
    z.B. durch movlw B'00000011'
    iorwf PortX

    Gruss
    Digger

Berechtigungen

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

Solar Speicher und Akkus Tests