Terminal virtual que no muestra datos

0

Soy nuevo en la programación PIC y estoy haciendo un ejercicio con UART. Después de construir el programa, el mensaje no se muestra. ¿Puede alguien decirme donde me equivoco? BAUDRATE = 9600, _XTAL_FREQ = 20Mhz. Mi código:

void initUART(void)
{
 TRISC6 = 1;        // TX
 TRISC7 = 1;        // RX

 SPBRG = ((_XTAL_FREQ/16)/BAUDRATE) - 1;
 BRGH = 1;      // high baud rate
 SYNC = 0;      // async
 SPEN = 1;      // configure RC6 RC7
 CREN = 1;      // continuous recep.
 SREN = 0;      
 TXIE = 0;
 RCIE = 1;
 TX9 = 0;       // 8-bit txn
 RX9 = 0;       // 8-bit rxn
 TXEN = 0;      // reset tx
 TXEN = 1;      // enable txn
}

void main()
{
 initUART();
 GIE = 1;
 PEIE = 1;

 senddata("Embedded systems");
 while(1){
    //sendbyte(receivebyte());      //when interrupts are disabled
    }
}

void senddata(const unsigned char *data)
{
 while(*data)
    sendbyte(*data++);
}

void sendbyte(unsigned char byte)
{
 while(!TXIF)
    TXREG = byte;
}

/*char receivebyte(void)
{
 if(OERR){
    CREN = 0;
    CREN = 1;
    }
 while(!RCIF);
 return RCREG;
}*/

void interrupt isr(void)
{
 if(RCIF){
    if(OERR){
        CREN = 0;
        CREN = 1;
    }
    sendbyte(RCREG);
    }
}
    
pregunta Tinu

1 respuesta

0

Intente calcular la velocidad en baudios para que sea aproximadamente 4800 en la simulación, incluso si en realidad transmitirá a 9600. Proteus rara vez se ejecuta al 100% en tiempo real durante la ejecución de la simulación y no se puede lograr la sincronización de datos entre Los dispositivos simulados. Esto me ha funcionado antes, espero que lo haga por ti.

Otra cosa que tal vez quieras revisar es que el pin TX del maestro entra en el pin RX del esclavo y viceversa. Es una mezcla de conexión común.

    
respondido por el Jesus Leon

Lea otras preguntas en las etiquetas