Hola a todos...
Ante todo, daros las gracias por entrar a echar un ojo a mi consulta...
Bueno, os cuento lo que me sucede...
estoy liado con un proyecto, que desde hace varios meses, va siendo mi quebradero de cabeza, y lo que me hace tener ganas de vivir..

Mi interés se basa en las comunicaciones serie...
Empecé con una pic 16f84 trabajando con el serin y serout, en invertido...
después, me decidí a ir metiendome con el max232, y hasta hay todo funcionó muy bien, claro está, después de leer, leer y leer... y sobre todo cacharrear y perder muchas horas de sueño.

Finalmente, y bajo la orientación del genio de
sispic, me decidí a usar un 16f876, y usar la uart.
Todo funciona perfectamente...
mi circuitillo se conecta con el hiperterminel a las mil maravillas.
PERO!!!!!!!!
aqui viene el problema.
Ahora estoy intentando conectarme con un modem.
Con el
HSEROUT, todo funciona bien, mando por ejemplo un atdt6090909 y el modem llama a ese numero, sin problemas.
pero con el
HSERIN, no consigo hacer nada...

bueno, parece que empieza a recivir datos, y de pronto, se cuelga...
os dejo un programilla de ejemplo a ver si veis que puede ser...
En principio, pienso que puede ser por un desbordamiento del buffer de recepción... Pero admito sugerencias...
El programa hace lo siguiente.
enciende dos led, para saber en que parte del código estoy.
llama al +346090909
y espera a tener conexión.
para leer algun dato, lo que hago es colgar mi teléfono para que el modem responda con un BUSY, o espero a que la central telefonica le indique al modem, que no descuelgo, leyendo un NO CARRIER.
una vez que recivo los datos desde el modem, con la función hserin, leo los cuatro primeros dígitos, y los guardo en la eprom.
asi sucesivamente...
despues, leo el pic con el grabador, y sorpresa... no ha cogido ningún dato, o a escrito algún caracter raro..

Si simulo este mismo proceso con el hiperterminal, todo funciona bien...

A nivel de hardware, para usar el hiperterminal o el modem, uso dos cables distintos, dado que los pines de rx/tx, se invierten..

DEFINE OSC 4
DEFINE HSER_RCSTA 90H
DEFINE HSER_TXSTA 20H
DEFINE HSER_BAUD 4800
tmp var byte[5]
cont var word
i var byte
cont = 0
inicio:
high portb.7
pause 1000
hserout["ATDT+346090909",13]
low portb.7
hserin[tmp(1),tmp(2),tmp(3),tmp(4)]
high portb.6
for i = 1 to 3
write cont , tmp
cont = cont + 1
next
low portb.6
pause 1000
high portb.7
high portb.6
pause 1000
low portb.6
low portb.7
goto inicio