mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Spinnt mein Controller?


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Axos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Quark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.