Attiny15 kennt SBIW nicht

Gast #485258
Lesenswert?
• ▲
▼
Ich möchte mit dem Attiny15 eine LED blinken lassen

doch dieser einfache Code klappt nicht

  sbi DDRB,0 ; PB1 ist Ausgang
loop:
  sbi PORTB,0 ; Ausgang auf Eins (LED ist aus)
loop1:
  sbiw ZL,1 ; Ziehe von ZH:ZL eine 1 ab
  brne loop1 ; wenn noch nicht Null, wiederhole
  cbi PORTB,0 ; Ausgang auf Null (LED ist an)
loop2:
  sbiw ZL,1 ; Ziehe von ZH:ZL eine 1 ab
  brne loop2 ; wenn noch nicht Null, wiederhole
  rjmp loop ; und das Ganze von vorne
Gast #485263
Lesenswert?
• ▲
▼
Dann subtrahiere doch Byteweise. Wo ist das Problem?

Statt

loop1:
  sbiw ZL,1 ; Ziehe von ZH:ZL eine 1 ab
  brne loop1 ; wenn noch nicht Null, wiederhole

schreibst Du
;bei den Deklarationen:
.def null=r2    ;R2 heißt jetzt 'null'

;beim Init:
  clr null      ;R2 (null) hat jetzt den Wert 0

;in Deiner Schleife:
loop1:
  subi ZL,1      ;Ziehe von ZL eine 1 ab
  sbc zh,null    ;ziehe Carry und Inhalt des Registers null ab
  brne loop1     ;wenn noch nicht Null, wiederhole

Das Register 'null' wird öfter gebraucht als Du denkst.

...
Gast #485267
Lesenswert?
• ▲
▼
Das kann auch nicht funktionieren, weil, wie Du im Betreff schon ganz 
richtig festgestellt hast, der ATTiny15 den Befehl sbiw nicht kennt! Du 
wirst das schon mit zwei aufeinanderfolgenden 8-Bit-Subtraktionen machen 
müssen, also in  der Art
1
ldi r16, 0
2
dec ZL
3
sbc ZH, r16
Abgesehen davon: Je nachdem, mit welcher Taktfrequenz Du arbeitest, wird 
die LED so schnell blinken, dass Du da gar nix von mitbekommst... sie 
flackert dann höchstens.

BTW:
> sbi DDRB,0 ; PB1 ist Ausgang
Das ist ein Widerspruch!
Gast #485275
Lesenswert?
• ▲
▼
> Käptn Picard ist auch schon mit Welt retten fertig.
Kuck ma, da hab ich'n Vorteil: Ich hab das Filmchen auf DVD (wie auch 
die anderen 9). Kann ichs mir direkt hinterher noch mal angucken...;-) 
(Dann aber im englischen O-Ton...)

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.