TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cereal2 en 13 de Abril de 2005, 04:43:00

Título: Comunicación PIC con Hyperterminal (por RS232)
Publicado por: cereal2 en 13 de Abril de 2005, 04:43:00
Buenas, estoy intentando conectar mi pic 16F877 con PC (HyperTerminal) mediante puerto serie (Rs232). Con el programa PIC Simulator, si que funciona la transmision (es un simulador, nada físico) pero cuando conecto con el puerto serie, pues no furula. tengo configurado como 19.200 baudios a velocidad alta (BGRH=1).
Mi código es lo siguiente:

Codigo:
#include "16F877.H"

#use delay (clock=4000000)

#byte puerto_a=0x05
#byte puerto_b=0x06
#byte puerto_c=0x07
#byte puerto_d=0x08
#byte adcon=0x9F

#byte spbrg=0x99        //registro de generador de baudios
#byte txsta=0x98
#byte rcsta=0x18
#byte pie1=0x8C
#byte pir1=0x0C
#byte txreg=0x19
#byte rcreg=0x1A


void inicio_trans (void)
{
   bit_set(txsta,2);              //BGRH=1 (velocidad alta)
   spbrg=0x0C;                   //19.200 baudios
   bit_clear(txsta,4);           //SYNC=0 (modo asíncrono)
   bit_set(txsta,5);             //TXEN=1 (habilita transmisión)
   bit_clear(txsta,6);          //TX9=0 (modo de 8 bits)
   bit_set(rcsta,7);             //SPEN=1 (habilita puerto serie)
}

void enviar_serie(char c)
{
   int saltar=0;
   
   do
   {
        if (bit_test(txsta,1)) saltar++;
   }while(!saltar);
   txreg=c;
}

void main (void)
{

   char c;
   
   c="A";
   inicio_trans();
   for( ;; )
   {
      enviar_serie(c);
      c++;
   }

}


Con el PIC Simulador, pues aparece en la pantalla de Hardware, tal como es el algoritmo mio: ABCDEFGHIJKL..................
Pero con el HyperTerminal, configurado correctamente (COM1, 19.200, 8 bits de datos, sin paridad, 1 bit de parada y sin control de flujo).
Es diferente la configuración para poder conectar con el HyperTerminal? Se tendrá que modificar el cable serie como cable cruzado o algo similar? O simplemente tengo el sencillo código mal?

¡Gracias por adelandado!