Ich habe mir einen kleinen Testaufbau mit einem AT90s2313 aufgebaut und folgendes Programm darauf geschrieben: .include "2313def.inc" ;Definitionsdatei laden .cseg ;Beginn eines Code-Segmentes .org 0 ;Startadresse=0 ; start: ldi r16,low(ramend) ;Stackpointer auf out spl,r16 ;RAM-Ende setzen ldi r16,0b00000001 ;PortB: PB0 auf Ausgang out ddrb,r16 ;setzen clr r16 ;Anfangswert setzen ; loop: out portb,r16 ;Daten an PortB ausgeben rcall wait ;Warteschleife aufrufen inc r16 ;Datenwert erhöhen rjmp loop ;Schleife neu beginnen ; ; Warteschleife (ungefähr 500ms) ; wait: ldi r19,10 ;r19, r18 und r17 clr r18 ;ergeben zusammen clr r17 ;einen 3-Byte-Zähler wait1: dec r17 ;niedrigstes Byte -1 brne wait1 ;0 erreicht? nein -> Schleife dec r18 ;mittleres Byte -1 brne wait1 ;0 erreicht? nein -> Schleife dec r19 ;höchstes Byte -1 brne wait1 ;0 erreicht? nein -> Schleife ret ;Schleifenende, Rückkehr Das ganze funktioniert, nur wenn ich statt PB0 einen anderen Pin als Ausgang nehme, oder auch zwei verschiedene gleichzeitig, dann blinken diese nicht im gleichen Takt. Sie werden von PB0 bis PB7 immer langsamer. Muss das so sein oder ist da was kaputt?
Das muss so sein...schau dir mal an wie im beinärformat hochgezählt wird. 00000001 00000010 00000011 00000100 00000101 00000110 00000111 . . . wie du merkst haben die höheren bits(weiter links) länger an oder aus zeiten. MfG Axos
Sorry, hab das Programm nicht selber geschrieben. An was erkennt man denn das die zahlenwerte länger sind? Muss ich da Spaltenweise gucken, z.b. ganz rechts folgt immer in jeder Zeile ein Wechsel, eine Spalte weiter links nur jede zweite Zeile u.s.w?
das was Axos beschreibt, ist die binäre Darstellung des Ausgabewertes, der mit 0 initialisiert wird, und mit inc r16 ;Datenwert erhöhen immer um eins erhöt wird. Das r16 in binärer Schreibweise ergib die Aufstellung von Axos. Quark
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.