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


von Bob H. (Firma: hinter den 7 bergen) (bob128)


Angehängte Dateien:

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

von Stephan (Gast)


Lesenswert?

Die Ports beim PIC 16F877 heissen PORTA, PORTB, PORTC und PORTD

Den PIN RB0 kann Du z.B. so testen:
1
    BTFSS PORTB, 0   ; Bit 0 Port B testen, falls 1, dann nächsten 
2
                     ; Befehl auslassen
3
    CALL xxxx
4
    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:
1
    #define RB0 PORTB, 0
2
3
    ...
4
5
    BTFSS RB0        ; Bit 0 Port B testen, falls 1, dann nächsten 
6
                     ; Befehl auslassen
7
    CALL xxxx
8
    NOP

von Bob H. (Firma: hinter den 7 bergen) (bob128)


Lesenswert?

vielen dank das werde ich gleich mal ausprobieren

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.