mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ausgänge getrennt schalten


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wer hat enie Idee wie ich den 4333 z.B. als Lichtschalter programmieren 
kann. Mit den 6 Tastern sollen die Ausgänge beschaltet werden, jeder 
Taster soll die entsprechenden Ausgang getrennt einschalten und nur nach 
nochmaliger betätigung wieder ausschalten.

Wer hat eine Idee, das Programm was ich habe hält die Zustände  hält.

Vielen Dank

Jürgen

.include "4433def.inc"     ;bzw. 2333def.inc

         ldi r16, 0xFF
         out DDRB, r16     ;Port B durch Ausgabe von 0xFF ins
                           ;Richtungsregister DDRB als Ausgang 
konfigurieren
         ldi r16, 0x00
         out DDRD, r16     ;Port D durch Ausgabe von 0x00 ins
                           ;Richtungsregister DDRD als Eingang 
konfigurieren
loop:
         in r16, PIND      ;an Port D anliegende Werte (Taster) nach r16 
einlesen
         out PORTB, r16    ;Inhalt von r16 an Port B ausgeben
         rjmp loop         ;Sprung zu "loop:" -> Endlosschleife

Autor: Thomas F. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

im Anhang ein Asm-Programm, mit dem es evtl. gehen könnte.
Der Zustand der Ausgänge wird dabei zwischengespeichert und mit den 
Eingängen xor-verknüpft.
Was man noch beachten müsste: Problem bei mehr als zwei Taster (fast) 
gleichzeitig gedrückt und Entprellung der Taster.

Gruß
Thomas

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Antwort!!!

Bei mir funktioniert nur leider das Programm auch nicht es leuchtet 
immer nur Bit0, die Taster ändern den Zustand nicht.

Vielen Dank im vorraus

Jürgen

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wirf vielleicht einen Blick in die Codesammlung hier.

Michael

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe so etwas in meiner Wohnung realisiert - die wird von einem 
80535 gesteuert.
Leider hilft es Dir nichts, wenn ich ein Code-Segment poste, da die 
Taster-Funktion mit einem Logik-Interpreter verwoben ist.

Knackpunkt: Du mußt an Deinen Eingängen Flanken erkennen. Das heißt, daß 
z.B. nur bei einem 0->1 Übergang ein Ereignis ausgelöst wird. Hierzu 
löse ich alles auf Bit-Ebene auf, somit geht mir auch ein gleichzeitiger 
Tastendruck nicht verloren. Wird nun ein Eingangs-Ereignis (Flanke) 
erkannt, wird der ensprechende Ausgang getoggelt (xor-Verknüpfung).
Entprellen ist ganz einfach: Die Eingänge mit 50 Hz im Interrupt 
abfragen, da braucht man sich um entprellen keine Gedanken mehr machen, 
kein Kontakt prellt 20ms lang...

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab es herausgefunden

sbr r24,1

Danke für die Mühe

Jürgen

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, nur dieser eine Befehl löst das Problem aber nicht ?

Autor: Daniel Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lad dir die Kostenlos Bascom Version runter.

Und dann machst du grob das hier:

Start:
Entprelle Taster1->Out1
Entprelle Taster2->Out2
...
Springe zu Start

Out1:
Toggle Ausgang1
Springe zu Start

Out2:
Toggle Ausgang2
Springe zu Start

...

Mit dem "grob" Programm geht es auf jeden Fall mit Entprellung und 
allem.

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.