Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola! Como va el verano, bien espero jejeje a ver, tengo un pequeño problema (que cada vez se hace mas grande, no se si por obsesión o porque pero ya me esta ganando terreno) intentare plantearlo bien, estoy intentando comunicar mi Pc (Windows Xp, 1 puerto Com libre) con mi Pic 16f877 (que hasta ahora esta funcioando bien), lo consegui en los ordenadores de clase, los cuales funcionaban con Windows 98, pero al llegar a casa no me funciona nada en absoluto, lo intente con un ordenador viejo con Windows 98, le añadi otro puerto serie porque el raton tiene que ir conectado al Com1, y nada, con mi ordenador de siempre en Xp, y nada, con el mismo y Windows 98, y nada, a todo esto decir que estoy utilizando una aplicacion que hice con Visual Basic 4.0 con el control Mscomm. Leí por ahi que este control en Xp no funciona, a lo que intente "migrar" el codigo a Visual Studio 2005 (nada xD) por lo que me puse a volver a escribirlo, con el nuevo control que sustituye al MsComm llamado SerialPort. La aplicaión como ya supondreis es sencilla 100%, tan solo enviar un numero y que el Pic lo saque por otro puerto, aqui dejo el codigo del programita (que creo yo que ahi debe estar el error pero no consigo verlo) Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Open()
TextBox1.Text = TextBox1.Text & "Puerto Com1 abierto con exito." & vbCrLf
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dato As String
dato = TextBox2.Text
SerialPort1.Write(dato)
SerialPort1.Close()
TextBox1.Text = "Ha sido enviado el dato " & TextBox2.Text & vbCrLf
TextBox1.Text = TextBox1.Text & "Puerto Com1 cerrado con exito." & vbCrLf
End Sub
y el del Pic #include <pic1687x>
unsigned char dato=0;
void main (void)
{
ADCON1=0x06;
TRISB=0x00;
TRISC=0xBF;
RCSTA=0x90;
TXSTA=0x06;
SPBRG=25;
RCIE=1;
INTCON=0xC0;
PORTB=0x00;
while(1);
}
void interrupt rec_ser (void)
{
if (RCIF==1)
{
dato=RCREG;
PORTB=dato;
}
}
Decir que con el codigo del pic he intentado mil cosas, y este siempre me ha funcionado (en clase), con el que tengo mas dudas es con de Visual Studio, pero ya no se por donde cogerme, a ver si alguien es tan amable y me echa un cable o intenta "redireccionarme", voy a intentar encontrar una controlador PCI para añadir algun puerto serie por si el mio estuviera dañado (es que los hijos de... han puesto los puntos de soldadura del COM2 en la placa base pero no estan los pins para conectarlos, por eso lo de la tarjeta PCI), he intentado con el HyperTerminal pero con este aun peor, ya no se si es el ordenador o yo o el Pic y ya no se por donde cogerlo, venga muchas gracias de antemano.
Salud!
Hola, creo que te falta activar las interrupciones globales (GIE) en el pic...
Pruebalo!
Saludos
Hola Julio! gracias por contestar 😀 si, si que esta habilitado en INTCON=0xC0 🙁 , hice una pequeña prueba para ver si entraba en la interrupcion, y efectivamente entra en la interrupcion desde el momento en que grabo el Pic (aun sin tener el adaptador serie conectado) y esto es lo que esta haciendo dudar ahora, ¿Puede estar fallando el Pic?
Voy a seguir mirando a ver que puede que puede ser, bueno gracias de todas formas!
P.D: El otro dia te vi 😛
Salud!
Hola, me viste?...donde?, volviendo al tema he visto que has puesto esto: SPBRG=25; quiza deba ser en hexa (aunque no me hagas mucho caso no conozco mucho este lenguaje) 0x019 que son los parametros para configurar a 9600 - 4Mhz con BRGH=1
Tambien puede ser que necesites setear y resetear la bandera de recepcion:
RCIF=0 <---- en el main
y aqui:
void interrupt rec_ser (void)
{
if (RCIF==1)
{
RCIF=0 <---- aqui
dato=RCREG;
PORTB=dato;
}
}
Saludos
Hola, lo he probado y nada (lo de setear y resetar sabia que se podia hacer pero que no era necesario...) voy a ver si encuentro una controladora serie y me aseguro que no es el puerto del Pc, y me planteare de cambiar el programita de Visual Basic a C, por intentar... ay mare, bueno si consigo algo fijo que hare bando xDD, bueno gracias por contestar otra vez 😀
P.D: Te vi en el trabajo hace cosa de un mes o por ahi, y yo trabajaba en Beep (acabe a primeros de año, un chaval con el pelo largo... 8)
Salud!