Ich hab' mir das mal angesehen, und aus der assemblerliste ist eigentlich kein Fehler erkennbar (auch kein unterschied durch = "")
(print statt LCD, das ist aber wurst)
Müßte man wirklich mit dem AVR-Studio debuggen.
Oder natürlich, es ist in der Gesamtsource irgendwas (aber was ?) ganz Schräges drinnen.
Wenn wer gucken will:
Code:
Const Vers_info = "0.1"
Dim Teststring As String * 15
;------------------------------------------------
; teststring = ""
;------------------------------------------------
LDI XL,0x60
LDI XH,0x00
CLR r24
ST X,r24 ; einfach eine NULL setzen
;------------------------------------------------
: Teststring = "Version " + Vers_info
;------------------------------------------------
LDI XL,0x60 ; teststring lo
LDI XH,0x00 ; hi
LDI ZL,0x04 ; "Version" lo
LDI ZH,0x01 ; hi
CALL L_0x00F0 ; from flash to SRAM (X)
;------------------------------------------------
LDI XL,0x60 ; teststring lo
LDI XH,0x00 ; teststring hi
CALL L_0x00B2 ; set X to stringtop
;------------------------------------------------
LDI ZL,0x0E ; "0.1" lo
LDI ZH,0x01 ; hi
CALL L_0x00F0 ; from flash to SRAM (X)
;------------------------------------------------
LDI XL,0x60 ; teststring lo
LDI XH,0x00
CALL L_0x00C4 ; print string
CALL L_0x00D0 ; print crlf
CLI
;------------------------------------------------
;---- END
;------------------------------------------------
L_0x00B0:
RJMP L_0x00B0
L_0x00FC:
LPM
ADIW ZL,0x0001
AND r0,r0
RET
;------------------------ literal
L_0x0104:
.DB 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20 ;Version
.DB 0x00, 0x00, 0x30, 0x2E, 0x31, 0x00 ;..0.1.
Lesezeichen