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>







Zitieren

Lesezeichen