Deine Datenpakete können unterschiedlich lang sein, und es gibt kein "fertig-Symbol"? Du mußt also auf das "A" des nächsten Paketes warten?
Ich würde das in etwa so angehen:
-je eine Variable für "Anzeiger" und "Wert", die grad empfangen werden (Word)
-eine Statusvariable, was aktuell empfangen wird (2bit)
-UART mit IRQ
in der ISR
-ist das empfangene Byte "A", setze Status auf 0 Anzeiger und Wert enthalten korrekte, zu verarbeitende Daten
-ist es "/", setze Satus auf 1, Anzeiger und Wert enthalten korrekte, zu verarbeitende Daten, die verarbeitet/kopiert werden müssen. beide Vars auf 0 setzen.
-ist es ein "\" setze Status auf 2
-jedes andere Zeichen: ziehe 48 ab (=Zahl als byte), wenn status=1, multipliziere Anzeiger mit 10, und addiere das neue byte; bei Status=2 dasselbe mit Wert
Bei genauerer Betrachtung kann man das A dann auch ignorieren (wenn A, dann Reti), und mit einem Bit als Status auskommen.
Ich würde das in etwa so angehen:
-je eine Variable für "Anzeiger" und "Wert", die grad empfangen werden (Word)
-eine Statusvariable, was aktuell empfangen wird (2bit)
-UART mit IRQ
in der ISR
-ist das empfangene Byte "A", setze Status auf 0 Anzeiger und Wert enthalten korrekte, zu verarbeitende Daten
-ist es "/", setze Satus auf 1, Anzeiger und Wert enthalten korrekte, zu verarbeitende Daten, die verarbeitet/kopiert werden müssen. beide Vars auf 0 setzen.
-ist es ein "\" setze Status auf 2
-jedes andere Zeichen: ziehe 48 ab (=Zahl als byte), wenn status=1, multipliziere Anzeiger mit 10, und addiere das neue byte; bei Status=2 dasselbe mit Wert
Bei genauerer Betrachtung kann man das A dann auch ignorieren (wenn A, dann Reti), und mit einem Bit als Status auskommen.