Hallo erstmal.
In dem Tutoria2l "I/O Grundlagen" stand am ende folgender Satz:
>>>Dieses Programm wartet so lange in eine Schleife ("loop:"..."rjmp
loop"), bis Bit 0 im Register PIND 0 wird, also die erste Taste
gedrückt ist.<<<
Ich habe auch ein Programm, das innerhalb einer schleife eine
tastaturabgabe macht. (Programm ist in C, nicht ASM) Jetzt stellt sich
dort das Problem, das die Schleife immer auf eine Tastatureinage
wartet, also nur durchläuft wenn ich eine Taste drücke.
Ich würd es aber gerne so habe, dass die schleife immer läuft und ich
die Taste dennoch abfragen kann. Die Tastenabfrage soll nämlich ein
frühzeitiges abbrechen der Schleife ermöglichen, wenn es eine andere
möglichkeit gibt, die Schleife auf Tastendruck zu beenden, als eine
simple Tastanabfrage wär mir das auch recht, solange ich nicht immer
was drücken muss, damit das Programm ausgeführt wird :-)
Danke für die Hilfe. cya
Hallo Martin! Wieso legst du die Taste nicht auf einen interruptfähigen Pin und bastelst dir die entsprechende Interrupt-Routine? Schön Gruß Rahul
@Rahul "Wieso legst du die Taste nicht auf einen interruptfähigen Pin" Weil sie dann prellt wie Sau, aber das hat man ja schon zur Genüge durchgekaut. Es gibt doch viel einfachere Lösungen, z.B.: http://www.mikrocontroller.net/forum/read-4-20549.html Peter
@Peter: So wie ich Martin verstanden habe, möchte er sein Programm nicht mit unnötigem Warten auf eine Taste anhalten. Wenn er den Flankenwechsle der Taste mit einem Interrupt erkennt, kann er sie nachträglich immer noch entprellen, sofern der Interrupt gesperrt ist (so kenn ich das noch auch 8051-Zeiten). Gruß Rahul
Hallo, ich schreibe solche schleifen in C so: for(;;) { if (PINB&0x01) { break; } //Tue irgendwas während der Schleife //z.b.: temp=temp+10; temp=temp-10; } Solange der PINB.0 LOW-Potential hat, wird die Schleife immer wiederholt. In der Schleife kann z.B. eine Messwertabfrage o.ä. stehen. Wenn nun der PINB.0 High-Potential führt, wird meine for-Schleife abgebrochen. Gruß, Florian
Danke für die vielen Tipps. das mit dem Pin ist klar, das Problem ist aber, dass es sich nicht um einen Schalter, sondern um eine Tastatur handelt, die abgefragt werden soll, deswegen geht das ganze so leider nicht :-(
doch, das geht genauso. Du mußt nur so schnell abfragen, daß du keinen Tastendruck versäumst. Für einen µC kein Problem. ---- (QuadDash).
Was für eine Tastatur??? - wenn es eine PC-Tastatur ist, so kannst du die in einer Application note beschriebene schaltung verwenden. Da ist alles Interruptgesteuert (Abfrage bzw. Empfangen der Tastatursignale). Wenn du ein Zeichen empfangen hast, kannst du eine Variable setzen. In der Schleife frägst du dann die Variable ab, ob eine Taste empfangen wurde oder nicht und danach den weitern verlauf der schleife bestimmen. Gruß, Florian
Sollte es sich um eine 4x4-Tastatur handeln, gibt es direkt bei Atmel eine Application Note (AN240 etwa). Dabei handelt es sich um eine hexadezimale Tastatur. Die Funktionsweise ist recht einfach und braucht nur einen Port. Eine PC-Tastatur abzufragen ist etwas unständlicher, aber lösbar. Notfalls gibt es auch fertige Code-Schloss-IC. Gruß Rahul
Was für möglichkeiten gibt es, eine Pc-Tastatur über die Ports abzufragen, oder gibt es fertige Schaltungen oder Ics, wenn ja welche? Gruß Sam
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.