mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16F627 logische Verknüpfung


Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe das Velleman P8048 Kit und versuche mich seit Tagen in diese 
Geschichte einzuarbeiten. Ist es möglich, die Ein- und Ausgänge logisch 
mit und / oder zu verknüpfen??? Wenn ja, wie sieht der Quellcode aus.

Wie kann ich Schalter SW1 und SW2 als und abfragen?????

    BTFSC  PORTA,SW2
    GOTO    ENDE

MfG
Rene

Autor: Carsten Sch. (dg3ycs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich weiß jetzt nicht ob deine Taster nach High oder LOw Tasten, evtl. 
musst du also das BTFSS durch BTFSC ersetzen. Ansonsten ist es aber ganz 
easy!
Wobei es formal natürlich keine ganz echte Logische Verknüfung ist, da 
es theoretisch ja reichen würde die Taster ganz kurz nacheinander zu 
Drücken.
Da so schnell aber keiner ist kann man es durchaus gelten lassen ;-)
(Im richtigen Moment müsste man die Taster dann im Mikrosekundenabstand 
drücken.)
LOOP
  BTFSS  PORTA,SW1  ; Taste 1 Gedrückt
  GOTO   LOOP    ; Nein, zurück zum Start  
  BTFSS  PORTA,SW2  ; Taste 2 Gedrückt
  GOTO   LOOP    ; Nein, zurück zum Start  
  GOTO    S1ANDS2    : Taste 1 & 2 gedrückt, Sprung zum vorgesehenem Code  
        ; (Alternativ einfach mit dem Code weitermachen

Hier würde das Programm jetzt solange in der LOOP Schleife hängen bis 
beide Taster gedrückt sind. Statt nach LOOP kannst du auch überall 
anders hin springen.  Statt dem "GOTO S1ANDS2" kannst du auch direkt den 
CODE dort hin schreiben der dann ausgeführt werden soll...

Gruß
Carsten

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rene,
hier ist ein Beispiel für eine UND-Verknüpfung:
  COMF    PORTA, W        ; Complement von Port A laden
  ANDLW   B'00000011', W  ; ausmaskieren der Eingänge
  BTFSC   STATUS, Z       ; wenn Ergebnis 0 ist wird Z-Flag gesetzt
  BSF     PORTB, 0        ; -> RB0 auf 1
  BTFSS   STATUS, Z       ; wenn Z-Flag nicht gesetzt ist
  BCF     PORTB, 0        ; -> RB0 auf 0

Mit der Maske im zweitem Befehl legst Du fest welche Pins miteinander 
verknüpft werden (hier Port A bit 0 und 1). Entsprechend der Zustände 
dieser Pins wird der Ausgang (hier Port B bit 0) gesetzt.


hier ein Beispiel für eine ODER-Verknüpfung:
  MOVF    PORTA, W        ; Port A laden
  ANDLW   B'00001100', W  ; ausmaskieren der Eingänge
  BTFSC   STATUS, Z       ; wenn Ergebnis 0 ist wird Z-Flag gesetzt
  BCF     PORTB, 1        ; -> RB1 auf 0
  BTFSS   STATUS, Z       ; wenn Z-Flag nicht gesetzt ist
  BSF     PORTB, 1        ; -> RB1 auf 1

Hier wird der Ausgang (Port B bit 1) auf high gesetzt, wenn Port A bit 2 
oder Port A bit 3 (oder beide) auf high sind.

Gruß
John

Autor: DerFuutFurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennst du Parsic ???

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.