- Akku Tests und Balkonkraftwerk Speicher         
Seite 25 von 53 ErsteErste ... 15232425262735 ... LetzteLetzte
Ergebnis 241 bis 250 von 524

Thema: Tutorial für alle Assembler-Anfänger _

  1. #241
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Anzeige

    Praxistest und DIY Projekte
    Holzhammer war nicht gewollt
    Der muß aber manchmal sein, kenn ich von mir!
    Gut gemacht bis jetzt,
    Ich muß leider los (bin gerade im Büro, und sehe da PC an )
    melde mich später wieder, bin gespannt, wie weit Ihr kommt.

    Gruß Sebastian

  2. #242
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Bis nachher Sebastian! *rette mich, ich kann das nicht erklären -> lol*

  3. #243
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2005
    Beiträge
    22
    Also bräuchten wir noch ein Register, wo wir die Zahl der eingelesenen Zeichen aufbewahren. Und vergleichen ob diese Zahl = 6 ist.
    (In unserem Fall). Wenn ja, Abbruch.

    So in etwa?

  4. #244
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Oh, hi Sebastian und auch wieder tschö *g* Genieß die letzten Arbeitsstunden noch

    Florian: Doch du kannst das :P
    Ich hab nicht viel über cp und cpc rausgefunden, nur das cp die unteren Bits vergleicht und cpc die oberen.
    Aber so richtig verstanden hab ichs nicht. Wo find ich denn die oberen und unteren Bits?

  5. #245
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hallo Tekeli!
    So in etwa stimmt das, aber Du musst das, was Du zu Anfang in ZL und ZH lädst nur nochmal in die Register laden und plus die 6 Bytes rechnen!
    Das ist dann die Endbeschränkung!

    Ich möchte die Codes sehen! *lol*

    *ich geh mal kurz was essen, bin gleich wieder da*

  6. #246
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Hmm...ich hab das jetzt so gelöst:
    Code:
    ;Programm
    ;CDurTonleiter rauf und runter spielen
    .include "m8def.inc"
    
    .def tmp = r16               	;Mein Universallregister
    .def lpm_reg = r0				;Mein lpm-Register
    .def zaehler = r17				;Mein Zählregister, prüft, ob das Wort zu Ende ist
    
    .org 0x000
       	rjmp reset					;Interruptvektor "reset:"
    
    reset:
       	;Stack einrichten
       	ldi tmp, HIGH(RAMEND)      	;HIGH-Byte der obersten RAM-Adresse
       	out SPH, tmp
       	ldi tmp, LOW(RAMEND)      	;Low-Byte der obersten RAM-Adresse
       	out SPL, tmp
    
       	ldi ZH, HIGH(daten1 * 2)
       	ldi ZL, LOW(daten1 * 2)
    
    	ldi zaehler, 0b00000000		;Zähler auf 0 setzen
    
       	sei                    		;Interrupts zulassen
    
    loop:
    	cpi zaehler, 0b00000110		;Vergleich Zähler mit 6
    	breq loop					;wenn Zähler != 6, dann wieder zu "loop:" springen
    
    einlesen:
    	
    	lpm                     	;nächstes Byte des String nach r0 einlesen
       	mov tmp, lpm_reg            ;Inhalt von R0 nach "tmp" kopieren
       	adiw ZL,1               	;Adresse des Z-Pointers um 1 erhöhen
    	inc zaehler					;Zähler um 1 erhöhen
    
    	rjmp loop					;wieder zurück zu "loop:"
    
    
    daten1:
    	.db "Hallo!"             	;immer eine gerade Anzahl an Bytes
    Sorry, versteh die Befehle cp und cpc aber leider nicht (wegen untere Bytes und obere?) Aber mein Code geht auch.
    Nachteil ist eben, dass von Anfang an klar sein muss, aus wieviel Zeichen dsa Wort besteht.

    [edit]
    Ich bin auch mal eben was essen.

  7. #247
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Nochmal eine Anmerkung (wie gut, daß mein Chef jetzt feiern ist)

    Ein String wie "hallo!" von Florian ist nichts anderes als 6 Bytes die hintereinander im Speicher stehen.
    Der Assembler erkennt aber, daß es sich um eine Zeichenkette handelt und wandelt selber
    jeden Buchstaben in ASCII Zahlen um. ASCII ist steinalt, hat aber bis heute überlebt,
    weil es recht simpel ist. Solltet Ihr Euch damit noch nicht auseinandergesetzt haben
    hier ist eine Tabelle, wo man schön entnehmen kann welcher Buchstabe, welchem Wert entspricht.

    Der Assembler wandelt auch selber um wenn man das so schreibt:
    db. 'H','a','l','l','o','!'

    Das ist Praktisch, sonst müßten wir uns selber darum kümmern.
    Das werden wir auch nicht bei unsere Tonleiter brauchen,
    hier werden wir sicher irgendwelche Werte im Speicher ablegen, um unsere Frequenzen
    abzuspeichern.
    Der Florian hat es nur mit dem Hallo genommen, um in die Thematik einzusteigen, denke ich

    Sinnvoll sind nur ASCII Zeichen, wenn man z.B. über ein Terminal mit dem µC komuniziert, oder irgendwas auf dem LCD ausgeben möchte.
    Das ist aber im Moment nicht das Ziel unserer Übung.
    So jetzt verschwinde ich hier lieber

    Gruß Sebastian

  8. #248
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hallo Sebastian!
    Danke nochmal für Deine Nacherklärung! ;o)

    @ Thomas:
    Was verstehst Du derzeit nicht?

    @ Tekeli:
    Was verstehst Du derzeit nicht?


    Ps:
    Bisher wollte ich nur zeigen, wie man Daten, die man im AVR-Flash speichert (.DB bzw. .DW), ausliest und in ein anderes Register schiebt, mehr nicht! ;o)
    Das ganze hat bisher noch nichts mit Tönen zu tun!

  9. #249
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    cp und cpc sind die wichtigsten Befehle im Assembler, und glaub mir Thomas, du hast
    sie (zumindest cp) schon unbewußt benutzt!
    cp hat aber nur Sinn in Verbindung mit SREG.
    oder was meinst Du was die ganzen brne, breq usw. machen?
    es sind keine Befehle für sich wenn Du Dir anschaust wieviele Takte sie brauchen, steht dort meistens 1/2 .
    und warum? weil dort immer cp ausgeführt wird und jenachdem welcher Flag im SREG danach gesetzt (oder nicht gesetzt ist) wir gesprungen, oder halt nicht.
    schreibe Dir ein Miniprogramm, wo Du zwei Register mit Werten fütterst.
    Behandle sie dann mit hilfe von cp uns schaue, was sich im SREG so tut.
    Schaue auch was die Bits von SREG zu bedeuten haben, und ändere die Zwei Werte im Register.
    Dann wirst Du schon um einiges schlauer!

    Gruß Sebastian

  10. #250
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Na ihr Beiden, wie siehts aus?
    Komt ihr voran?
    Soll ich noch was erklären?
    Ihr kennt doch auch cpi, oder?

Seite 25 von 53 ErsteErste ... 15232425262735 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test