Hallo,
wir verwenden einen AtMega8515 und programmieren diesen in Assembler mit
dem AVRStudio. Am 0. Bit von PinD liegt unser Schalter. Er ist
low-aktiv.
Das Datendirektionsregister wird gesetzt:
1 | ldi tmp, 0b00000110 ;Die Pins 1 und 2 sind LEDs, daher Ausgang
|
2 | out ddrd, tmp
|
Dann gibt es eine Schleife:
1 | main:
|
2 | in tmp, pind
|
3 | sbrs pind, 0
|
4 | rcall neuberechnung;delay
|
5 | rjmp main
|
Wir lesen also ständig den Pind ein. Solange der 0. Bit gesetzt (unser
Schalter also nicht gedrückt) ist, überspringen wir den Rcall. Sobald
unser Taster gedrückt wird, soll der RCall ausgeführt werden.
In der Simulation funktioniert das ganz gut. Auf dem Chip leider nicht.
Wir haben weder sonderlich viel Erfahrung, noch Lösungen für dieses
Problem im Internet gefunden und sind daher dankbar für jede Hilfe.
Danke im Voraus
Mit freundlichen Grüßen
Johannes