Hallo,
das ist der Treiber für eine kleine Martix die ich letztens gebastelt
habe.
Der erste Treiber geht, ist aber nicht sehr genial und viel zu lang.
(siehe Anhang)
So jetzt wollte ich ihn zusammenfassen, was aber nicht geht.
Da kommt vom AVR-Studio eine Fehlermeldung im Simulator, das kein
Stackpointer gesetzt sei.
Der Treiber muss das tun:
1. PD6 auf High, damit der 4017B resettet wird.
2. Byte aus dem Speicher holen
3. An PortB 1-7 anlegen
4. PB0 auf High und wieder auf Low, damit der 4017B einen weiter geht.
Es handelt sich um eine 7*10Led Matrix, welche die Spalten über
Transistoren und einen 4017B durch schaltet.
Evt. kann sich das ja mal einer angucken.
Ich entschuldige mich im Voraus für dumme fragen, da das abgesehen von
einem Lauflicht mein erstes richtiges Projekt ist.
MfG
1 | .include "tn2313def.inc"
|
2 |
|
3 | Ports:
|
4 | ldi r16, 0xff
|
5 | out ddrb, r16
|
6 |
|
7 | ldi r16, 0x40
|
8 | out ddrd, r16
|
9 |
|
10 | Reset:
|
11 | out portd, r16
|
12 | rcall wait
|
13 | clr r16
|
14 | out portd, r16
|
15 | rcall wait
|
16 |
|
17 | Load:
|
18 | ldi ZL, LOW(bild*2)
|
19 | ldi ZH, HIGH(bild*2)
|
20 |
|
21 | Outy:
|
22 | adiw ZL, 1
|
23 | lpm
|
24 | out PORTB, R0
|
25 | rcall wait
|
26 | inc r0
|
27 | out portb, r0
|
28 | rcall wait
|
29 |
|
30 | ldi r16, 0x0a
|
31 | cp zl, r16
|
32 | breq new
|
33 |
|
34 | rjmp outy
|
35 |
|
36 | new:
|
37 | clr zl
|
38 | rjmp outy
|
39 |
|
40 |
|
41 | wait:
|
42 | ldi r16, 0xff
|
43 | loop:
|
44 | nop
|
45 | dec r16
|
46 | brne loop
|
47 | ret
|
48 |
|
49 | bild:
|
50 | .db 0xfe,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe
|