1 | .include "m8def.inc"
|
2 |
|
3 | ldi r17, 0
|
4 | ldi r16, 0xFF
|
5 | out DDRD, r16 ; Port B ist Ausgang
|
6 |
|
7 | ldi r16, 0x00
|
8 | out DDRB, r16 ; Port D ist Eingang
|
9 |
|
10 |
|
11 | ldi r16, 0xFF
|
12 | out PORTD, r16 ; PORTB auf 0xFF setzen -> alle LEDs aus
|
13 |
|
14 | loop: sbic PINB, 0 ; "skip if bit cleared", nächsten Befehl überspringen,
|
15 | ; wenn Bit 0 im IO-Register PIND =0 (Taste 0 gedrückt)
|
16 | rjmp loop ; Sprung zu "loop:" -> Endlosschleife
|
17 |
|
18 | rjmp weiter
|
19 | weiter: inc r17 ; erhöhe das Zaehlregister
|
20 |
|
21 | cpi r17, 1 ; mit dem Endwert vergleichen
|
22 | brne weiter2
|
23 | cbi PORTD,0
|
24 | weiter2: cpi r17, 2
|
25 | brne weiter3
|
26 | cbi PORTD,1
|
27 | weiter3: cpi r17, 3
|
28 | brne weiter4
|
29 | cbi PORTD,2
|
30 | weiter4: cpi r17, 4
|
31 | brne weiter5
|
32 | cbi PORTD,3
|
33 | weiter5: cpi r17, 5
|
34 | brne weiter6
|
35 | cbi PORTD,4
|
36 | weiter6: cpi r17, 6
|
37 | brne weiter7
|
38 | cbi PORTD,5
|
39 | weiter7: cpi r17, 7
|
40 | brne weiter8
|
41 | cbi PORTD,6
|
42 | weiter8: cpi r17, 8
|
43 | brne loop
|
44 | cbi PORTD,7
|
Ich beschäftige mich erst seit kurzem mit microcontrollern, und habe
daher noch so einige probleme.
obenstehender Code: Hier soll ein register bei jedem tastendruck um eins
erhöht werden und dann je nach höhe des registerwertes eine led
eingeschaltet werden. Nun habe ich das in den avr geschrieben, aber bei
einem tastendruck schalten sich immer gleich alle leds ein. an was liegt
das?
vielen dank für eure hilfe