Hm müsste es nicht gehen 3x Software RS232 und dann je nach Auswahl einfach das mapping der Ports zu ändern ?
Würd auch gehen, mach bräuchte aber überhaupt keine 3 Software-RS232, es genügt 2x RS232. Einer Richtung PC, einer, der auf den ausgewählten Port horcht. Aber wieso einfach, wenn es auch konpliziert geht ?

Nein, die Beste Lösung ist, wenn man jetzt von dem Mux absicht, das genu 0 Aufwand zu programmieren ist, den PIC einfach eines der drei Barcode-RS232 zu samplen und die eingelesenen Werte direkt auf den Port des PCs zu schreiben (halt, wie Maxigraf vorgeschlagen hat). Und wenn der PIC mit 20MHz hochgetaktet wird, ergibt sich eine Verzögerung von weniger als eine 1µs.
Der Code würde dann ungefähr so aussehen:

Code:
#define _PCTX PORTA,1 ; input
#define _PCRX PORTA,2 ; output
#define _CODE1TX PORTB,1 ; input
#define _CODE1RX PORTB,1 ; output

[......]

mux1:
	btfss _CODE1TX
	bcf _PCRX
	btfsc _CODE1TX
	bsf _PCRX
	btfss _PCTX
	bcf _CODE1RX
	btfsc _PCTX
	bcf CODE1TX
	return
Ist nicht effektiv, was den Programmspeicher angeht, aber es ist schnell und es erzeugt keine glitches bei den Ausgängen. Im schlimmsten fall dauert es, wenn man jetzt den "call mux1" des Hauptprogrammes nicht miteinberechnet 10 Cycles (mit dem return), das ergibt eine Verschiebung von 2 µs zwischen zwei abtastungen des Ports, d.h. alles < 400KBaud (100K Buffer für das Hauptprogramm) sollte keine Probleme bereiten.

Ich hoff, ich hab mich net verrechnet
lg
Mobius

€dit: fragt mich bitte net, wieso das zentriert ist, ich hab keinen blassen schimmer, es sollte eigentlich in einem Codeblock eingebettet sein -.-