1 votos

salida uart codificada

Soy nuevo en la comunicación pic uart con el PC usando RS232. He probado el código de abajo y utilizado Hyperterminal para ver la salida. Pero la salida se codifica aquí y allá cada vez que reinicio el pic. He intentado cambiar los stopbits de 1 a 0 en el hyperterminal pero la salida sigue siendo la misma. La configuración mantenida en hyperterminal es

  1. Velocidad de transmisión 9600
  2. Paridad ninguna
  3. Stopbits 1 y 2 (para ambos la salida es la misma).
  4. Número de bits 8

Estoy usando PIC16F877a y he codificado usando el compilador MPLAB XC8 Las salidas están en el archivo adjunto

¿Podría decirme dónde he cometido el error?

void main()

{
TRISC = 0x80;
TXSTA=0x24;     
RCSTA=0x90;           
SPBRG=0x81;           
unsigned int i=0;
char name[]="Sample Output";

while(name[i]!='\0')
{
  TXREG=name[i];
  while(!TXIF);
  __delay_ms(1000);
  i++;

}
while(1);
}

enter image description here

1voto

Matthias Bayer Puntos 751

Creo que tienes que sondear el estado del registro de desplazamiento de transmisión TRMT en lugar de TXIF. Cuando TRMT==1 el registro está vacío y está listo para transmitir un byte.

Pero al volver a mirar me doy cuenta de que los caracteres erróneos están siempre desviados por el mismo bit en el código ASCII. Cuando un carácter es erróneo, el primer bit (de bajo orden) del carácter ASCII debería ser 1, pero se sustituye por un 0. La 'S' se convierte en 'R', la 'O' en 'N', la 'u' en 't'. Eso parece un problema de integridad de la señal en el cable de datos.

Si bien creo que necesitarás sondear el bit TRMT, no creo que tu problema actual sea de software. Busca cualquier cosa que pueda afectar a la calidad de la conexión del cable.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X