Autor Tema: como recibir una cadena por rs232  (Leído 1701 veces)

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

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
como recibir una cadena por rs232
« en: 23 de Septiembre de 2005, 18:40:00 »
hola estoy tratando de recibir con el pic una cadena enviada por el pc por rs232 pero no me compila me da unos errores.

aqui les dejo el codigo:

#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT
#nolist
#byte port_A=05
#byte port_b=06
#use fixed_io(A_OUTPUTS=PIN_A0,PIN_A1,PIN_A2,PIN_A3,PIN_A4)
#use fixed_io(B_OUTPUTS=PIN_B0,PIN_B1,PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6)
#use rs232(baud=9600,xmit=PIN_B6,rcv=PIN_B7,invert)

char opcion[2];

envia_ok()
   {
      printf("OK" );
   }

void main() {

   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   port_a=0;
   port_b=0;

   while(1)
   {
     
      switch(gets(opcion))
      {
         case "10": envia_ok();
         break;
         case "11": envia_ok();
         break;
         case "12": envia_ok();
         break;
      }

   }

}

a y otra cosa como ago un boton para el pic coloco una recistencia de 10k entre la patita del pic y los 5volt o le pongo 5volt directos a la patita del pic.

desde ya les agradesco a todos por su ayuda GRACIAS!!!

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: como recibir una cadena por rs232
« Respuesta #1 en: 24 de Septiembre de 2005, 05:30:00 »
Vamos haber....asi por encima decirte que has declarado un vector tipo char de dos dimensiones opcion[2] ok??? bien al switch cuando pides por teclado coger una tecla gets(opcion) lo estas haciendo mal, ya que si quieres almacenar la tecla pulsada en el vector opcion debes expecificar en que direccion del vector, es decir en la opcion[0] o en la opcion[1], creo que te has liado por lo cases asi que te recomiendo que declares la variable simplemente tipo char es decir asi:
Codigo:

                    char opcion;



y ya puesdes utilizar bien la funcion gets(opcion).....vale???
Con respecto al boton, asi:
Codigo:

                             º 5v
                             |
                             |
                           RES 10K
                             |
                             |
                  PIC------------BOTON--------GND


Asi la patita del pic donde esta conectado el boton estara en alta y sera tratada como si no se pulsa el boton, cuando s epulsa el boton la patita del pic esta en baja y se trata como pulsado el boton....decirte que los botones son dispositivos que generan los "rebotes" es decir mandan muchas señales altas y bajas en un corto periodo de tiempo por lo que tendras que evitarlo a nivel de software(con un retardo 151ms o mas o bucle while compruebe si ya se ha estabilizado) o bien mediante hardware.
suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: como recibir una cadena por rs232
« Respuesta #2 en: 24 de Septiembre de 2005, 07:03:00 »
Ke tal!!! decirte algo mas....en la instruccion:
Codigo:

     #use rs232(baud=9600,xmit=PIN_B6,rcv=PIN_B7,invert)


no hace falta pone invert si usas un MAX232...aconsejarte que no declares el pin B6 como salida ya que lo vas a usar en la declaracion del rs232, mejor declarar la variable char opcion dentro del main asi sera local.... y por cierto en el post de ejemplitos en c, hay un programa de como interactua el PC->PIC, se llama RS232 Y PIC, aqui te dejo el enlace:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4061462&pag=6

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Sebascl

  • PIC12
  • **
  • Mensajes: 73
RE: como recibir una cadena por rs232
« Respuesta #3 en: 03 de Noviembre de 2005, 09:49:00 »
gracoas vszener por la ayuda...



saludos...


 

anything