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 | ldi r18, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse
|
22 | out SPL, r18
|
23 |
|
24 |
|
25 | loop:
|
26 |
|
27 |
|
28 | sbis PIND, 2 ; Wenn Blinkersignal anliegt nächsten Befehl überspringen
|
29 | rcall reset
|
30 | sbic PIND, 2 ; Wenn Blinkersignal nicht anliegt nächsten Schritt überspringen
|
31 | rcall Blink1
|
32 | sbrc r16, 5 ; Wenn r16 voll ist (0xFF) nächsten Schritt ausführen
|
33 | ldi r16, 0x00 ; r16 auf 0 setzen
|
34 | rjmp loop
|
35 |
|
36 |
|
37 |
|
38 | Blink1:
|
39 |
|
40 | ldi r20, 0x00
|
41 | sec
|
42 | rol r16 ; 1 in r16 einschieben
|
43 | push r16 ; r16 in Stack laden
|
44 | pop r17 ; In Stack geladenen Wert auf r17 schreiben
|
45 | andi r17, 0b00000111
|
46 | sbic PIND, 1 ; Wenn PortA1 Low nächsten Schritt überspringen
|
47 | out PORTB, r17 ; r17 ins Ausgangsregister PORTB laden
|
48 | sbis PIND, 1
|
49 | out PORTB, r20
|
50 | rol r17 ; drei Nullen von links in r17 einschieben
|
51 | rol r17
|
52 | rol r17
|
53 | sbic PIND, 0 ; Wenn PinA0 Low nächsten Schritt überspringen
|
54 | out PORTD, r17 ; r17 ins Ausgangsregister PORTD laden
|
55 | sbis PIND, 0
|
56 | out PORTD, r20
|
57 | ldi r19, 0xFF
|
58 | rcall Warte
|
59 | ret ; Zurückspringen zu rcall
|
60 |
|
61 | Warte:
|
62 |
|
63 | dec r19
|
64 | brne Warte
|
65 | ret
|
66 |
|
67 | Reset:
|
68 |
|
69 | ldi r16, 0x00
|
70 | out PORTB, r16
|
71 | out PORTD, r16
|
72 | ret
|