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.