Forum: Mikrocontroller und Digitale Elektronik Schalten mit AT90S8535


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

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.