Pana neosud,
ya conectaste el Max232 al pic y este(el max) al pc???, acuerdate que como usas el USART del pic este no esta enviando los pulsos de forma directa, por eso TIENE que llevar el max232. Tambien que la hiperterminal donde recives la info, este a los baudios que estes transmitiendo y la configuracion que empleaste(8 o 9 bits,etc)
Si el ejemplo viene en el libro emplealo directamente para tu micro solo con los cambio s concernientes a el modelo que uses. Por lo que veo lo estas haciendo en ASM, y no me especificaste a la hora de poner el post que lo querias en asm. Los ejemplos anteriormente mensionados son para proton, y funcionan a la perfeccion, y es basicamente lo mismo, ya que si te das cuenta cargo directamente el registro TXREG.
///////////////////CORRECCION ESTA FORMA NO ES LA QUE NECESITAS NEOSUD///////
////////////////// EN EL POST SIGUIENTE TE PONGO PARA LA TRANSMISION////////////
///////////////// Y RECEPCION QUE ESTAS PIDIENDO°°°°°°°°°°°°°°°°°°°°/////////////
///////////////// GRACIAS PANA RALF2 POR AYUDARME A CORREGIRLO

/////////////
Basicamente para una transmision ASINCRONA se requiere lo siguiente:
1)inicializar el SPBRG al baudrate(tu quieres 9600) apropiado con menos de 3% de error para evitar problemas , con brgh a cero(TXSTA.2=0) con xtal a 4mhz no se puede, con brgh a 1 logico(TXSTA.2=1) a xtal de 4mhz el valor de SPBRG es de 25(mas info LEER el DS).
2)Limpiar el bit del SYNC y SETEAR el bit SPEN (TXSTA.4=0 y RCSTA.7=1)
***OPCIONALES:
a)Si se desea interrupciones setear el bit TXIE(PIE1..4=1)
b)Si la transmision es de 9 bits setear el bit TX9(TXSTA.6=1)
3)HABILITAR la transmision seteando el bit TXEN(txsta.5=1) y el bit TXIF estara setado (PIR1.4=1), indicando que esta vaciao el buffer(para no confundiros!)
c)Si se uso 9 bits de transmision el noveno bit debe ser cargado en el bit TX9D(RCSTA=valor[0 o 1], es usado tambien para el bit de paridad)
4)POR ULTIMO cargas el valor en el registro que te mencione TXREG(TXREG=valor)
Siguiendo este sencillo sistema NO PUEDES equivocarte, como ves es muy sencillo y estos pasos vienen en el DS.
Para ver si ya termino de transmitir, se puede hacer sencillamentecon el chekeo del registro del buffer de transmision del USART chekando si esta vacio o lleno(si esta lleno [en 0 logico] espera a que estevacio [en 1 logico] para volver a transmitir otro dato ) con un btfXX del registro PIR1.4 (bandera de transmision, si el buffer esta lleno esta en 1 si esta en cero esta vacio y se puede continuar enviando) . Analiza el codigo que puse en el post anterior y te dara cuenta que es lo mismo, solo que yo use 2400 BAUDIOS.
/**********(por ahi podria venir tu error.............)******************/
Salu2 pana