www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik X-Pointer auf Ramstart zurücksetzen


Autor: Paulchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

habe ein Problem mit progammieren von Assembler(Atmega8)
Ich lese einen String in den SRAM und will ihn ausfiltern und über Uart
weitersenden.

Wie bekomme ich den X-Pointer nach dem einlesen in den Ram wieder an
den
Ram-Anfang

,damit ich mit vergleichen beginnen kann?

Autor: Thorsten Fritzke (thorsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi xl,low(SRAM_START)
ldi xh,high(SRAM_START)

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi xl,low(0x0060)
ldi xh,high(0x0060)

Autor: Paulchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe es umgesetzt (siehe Senden:),aber Work_pad zeigt weiter
Fehlermeldungen. Kann das Problem noch woanders liegen,oder kann es
auch am Programm Work_Pad liegen?
Habe Programm Mal angehängt,können aber jetzt Fehler durch rumprobieren
drinsein.



;----------------------------------------------------------------------+
.include    "AVR.H"
.equ        SRAM_START,0x60
;----------------------------------------------------------------------- 
-
;Reset and Interrupt vector             ;VNr.  Beschreibung
            rjmp    main                ;1     POWER ON RESET
            reti                        ;2     Int0-Interrupt
            reti                        ;3     Int1-Interrupt
            retI                        ;4     TC2 Compare Match
            reti                        ;5     TC2 Overflow
            reti                        ;6     TC1 Capture
            reti                        ;7     TC1 Compare Match A
            reti                        ;8     TC1 Compare Match B
            reti                        ;9     TC1 Overflow
            reti                        ;10    TC0 Overflow
            reti                        ;11    SPI, STC Serial Transfer
Complete
            reti                        ;12    UART Rx Complete
            reti                        ;13    UART Data Register
Empty
            reti                        ;14    UART Tx Complete
            reti                        ;15    ADC Conversion Complete
            reti                        ;16    EEPROM Ready
            reti                        ;17    Analog Comparator
            reti                        ;18    TWI (IC) Serial
Interface
            reti                        ;19    Store Program Memory
Ready
;----------------------------------------------------------------------- 
-
;Start, Power ON, Reset
main:       ldi     r16,hi8(RAMEND)
            out     SPH,r16
            ldi     r16,lo8(RAMEND)     ;Stack Initialisierung
            out     SPL,r16             ;Init Stackpointer
            sbi     UCSRB,4             ;UCR=UCSRB=0x0B RXEN=Bit4 RX
aktivieren
            sbi     UCSRB,3             ;UCR=UCSRB=0x0B UDRE=Bit3 TX
aktiv
            ldi     r16,3686400/(9600*16)-1 ;Baudrate 9600 einstellen
            out     UBRRL,r16
            ldi     XL,low(SRAM_START)
            ldi     XH,high(SRAM_START)
            ldi     r18,20
;----------------------------------------------------------------------- 
-
mainloop:   wdr
            rcall   Empfangen
            rcall   Senden

            rjmp    mainloop
;----------------------------------------------------------------------- 
-
Empfangen:  sbis    UCSRA,7             ;USR=UCSRA=0x0B RXC=Bit7
            rjmp    Empfangen           ;warten, bis UDR bereit
            in      r16,UDR
            st      x+,r16
            ret                         ;zurück zum Hauptprogramm
;----------------------------------------------------------------------- 
-
Senden:     sbis    UCSRA,5             ;USR Bit5 =  UDRC
            rjmp    Senden              ;warten, bis UDR bereit
            ldi     XL,low(SRAM_START)
            ldi     XH,high(SRAM_START)
            st      x,r16
            ld      r16,x+
            out     UDR,r16
            ret                         ;zurück zum Hauptprogramm
;----------------------------------------------------------------------- 
-

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.equ        SRAM_START = 0x0060

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
main:       ldi     r16,high(RAMEND)
            out     SPH,r16
            ldi     r16,low(RAMEND)
            out     SPL,r16

Autor: Paulchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Workpad wird das "=" wohl mit Komma definiert.Ansonsten kommt
Fehler
"Voraussichtlich (expected) Komma nach SRAM_START"

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.