mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Picdem 2 plus demo board RB0/Interrupt


Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe folgendes Problem. Ich arbeite gerade mit dem Picdem 2 plus 
demo board und einem PIC16f877A. Wie man auf dem Foto sehen kann habe 
ich das rote Kabel mit RB0 verbunden und das braune mit Masse. Es geht 
darum das ich eine einfache TTL prüfung durchführe mit dem 
Widerstand(100 ohm groß) als ersten Test. Also eine gut/schlecht 
Kennung. Im Datenblatt steht das der PIC16f877a an dem Port RB0-RB7 
interne pull up Widerstände hat. Wenn ich also jetzt das potential von 
RB0 auslesen würde müsste 0 rauskommen also low pegel. Aber wenn jetzt 
ein fehler auftritt z.B. ich durchtrenne rechts vom Widerstand das 
"beinchen" sollte an RB0 der pull up das Potential hochziehen und ich 
müsste den high pegel an RB0 erfassen müssen.

Jetzt stellt sich das ganze schwieriger als gedacht ich kann nicht 
direkt auf RB0 zugreifen (!!! Programmiere übrigens in ASSEMBLER!!!) der 
Compiler meint dann "RB0 not previously defined" ich wollte den inhalt 
von RB0 auf dem LCD anzeigen lassen. Beim durchstöbern des Datenblatts 
habe ich auch entdeckt das RB0 bei Potentialwechsel einen Interrupt 
auslösen kann falls man das im OPTION_REG einstellt.

Ich bräuchte also 2 Dinge :
1.) Assembler Code um RB0 auslesen zu können
2.) Assembler Code für Interrupt Service Routine

Falls jemand sich mit Assembler oder diesem PIC auskennt bitte ich um 
Hilfe vielen Dank im voraus

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Ports beim PIC 16F877 heissen PORTA, PORTB, PORTC und PORTD

Den PIN RB0 kann Du z.B. so testen:
    BTFSS PORTB, 0   ; Bit 0 Port B testen, falls 1, dann nächsten 
                     ; Befehl auslassen
    CALL xxxx
    NOP

Ist Bit 0 von Port B gesetzt, macht er direkt bei NOP weiter, 
andernfalls wird erst xxxx aufgerufen. Mit BTFSC geht es genau 
andersherum.

Alternative: Du weist RB0 dem Bit 0 an PORT B zu:
    #define RB0 PORTB, 0

    ...

    BTFSS RB0        ; Bit 0 Port B testen, falls 1, dann nächsten 
                     ; Befehl auslassen
    CALL xxxx
    NOP

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank das werde ich gleich mal ausprobieren

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.