Que tal Bioelectronico, espero que todo bien, pues voy a entrar un poco en detalle, primero hablemos del hardware necesario:
no le hagas caso a la LCD, notaras que necesitas usar el MAX232, esto es porque el protocolo RS232 necesita alrededor de -5 a -15 voltios para un 1 logico y de +5 a +15 voltios para un 0 logico (ahorita no tengo el dato exacto de los voltajes pero es algo asi), y el pic solo te proporciona 0 y 5 voltios, entonces es necesario un traductor que te convierta los 0 a 5V del PIC a los -15/+15 del protocolo y ese traductor es el MAX.
Una vez teniendo los voltajes adecuados para la transmision y recepcion podemos mandar los datos a la PC usando el conector DB9 segun el pineado que ves en el diagrama.
Importante: Notaras que hay unos capacitores que parecen estar contra su polaridad, pues asi son no los cambies.
Hablemos del protocolo RS232:
Pues veras que la
transmision de datos ocurre de forma serial o sea un dato despues de otro, para identificar cual es el primero y el ultimo se utiliza un bit de Start y uno de Stop que ayudan a identificar toda la trama.
Velocidad de comunicacion: Normalmente se transmiten 8 bits de informacion y debe definirse una velocidad de transmision que debe ser la misma tanto para el transmisor como para el receptor para que logren sincronizarse, de lo contrario la informacion se pierde. Esta velocidad se mide en baudios (bits por segundo), en el ejemplo visto antes la velocidad se define en 9600 baudios o bits por segundo segun la instruccion
hseropen 9600
, entonces se debe configurar la PC para que reciba a esta velocidad tambien.
Bueno, en resumen pues el pic envia informacion a una velocidad determinada, el max la pone en voltajes apropiados y la compu los debe recibir configurandole la misma velocidad de transmision del pic, uuuuuuuuuuuuuuffffff, que gureso,
Ya entendiendo la interface y el protocolo, pues veamos como indicarle al PIC como mandar y recibir informacion por este puerto. Para esto utilizare el basic de oshonsoftware, debido a que ha mostrado ser muy confiable con respecto a la comunicacion serial y muy facil de usar, asi que justificado esto......
Como enviar (transmitir TX) datos: hagamos un ejemplo
pongamos 8 pulsadores en el PORTB y mandemos el estado de estos por el serial.
Solucion:
Paso 1. Definimos a RC6 como pin de salida pues por alli sale la info serial, y el pin RC7 como entrada. estos pines son los definidos por el USART del PIC16F877A, en tu caso habria que ver la hoja de datos para ver que pines corresponden al modulo USART.
Paso 2. Abrimos la comunicacion serial definiendo la velocidad de transmision con la intruccion "Hseropen 9600".
Paso 3. transmitimos la informacion que queremos con la instruccion "Hserout variable", donde la variable usada debe ser de tipo byte, pues el serial solo puede transmitir un byte a la vez.
TRISB = %11111111
TRISC.6 = 0
TRISC.7 = 1
Hseropen 9600
WaitMs 1000
inicio:
Hserout PORTB
Goto inicio
End
y eso es todo,

, facil verdad
Como recibirr (RX) datos:
Pues se aplican los mismos pasos 1 y 2 solo que la instruccion del paso 3 ahora es "Haserin variable" donde la variable debe ser de tipo..........(adivina???????)...............SIII (byte).
aqui el firmware:
TRISD = %00000000
TRISC.6 = 0
TRISC.7 = 1
Hseropen 9600
WaitMs 1000
Dim valor As Byte
inicio:
Hserin valor
PORTD = valor
Goto inicio
en este caso el PIC recibe continuamente un byte de informacion y lo muestra en el PORTD.
Si en caso necesitamos enviar varios bytes de info:
Hserout dato1, dato2, dato3, dato4
y para recibir varios bytes usamos:
Hserin dato1, dato2, dato3, dato4
Espero que te sirva esta info y cualquier cosa me contas.