Forum: Mikrocontroller und Digitale Elektronik Hife zu Tutorial Speicher


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jürgen (Gast)


Lesenswert?

Hallo,

ich habe versucht den unteren Teil der noch für den 4433 geschrieben
ist für den Mega 8 zu verwenden, hierzu habe ich die Uart Programmteile
und die out Befehle ausgetauscht aber irgendwie komme ich da nicht
weiter. Igendwas muss hinter High und Low stehen ? Wäre super wenn
jemand mir Helfen könnte vielleicht wäre das auch gleichzeitig eine
Verbesserung fürs Tutorial Speicher.

Vielen Dank

Gruß

Jürgen

.include "m8def.inc"

.def temp             = r16
.def address          = r17
.def data             = r18

.equ CLOCK = 4000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB,TXEN                    ; TX aktivieren

        ldi address, text1                ; ersten String senden
        rcall eep_print

        ldi address, text2                ; zweiten String senden
        rcall eep_print

        ldi data, 10                      ; die Bytes 10 und 13 senden
        rcall sendbyte                    ; (Zeilenumbruch im
Terminal)
        ldi data, 13
        rcall sendbyte


loop:   rjmp loop

eep_print:
    ;    out EEAR, address                 ; EEPROM-Adresse
        ldi address, HIGH              ; Adresse laden
        out EEARH, address
        ldi address, LOW
        out EEARL, address

        sbi EECR, EERE                    ; Lesevorgang starten
        in data, EEDR                     ; gelesenes Byte nach
"data"
        tst data                          ; auf 0 (Stringende testen)
        breq eep_print_end                ; falls 0, Funktion beenden
        rcall sendbyte                    ; ansonsten Byte senden...
        inc address                       ; ... Adresse um 1
erhöhen...
        rjmp eep_print                    ; ... und zum Anfang der
Funktion
eep_print_end:
        ret

; sendbyte: sendet das Byte aus "data" über das UART
sendbyte:
        sbis UCSRA, UDRE                  ; warten bis das UART bereit
ist
        rjmp sendbyte
        out UDR, data
        ret


.eseg
text1:
.db "Strings funktionieren auch ", 0
text2:
.db "im EEPROM", 0

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]
  • [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.