The_Darkside
04.11.2005, 08:58
Erstmal wollt ich sagen, echt int. Board hier... lese nun auch schon eine Weile, aber jetzt muss ich mal was fragen. Prinzipiell hab ich schon Assembler programmiert, aber das ist so lange her, das ich irgendwie grad mal einen Denkanstoß brauche...
Ich wollte erst mal ganz einfach anfangen und habe einen ATMEGA16, daran zwei LED's und 3 Taster. Die Taster sind an PD2, PD3 & PD4 angeschloßen, die LED's an PD5 & PD6. Die LED's zum Leuchte zu bringen ist nicht das Problem, jedoch hatte ich vor einfach erst mal per Taster die LED leuchten zu lassen.
Daher setz ich als erstes alle Pins des Port auf "input" vergl. mit dem Wert für den Schalter und entscheide was zu tun ist, entweder ich lass das in einer Schleife laufen bis irgendwann der Taster gedrückt ist und springe dann in den Teil der die LED "anschaltet". Da setze ich alle Pins auf Ausgang und setze den, an dem die LED hängt auf "High". Sollte ja eigentlich gehen... dann lass ich die Sequenz als Schleife laufen so das die LED auf alle Ewigkeit anbleiben würde. Könnte nat. auch wieder abfragen ob der Taster noch gedrückt ist, wollt es aber erst mal ne übertreiben.
Hab ich irgendwo nen Denkfehler, sollte ich viel. nur die Pins auf Ein- bzw. Ausgang schalten die entsprechend genutzt werden.
Vermutl. ist es nur ein kleiner Denkfehler und wenn die Antwort hier steht, hauts mich untern Tisch, wegen meiner Dummheit...
Mein Programmcode
...
WAIT:
ldi Temp, 0x00
out DDRD, Temp
in R1, PORTD
ldi Temp, 0x10
cp R1, Temp
breq AN
brne WAIT
AN:
ldi Temp, 0xFF
out DDRD, Temp
ldi Temp, 0x40
out PORTD, Temp
rjmp AN
Ich wollte erst mal ganz einfach anfangen und habe einen ATMEGA16, daran zwei LED's und 3 Taster. Die Taster sind an PD2, PD3 & PD4 angeschloßen, die LED's an PD5 & PD6. Die LED's zum Leuchte zu bringen ist nicht das Problem, jedoch hatte ich vor einfach erst mal per Taster die LED leuchten zu lassen.
Daher setz ich als erstes alle Pins des Port auf "input" vergl. mit dem Wert für den Schalter und entscheide was zu tun ist, entweder ich lass das in einer Schleife laufen bis irgendwann der Taster gedrückt ist und springe dann in den Teil der die LED "anschaltet". Da setze ich alle Pins auf Ausgang und setze den, an dem die LED hängt auf "High". Sollte ja eigentlich gehen... dann lass ich die Sequenz als Schleife laufen so das die LED auf alle Ewigkeit anbleiben würde. Könnte nat. auch wieder abfragen ob der Taster noch gedrückt ist, wollt es aber erst mal ne übertreiben.
Hab ich irgendwo nen Denkfehler, sollte ich viel. nur die Pins auf Ein- bzw. Ausgang schalten die entsprechend genutzt werden.
Vermutl. ist es nur ein kleiner Denkfehler und wenn die Antwort hier steht, hauts mich untern Tisch, wegen meiner Dummheit...
Mein Programmcode
...
WAIT:
ldi Temp, 0x00
out DDRD, Temp
in R1, PORTD
ldi Temp, 0x10
cp R1, Temp
breq AN
brne WAIT
AN:
ldi Temp, 0xFF
out DDRD, Temp
ldi Temp, 0x40
out PORTD, Temp
rjmp AN