Autor Tema: datos en paralelo del RS232  (Leído 2203 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jacobo28

  • PIC10
  • *
  • Mensajes: 5
datos en paralelo del RS232
« en: 18 de Diciembre de 2008, 03:53:04 »
hola!!!!, estoy comunicando un pic 16F877 utilizando la usart, kiero sacar los datos del rs232 en paralelo, pero no tengo ni idea de como hacerlo, alguien puede ayudarme???
gracias!!!!

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: datos en paralelo del RS232
« Respuesta #1 en: 18 de Diciembre de 2008, 05:38:27 »
Que lenguaje de programacion usas?

Si es en ASM

solo hace
Código: [Seleccionar]
movf RCREG,W
movwf PORTX

Si es en C en este caso CCS C

             
Código: [Seleccionar]
output_X(getc());

Desconectado jacobo28

  • PIC10
  • *
  • Mensajes: 5
Re: datos en paralelo del RS232
« Respuesta #2 en: 18 de Diciembre de 2008, 13:52:29 »
muchas gracias AKENAFAB, me ha sido de gran ayuda

Desconectado jacobo28

  • PIC10
  • *
  • Mensajes: 5
Re: datos en paralelo del RS232
« Respuesta #3 en: 19 de Diciembre de 2008, 01:45:04 »
hola, estoy usando C de CCS, y al usar la opción dada, no tuve problemas, pero cuando intenté simularlo en proteus para sacarlo por el puerto b no hace nada, me imagino ke es un problema en el código, el que estoy usando es el siguiente:

#include <16F877a.h>
#fuses XT, NOWDT, NOPROTECT
#use delay(clock=20000000)
#byte portb=0x06
#use fast_io (b)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

void main(void)
{
   set_tris_b(0x00);
   
   output_b(getc());
}

si alguien puede ayudarme se lo agradeceria muchisimo, gracias

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: datos en paralelo del RS232
« Respuesta #4 en: 19 de Diciembre de 2008, 02:44:37 »

HOla amigo

Primero sino tienes nada no te mostrara nada xD osea 0 , hay que revisar como trabaja el getc();

Despues si digamos tuvieras 1 dato recibido cunado hace el getc(); y lo mandas al portb te lo envia , PERO en el siguiente getc();no tienes nada asi que te enviara nuvamente un 0 , creo que eso e sloq ue te sucede , podrias utilizar kbhit() para saber si tienes un dato en el buffer , y si es asi lo recibes por getc() y lo envias al puerto b, en caso de que no tengas nada en el buffer , kbhit() sera falsa y no atenderias la parte del getc();.

Disculpa si revolvi mucho las cosas xD no soy bueno para explicar y soy noob xD

Código: [Seleccionar]
do {
if(kbhit() )                                      //Dato recibido?
 {
  output_b(getc());
}
   }while(1); 


Un Saludo!
« Última modificación: 19 de Diciembre de 2008, 02:48:51 por AKENAFAB »

Desconectado jacobo28

  • PIC10
  • *
  • Mensajes: 5
Re: datos en paralelo del RS232
« Respuesta #5 en: 19 de Diciembre de 2008, 11:02:09 »
hola AKENAFAB, ya intente lo ke me dijiste, pero sigue igual y no se ke pueda ser, de casualidad no tienes algun ejemplo que me puedas proporcionar, xq la desesperación empieza a hacer presa de mi.

gracias otra vez

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: datos en paralelo del RS232
« Respuesta #6 en: 19 de Diciembre de 2008, 18:14:45 »
como tu Cristal pasa es de 20 MHz se toma como HS , no como XT .

Un saludo!

Pruebo tu programa y lo subo

Le modifique un poco

Código: [Seleccionar]
#include <16F877a.h>
#fuses HS, NOWDT, NOPROTECT,PUT,NOLVP
#use delay(clock=20000000)
#byte portb=0x06
#use fast_io (b)
#use rs232(UART1,baud=9600,xmit=PIN_C6,rcv=PIN_C7)

void main(void)
{
   set_tris_b(0x00);
   output_b(0);

  do {
       if(kbhit() )                                      //Dato recibido?
        {
         output_b(getc());                           //enviar al puerto b
        }
      }while(1);
}

Es lo mismo que te puse mas arriba, lo simule y funciona bien.




« Última modificación: 19 de Diciembre de 2008, 18:30:25 por AKENAFAB »

Desconectado jacobo28

  • PIC10
  • *
  • Mensajes: 5
Re: datos en paralelo del RS232
« Respuesta #7 en: 22 de Diciembre de 2008, 16:20:02 »
muchas gracias por tu gran ayuda AKENAFAB, la verdad estaba perdido en este tema de la USART del pic.

un saludo