Tiene toda la razon RGL, para distancias mayores es mucho mejor usar ottra norma, con respecto al comando serin, te envie ayer una forma de conectarlo, es con una resistencia al pin de rx y tx del com , puedes ponerlo sin resistencia pero es mejor asegurarse con un limitador de correinte, aqui te pongo el mismo ejemplo pero con serout, te debe de recivir a 2400 bauds en tu com chekalo con una hyperterminal, este te aguanta distancias de metros sin necesidad de max y transistores, en fin como dijo RGL todo depende de las distancias:
DEVICE=16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
ALL_DIGITAL=TRUE
INICIO:SEROUT PORTB.2 , 16780 , [ "tu numero aqui SPICOPIC" ]
DELAYMS 2000
GOTO INICIO
END
Este como te dije (el esquema que te envie) es simulando con serin(no usas hardware) el problema con elusart integrado en el pic es que no puedes controlar los niveles y el estado de salida hacia tu pc por eso necesitas a fuerzas el maxxxx, ok?
Solo acuerdate que los dos esquemas que te envie(maxXXX, el que vayas a usar dependiendo la distancia y transistores) son para el comando HRSOUT OBLIGATORIOS, ya que esta susando el hardware integrado (la usart) del micro, ya te explioque arriba por que no puedes conectarlo directo.
Y el ultimo que te mande es para el SERIN , no necesita modif, ni max, OBLIGATORIO si no es mucha la distancia solo puedes agregarle resitencias de limitacion de correinte.Pero si es la distancia la que mencionaste anteriormente entonces tienes que agregar el max adecuado a la distancia , y tendrias que cambiar el estandar del comando serin o serout en tu pic ya que el MAXxxx invierte polaridades en el proceso de convertir los niveles de la señal asi que ojo con eso que a lo mejor es lo que anda fallando a la hora de conectarlo con el max . reviza bien el manual, por ejemplo el numero usado 16468 para un baud de 9600 este numero esta ya invertido y listo para conectarse como te indique(con solo resistencias) si vas a usar max o otro artilujio, prueba con este valor 84 que es el valor directo (no invertida la señal) y tendria que funcionarte correctamente con MAX,Aqui te pongo la tabla dependiendo de tu protocolo:
BaudRate 8n1inverted 8n1 true 7t1 inverted 7t1 true
300 19697 3313 27889 11505
600 18030 1646 26222 9838
1200 17197 813 25389 9005
2400 16780 396 24972 8588
4800 16572 188 24764 8380
9600 16468 84 24660 8276
esta tabla es para pbplus, para pbpro revisa en el tutorial de TODOPIC en esta direccion el comando serin :
http://www.todopic.com.ar/pbp_sp.html#serin ahi viene mejor explicado lo que te acabo de comanetar y la solucion para pb pro , que creo es el que usas.
Espero te sirva la info
Saludos pana