ich habe es jetzt so gelöst:
Code:
Speichern
;speichern: // Bank 1-6: 1=Position1LowIst;2=Position1HighIst;3=Position2LowIst;4=Position2HighIst;5=MessWertLow;6=MessWertHigh
movlw D'1'
movff WREG,FSR0H
movff SpeicherZähler, FSR0L
movff Position1LowIst,INDF0
movlw D'2'
movff WREG,FSR0H
movff Position1HighIst,INDF0
movlw D'3'
movff WREG,FSR0H
movff Position2LowIst,INDF0
movlw D'4'
movff WREG,FSR0H
movff Position2HighIst,INDF0
movlw D'5'
movff WREG,FSR0H
movff MessWertLow,INDF0
movlw D'6'
movff WREG,FSR0H
movff MessWertHigh,INDF0
return
;;**************************************************************
SpeicherAuslesen
;Istpositionen retten:
movff Position1LowIst,Position1LowIstKopie
movff Position1HighIst,Position1HighIstKopie
movff Position2LowIst,Position2LowIstKopie
movff Position2HighIst,Position2HighIstKopie
SpeicherAuslesenLoop
movlw D'1'
movff WREG,FSR0H
movff SpeicherZähler, FSR0L
movff INDF0,Position1LowIst
movlw D'2'
movff WREG,FSR0H
movff INDF0,Position1HighIst
movlw D'3'
movff WREG,FSR0H
movff INDF0,Position2LowIst
movlw D'4'
movff WREG,FSR0H
movff INDF0,Position2HighIst
movlw D'5'
movff WREG,FSR0H
movff INDF0,MessWertLow
movlw D'6'
movff WREG,FSR0H
movff INDF0,MessWertHigh
call Sende6BytePositionsUndMesswerte
decf SpeicherZähler,1
movlw D'0'
CPFSEQ SpeicherZähler
goto SpeicherAuslesenLoop
clrf SpeicherZähler
;Ab hier ist der Speicher ausgelesen:
;aktuellen Ist-Wert zurücklesen:
movff Position1LowIstKopie,Position1LowIst
movff Position1HighIstKopie,Position1HighIst
movff Position2LowIstKopie,Position2LowIst
movff Position2HighIstKopie,Position2HighIst
;call ADWandlung
;call Sende6BytePositionsUndMesswerte ;letzte Istposition dem PC mitteilen
return
Ich habe zwar noch einen scheinbar sporadischen Fehler bei der Messwertaufnahme, der sich so äußert, dass ein Positionswert mal nicht stimmt, aber dass wird wohl an etwas anderem liegen....
Vielen Dank für Deine Hilfe!!! =D>
Lesezeichen