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


von Rene (Gast)


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

von Carsten S. (dg3ycs)


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.)
1
LOOP
2
  BTFSS  PORTA,SW1  ; Taste 1 Gedrückt
3
  GOTO   LOOP    ; Nein, zurück zum Start  
4
  BTFSS  PORTA,SW2  ; Taste 2 Gedrückt
5
  GOTO   LOOP    ; Nein, zurück zum Start  
6
  GOTO    S1ANDS2    : Taste 1 & 2 gedrückt, Sprung zum vorgesehenem Code  
7
        ; (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

von John (Gast)


Lesenswert?

Hallo Rene,
hier ist ein Beispiel für eine UND-Verknüpfung:
1
  COMF    PORTA, W        ; Complement von Port A laden
2
  ANDLW   B'00000011', W  ; ausmaskieren der Eingänge
3
  BTFSC   STATUS, Z       ; wenn Ergebnis 0 ist wird Z-Flag gesetzt
4
  BSF     PORTB, 0        ; -> RB0 auf 1
5
  BTFSS   STATUS, Z       ; wenn Z-Flag nicht gesetzt ist
6
  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:
1
  MOVF    PORTA, W        ; Port A laden
2
  ANDLW   B'00001100', W  ; ausmaskieren der Eingänge
3
  BTFSC   STATUS, Z       ; wenn Ergebnis 0 ist wird Z-Flag gesetzt
4
  BCF     PORTB, 1        ; -> RB1 auf 0
5
  BTFSS   STATUS, Z       ; wenn Z-Flag nicht gesetzt ist
6
  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

von DerFuutFurz (Gast)


Lesenswert?

Kennst du Parsic ???

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.