Forum: Mikrocontroller und Digitale Elektronik Schalten mit AT90S8535


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von iceman (Gast)


Lesenswert?

Hallo
ich suche einen code mit dem ich beim 90S8535 die A- und B-Ports als
eingang für taster nehmen kann und die C- und D-Ports als ausgang für
LEDs. Das ganze sollte dann so funktionieren:

ich drücke (z.b.)taste 1 an port A
LED 1 an port C leuchtet
ich drücke dann taste 1 an port B
LED 1 geht aus und LED 2 geht an

und das mit allen ports

Wenn jemand ne idee hat wie ich das machen kann, bitte posten#

Vielen Dank

von Peter D. (peda)


Lesenswert?

Du must erstmal aufschreiben, was Du eigentlich machen willst.
Erst dann kannst Du oder ein anderer erkennen, wie das zu programmieren
ist.

Die paar Zeilen sind jedenfalls hoffnungslos unterbestimmt, damit kann
keiner was anfangen. Am besten wäre ein PAP (Programmablaufplan).

Einfacher wirds, wenn man erstmal festlegt, welche LEDs und Tasten
funktional zusammen gehören und wieviele dieser Funktionseinheiten dann
parallel arbeiten müssen.


Peter

von Tobi (Gast)


Lesenswert?

BYTE ia,ib;

   DDRA = 0xff;  //in
   DDRB = 0xff;  //in

   DDRC = 0x00;  //out
   PORTC = 0xff;
   DDRD = 0x00;  //out
   PORTD = 0xff;

   ia = 0xff;
   ib = 0xff;

   while (1) {
     if (ia != PINA) { PORTC = PINA; ia = PINA;}
     if (ib != PINB) { PORTD = PINB; ib = PINB;}
   }

   damit du auch noch was hast darfst du jetzt die tasten entprellen.
  viel spass :)

von Peter D. (peda)


Lesenswert?

@Tobi,

wozu denn ia und ib, schreib doch gleich:

for(;;){ PORTC = PINA; PORTD = PINB; }



Peter

von Tobi (Gast)


Lesenswert?

hmm.. weiss nicht... ich programmier halt gern erweiterungsfähig :)

von iceman (Gast)


Lesenswert?

Hier habe ich mal meine Vorstellung aufgeschrieben, wie das gehen soll
:

PORT A  PORT C

Taster 0  LED 0
.  .
.  .
Taster 7  LED 7


PORTB  PORT D

Taster 0  LED 0
.  .
.  .
Taster 7  LED 7

Es gibt 2 Blocks mit 8 Tastern
und 2 Blocks mit 8 LEDs

Wenn ich einen Taster an PortA drücke, soll die entsprechende LED an
PortC leuchten. Und zwar solange bis ich den entsprechenden Taster an
PortB drücke. Dann leuchtet die entsprechende LED an PortD und die LED
an PORTC erlischt.

Beispiel:

Ich drücke Taster0 an PORT A -> LED 0 an PORTC leuchtet (und leuchtet
weiter wenn ich den taster loslasse)

Ich drücke Taster0 an PORT B -> LED0 an PORTC erlischt und LED0 an PORT
D leuchtet (und leuchtet weiter wenn ich den taster loslasse)

das ganze dann für die anderen 7 Taster

Ich hoffe das ist verständlich wenn nicht dann bitte schreiben.

von Peter D. (peda)


Lesenswert?

Schade, daß heutzutage keine TTL-Gatter mehr gelehrt werden, dann könnte
man auch solche einfachen Logikgleichungen aufstellen:


for(;;){
  PORTC = PINA | PORTC & ~PORTD;
  PORTD = PINB | PORTD & ~PORTC;
}


Peter

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]
  • [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.