Vayamos por partes.
Se usan registros en los casos de que el pic, tenga internamente un USART interno, y los registros sirven para configurar este.
Cuando hablan de es por Software
Tu tienes que detectar Bit a Bit, y colocarlo en el lugar que desees el dato que ingreses. Aca puedes tenr problemas con el sincronismo. Pero si es posible hacerlo.
Lo otro es realizarlo desde un programa en alto nivel.
Ahi solo tendrias que configurar los puertos a usar, y el programa generaria el codigo y el sincronismo de acuerdo ala velocidad, numero de bits, la paridad, ....
En este ultimo caso por Ejemploi
getch();//Espera el ingreso de un dato en C
serin puerto,velocidad,tipo,[variable] "//Espera el ingreso de un dato en forma serial
"por el puerto, con velocidad, de caractersisticas tipo, y lo guarda
"en una variable.... esto en pbp
Bueno espero haber aclarado tus dudas
Atentamente
Yoel Ocmin