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


von Paulchen (Gast)


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?

von Thorsten F. (thorsten)


Lesenswert?

ldi xl,low(SRAM_START)
ldi xh,high(SRAM_START)

von Florian (Gast)


Lesenswert?

ldi xl,low(0x0060)
ldi xh,high(0x0060)

von Paulchen (Gast)


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
;----------------------------------------------------------------------- 
-

von Florian (Gast)


Lesenswert?

.equ        SRAM_START = 0x0060

von Florian (Gast)


Lesenswert?

main:       ldi     r16,high(RAMEND)
            out     SPH,r16
            ldi     r16,low(RAMEND)
            out     SPL,r16

von Paulchen (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.