Hi
Zu Thorsten. So kommt es mir auch vor. Ich denke der PC benötigt eine
kleine Zeit um "Aufzuwachen" (synchronisieren oder so etwas
ähnliches) und da huschen ihm immer ein paar Byte's durch die Lappen
Ich benutze auf PC-Seite ein selbstgeschriebenes Programm in Borland
C++ das unter DOS läuft(Eingabeaufforderung). Die Routienen zum
einlesen der Daten müßten aber funsen da es immer die selben sind und
nach einer gewissen Zeit das ganze auch tadellos funktioniert.
Zu Thomas:
OK ich nehme die Autobahn zurück, Landstraße ist, glaub ich auch, doch
richtiger:)
Hier ist der Code(chen) des uC
.nolist
.include"8515def.inc"
.list
.def cnt = r18
.def prm1 = r17
.def temp = r16
.equ CLOCK = 4000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.equ Ram =$060
.cseg
rjmp Initial ; Einsprung nach Reset
ZRegNull:
; Anfangsadresse des Ramspeicher
; in den Z-Pointer laden
ldi ZH,high(Ram)
ldi ZL,low(Ram)
ret
;-------------------------------------------
LoescheSpeicher:
; Ramspeicher von $060 bis
; $0FA0 auffüllen
rcall ZRegNull
ldi temp,$00
LS01:
st z+,temp
inc temp
cpi ZL,$50
brne LS01
cpi ZH,$02
brne LS01
ret
;-------------------------------------------
SendeSpeicher:
; Den Inhalt des Speichers an der
; UART Schnittstelle aussenden
rcall ZRegNull
sbi UCR,TXEN
OT1:
ld prm1,Z+
rcall SendDat
cpi ZL,$50
brne OT1
cpi ZH,$02
brne OT1
ret
;----------------------------------------------
SendDat:
serout:
sbis USR,UDRE ; Warten bis UDR für das nächste
; Byte bereit ist
rjmp serout
nop
nop
nop
nop
out UDR, prm1
nop
nop
nop
ret ; zurück zum Hauptprogramm
;-----------------------------------------------
Main:
; Hauptprogramm
rcall LoescheSpeicher
rcall SendeSpeicher
Ma1:
rjmp Ma1
;--------------------------------------------
Initial:
; Stackpointer initialisieren
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, 2
out SPH, temp
; Baudrate einstellen
ldi temp, 77
out UBRR, temp
rjmp Main