avr assembler frage

OP #2037632
Lesenswert?
• ▲
▼
ich habe mein erstes etwas längeres Programm in assembler geschrieben.

Es ist zur Ansteuerung einer 3x3 LED Matrix mit einem ATtiny2313

Ich habe 2 Timer verwendet. Einer für das Multiplexing der Spalten
und einer für das durchschalten der einzelnen Komplettbilder.

Die Bilder sind so im Programmspeicher abgelegt
1
bilder:
2
  .db 0b00000011  ;3 Bilder
3
bild0:
4
  .db 0b00100000
5
  .db 0b00010010    
6
  .db 0b00001000
7

8
  .db 0b00100000
9
  .db 0b00010010    
10
  .db 0b00001000
11

12
  .db 0b00100010
13
  .db 0b00010101    
14
  .db 0b00001010

am Anfang des Programmes wird dann der Wert an der Stelle bilder in 
einem Register gespeichert.
1
  ldi ZH,LOW(bilder*2)    ;Low-Byte der Adresse von bilder in ZL  
2
  ldi ZH,HIGH(bilder*2)    ;High-Byte der Adresse von bilder in ZH
3
  lpm 
4
  mov bilderanzahl,r0

In einem weiteren REgister ist die nr. des aktuellen Bildes gespeichert.
Im Interrupt Handler Für den Bilder Timer wird dieser Wert dann mit der 
gesamtanzahl der Bilder verglichen und bei Bedarf wieder auf null 
gesetzt.
Und am ende um 1 erhöht.
1
  cp nextbild,bilderanzahl  ;nextbild mit Anzahl Bilder vergeleichen
2
  brne next
3
  mov nextbild,zero
4
next:
Das funktioniert leider nicht. Es sieht so aus als ob weiter als 3 
gezählt wird.

Wenn ich aber
1
cpi nextbild,3
nehem funktioniert es wie gewünscht

muss ich da evtl. einen anderen Vergleichsbefehl oder eine andere 
Sprungbedingung nehmen?

Das komplette Programm ist hier zu finden
http://pastebin.com/ebNeXcN2

p.s.:
ich beschäftige mich erst seit gut 1-2 Wochen mit der µC Programmierung.
Gast #2037648
Lesenswert?
• ▲
▼
Hi

>Du musst das LB auch in's ZL laden...

Genau.

> lpm
>  mov bilderanzahl,r0

Das kannst du dir auch sparen

  lpm bilderanzahl,Z

Oder besser

  lpm bilderanzahl,Z+

dann zeigt Z gleich auf den naächsten Wert.

MfG Spess

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.