1 | .include "tn2313def.inc" ; Definitionsdatei für den Prozessortyp einbinden
|
2 |
|
3 |
|
4 | ;Aus/Eingänge einstellen
|
5 | ldi r16, 0x00 ; 0x00 in r16 laden
|
6 | out DDRA, r16 ; Inhalt von r16 ins IO-Register DDRA ausgeben
|
7 | ldi r16, 0x00 ; 0x00 in r16 laden
|
8 | out PORTA, r16 ; Inhalt von r16 ins IO-Register PORTA ausgeben
|
9 |
|
10 | ldi r16, 0b00111000 ; 0b11111100 in r16 laden
|
11 | out DDRD, r16 ; Inhalt von r16 ins IO-Register DDRD ausgeben
|
12 | ldi r16, 0x00 ; 0x00 in r16 laden
|
13 | out PORTD, r16 ; Inhalt von r16 ins IO-Register PORTD ausgeben
|
14 |
|
15 | ldi r16, 0b00000111 ; 0b00000111 in r16 laden
|
16 | out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben
|
17 | ldi r16, 0x00 ; 0x00 in r16 laden
|
18 | out PORTB, r16 ; Inhalt von r16 ins IO-Register PORTB ausgeben
|
19 |
|
20 |
|
21 | loop:
|
22 |
|
23 |
|
24 | sbis PIND, 0 ; Wenn Blinkersignal anliegt nächsten Befehl überspringen
|
25 | ldi r16 0x00 ; 0x00 in r16 schreiben
|
26 | sbic PIND, 0 ; Wenn Blinkersignal nicht anliegt nächsten Schritt überspringen
|
27 | rcall Blink1
|
28 | sbrc r16, 7 ; Wenn r16 voll ist (0xFF) nächsten Schritt ausführen
|
29 | ldi r16 0x00 ; r16 auf 0 setzen
|
30 | rjmp loop
|
31 |
|
32 |
|
33 |
|
34 | Blink1:
|
35 |
|
36 | lsl r16 ; 1 in r16 einschieben
|
37 | push r16 ; r16 in Stack laden
|
38 | pop r17 ; In Stack geladenen Wert auf r17 schreiben
|
39 | rol r17 ; drei Nullen von links in r17 einschieben
|
40 | rol r17
|
41 | rol r17
|
42 | andi r17, 0b00111000
|
43 | sbic PINA 0 ; Wenn PortA0 Low nächsten Schritt überspringen
|
44 | out PORTD, r17 ; r17 ins Ausgangsregister PORTD laden
|
45 | sbic PINA 1 ; Wenn PinA1 Low nächsten Schritt überspringen
|
46 | out PORTB, r16 ; r17 ins Ausgangsregister PORTB laden
|
47 | ret ; Zurückspringen zu rcall
|