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?
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
;-----------------------------------------------------------------------
-
main: ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.