Ich möchte eine Led mittels Taster ein bzw. ausschalten. Diese Fehler sind zu beobachten: Die Led leuchtet nicht, auch nicht nach den Knopfdruck. An der Delay5ms Funktion liegt es nicht!
1 | .equ XTAL = 16000000 ;16 mHz |
2 | |
3 | .equ BTN = 2 ;Pinnumber of PORT_D |
4 | .equ LED = 3 ;Pinnumber of PORT_D |
5 | |
6 | .def temp1 = r16 |
7 | .def temp2 = r17 |
8 | |
9 | ;Init stackpointer |
10 | ldi temp1, HIGH(RAMEND) |
11 | out SPH, temp1 |
12 | ldi temp1, LOW(RAMEND) |
13 | out SPL, temp1 |
14 | |
15 | ;Set led pin to output |
16 | ldi temp1, (1 << LED) |
17 | out DDRD, temp1 |
18 | |
19 | loop: |
20 | in temp1, PIND |
21 | sbrc temp1, (1 << BTN) ;Check if button is pressed |
22 | rcall led_toggle |
23 | rjmp loop |
24 | |
25 | led_toggle: |
26 | ldi temp2, (1 << LED) |
27 | eor temp1, temp2 ;xor the led pin |
28 | out PORTD, temp1 |
29 | ldi temp2, 0x64 ;Delay 5ms * 100 |
30 | led_toggle_0: |
31 | dec temp2 |
32 | rcall delay5ms |
33 | brcc led_toggle_0 |
34 | ret |
35 | ... |