Wenn ich auf einen Taster drücke möchte ich das eine Led leuchtet. Wenn ich ein weiteres mal auf den gleichen Taster drücke möchte ich eine weitere led einschaltet, und das die Voherige wieder erlöscht. Habe das mit einer Lauf Variable überlegt. Möchte das ganze auf einen Atmega 8 progrmmieren,wobei bascom als progrmmiersprache bevorzugt wird. Bitte um euere Hilfe! Danke im Voraus!
Das ist vermutlich genau das, was du suchst: http://halvar.at/elektronik/kleiner_bascom_avr_kurs/taster_entprellen/
Ist schon alles bereit um zu programmieren? Du hängst den Taster an eine Interrupt Leitung und die LEDs und Vorwiederständen an die I/O Ports. Ich habe das überflogen und der Atmega 8 liefert 10-20mA, was für LEDs ausreicht, ist aber abhängig von der Art der LED. Den Interrupt lässt du z.B. auf LOW reagieren, ziehst den Pin mit einem Wiederstand auf HIGH, während der Taster den auf GND zieht. Das ist ein Taster, der wird mehrere Interrupts auslösen, du wirst einen kleinen Kondensator zum entprellen brauchen. Die Pins für die LEDs konfigurierst du als Ausgänge. Schematisch, wo ich Bascom noch nicht gesehen habe: In der Interrupt-Routine zählst du einen Wert hoch, starte bei 0, und schreibst einen berechneten Wert auf das Output-Pin-Register: start_routine() counter = 0; interrupt_routine() counter = counter + 1; PORTn = 1 SHL (counter MOD ANZ_LED) PORTn ist das Output-Register an dem deine LEDs hängen; ANZ_LED ist die Zahl der verwendeten Pins des PORTn, also Anzahl LEDs Was passiert ist, du zählst die counter variable hoch, mit dem Modulus hälst du den Wert in 0-ANZ_LED //z.B. 0-8; ...mit 1 << SHL produzierst du sowas 1 << (0 % 8) = 1 << 0 = 0x00000001; 1 << (1 % 8) = 1 << 1 = 0x00000010; 1 << (7 % 8) = 1 << 7 = 0x10000000; 1 << (8 % 7) = 1 << 1 = 0x00000001; Wenn der Counter 255 überschreitet fängt er bei 0 an. Den Wert 0x00000001 legst du jeweils auf das Output register, das eine aktive Bit stellt ein HIGH auf dem Ausgang dar. Zählst du counter hoch bewegst du das aktive bit immer eines nach links. Das Atmega 8 Output-Register ist 8-Bit groß, also kannst du mit dem Code 8 Ausgänge steuern. Planst du weitere Ports anzusteuern musst du das SHL auf den nächsten Port erweitern.
Alexander K. schrieb: > Du hängst den Taster an eine Interrupt Leitung und die LEDs und > Vorwiederständen an die I/O Ports. Bestimmt nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.