Hallo, Ich bin noch ein blutiger Anfänger was µC angeht und versuche gerade mit einem Taster 2 Leds anzuschalten und mit einem Taster sie wieder auszuschalten. Das Einschalten funktioniert einwandfrei nur das Ausschalten nicht. Kann mir jemand sagen was ich falsch gemacht habe?
1 | ;********************************************************** |
2 | .include "m8def.inc" ; Definitionen für M8 |
3 | rjmp RESET ; Reset Handle |
4 | ;********************************************************** |
5 | |
6 | RESET: |
7 | |
8 | .def temp = r16 ; temp als Universalregister definieren |
9 | .def temp1 = r17 ; temp als Universalregister definieren |
10 | .def temp2 = r18 ; temp als Universalregister definieren |
11 | .def temp3 = r19 ; temp als Universalregister definieren |
12 | .def temp4 = r20 ; temp als Universalregister definieren |
13 | .def temp5 = r21 ; temp als Universalregister definieren |
14 | |
15 | ldi temp,low(RAMEND) ; Stackpointer initialisieren |
16 | out SPL,temp |
17 | |
18 | anf: |
19 | ldi temp,0b11110011 ; 2 Eingang 6 Ausgänge |
20 | out DDRD,temp ; Datenrichtungsregister für Port D |
21 | |
22 | an: |
23 | |
24 | in temp2,PIND ; PortD einlesen |
25 | ldi temp3,4 ; Eingang nach temp laden |
26 | cp temp2,temp3 ; beide gleich ? |
27 | brne an ; nein! |
28 | |
29 | ldi temp,0b11000000 |
30 | out PORTD,temp |
31 | |
32 | aus: |
33 | |
34 | in temp4,PIND ; PortD einlesen |
35 | ldi temp5,8 ; Eingang nach temp laden |
36 | cp temp4,temp5 ; beide gleich ? |
37 | brne aus ; nein! |
38 | |
39 | ldi temp,0b00000000 |
40 | out PORTD,temp |
41 | |
42 | ende: rjmp an |
Die Register sind nur zum spielen ... Vielen Dank für eure Hilfe Grüße