Autor Tema: simular hyperterminal  (Leído 1376 veces)

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

Desconectado baixinyo

  • PIC10
  • *
  • Mensajes: 12
simular hyperterminal
« en: 07 de Octubre de 2005, 03:28:00 »
hola compañeros!!!!!!!!!!!!!


Tengo un pequeño problema, y necesito otravez vuestra ayuda.

Tengo un equipo electrónico que lo conector por el puerto serie del pc directamente, y con el hyperterminal conectado, lo que siempre leo en este son mo un número (5), o dos números (73) o tres números (124), ejemplos:

2
3
45
6
123


Así sucesivamente.

Yo lo que quiero es que con el pic16f876 pueda hacer lo mismo pero ver los números por tres display. Si sabeis como simular el hyperterminal através de pic y display decidme alguna cosa. Programa el C con CCS C PCW C Compiler IDE.


Gracias por todo.
 

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: simular hyperterminal
« Respuesta #1 en: 07 de Octubre de 2005, 10:34:00 »
Lo que entendido, es que tienes un equipo que te manda datos numericos por rs-232, y en ves del PC querias conectarlo a un pic y mostrarlo en displays, lcd o lo que sea?

Solo tienes que indicar en CC la directiva para el RS232 y punto ... no veo la complicación RollEyesIdea
Si juegas contra el mejor, pierdes como los demás.

Desconectado baixinyo

  • PIC10
  • *
  • Mensajes: 12
RE: simular hyperterminal
« Respuesta #2 en: 08 de Octubre de 2005, 05:22:00 »
Hola radon!!!!!!!!

Puede que no haya explicado bién.

Si en el hyperterminal me salen tres números o dos o uno, eso no significa que sola me de eso el equipo.

El equipo me da un final de linia y un final de trama. No se si me explicado bién.

Pero la cuestión es que del equipo me llega primero un número que yo quiero, después un final de trama o final de linia, si es final trama biene otro número que va junto al que ya he capturado, si biene final de linia se pasa a la siguiente linia y vuelve a comenzar.

El hiperterminal ya sabe que hacer pero yo con el pic no, ya he intentado diferentes cosas.

El final de trama corresponde a 0X0D, y final de linia 0X0A que supongo que son los mismos que utiliza el hiperterminal (por el hiperterminal funciona correctamente).

Yo lo que quiero es ver estos números que se ven en el hyperterminal verlos en tres display de 7 segmentos.

Aquí pongo el progrma que he hecho:


#include <16f876.h>
#fuses XT, NOWDT, NOPROTECT
#use delay(clock=3686400)
#define Tx PIN_C6 // PIN de Transmisión
#define Rx PIN_C7 // PIN de Recepción

#use rs232(baud=9600, xmit=Tx, rcv=Rx)

SET_TRIS_A(0);
SET_TRIS_B(0b00101110);
SET_TRIS_C(0b10000000);


#define CP   PIN_B2
#define STR   PIN_B1
#define D   PIN_B3

void sortida(char DADA, char a1, char b1, char c1);
void enviardades(char DADA, char a1, char b1, char c1);

char   TAULA[10]={0x77,0x24,0x4D,0x6D,0x2E,0x6B,0x7B,0x2D,0x7F,0x2F};
char a,a1,b,b1,c,c1,DADA,D1;
int cont,e;



void sortida(char DADA, char a1, char b1, char c1)
{

   int t;
   t=0;
   e=1,0;

   while(t<=7)
   {
      t=t+1;
      output_bit(D,c1);
      c1>>1;
      output_bit(CP,1);
      output_bit(CP,0);
   }
   t=0;


   while(t<=7)
   {
      t=t+1;
      output_bit(D,b1);
      b1>>1;
      output_bit(CP,1);
      output_bit(CP,0);

   }


   t=0;
   while(t<=7)
   {
      t=t+1;
      output_bit(D,a1);
      a1>>1;
      output_bit(CP,1);
      output_bit(CP,0);

   }
   t=0;
   output_bit(STR,1);
   output_bit(STR,0);
}




void enviardades(char DADA, char a1, char b1, char c1)
{
   if(cont==0)
   {
   a=DADA;
   a1=TAULA[a];
   }

   if(cont==1)
   {
   b=DADA;
   b1=TAULA;
   }

   if(cont==2)
   {
   c=DADA;
   c1=TAULA[c];
   }

}








void main(void)
{
   cont=0;
   while(1)
   {
      DADA=getch();

      
         if (DADA>=0X30&&DADA<=0X39)
      {
         enviardades(DADA, a1, b1, c1);
         DADA=getch();
         putc(DADA);
         if(DADA==0X0D)
         {
            cont=cont+1;

         }
         if (DADA==0X0A&&cont==0)
         {
            c1=a1;
            b1=1;
            a1=1;
            sortida(DADA, a1, b1, c1);
            cont=0;
         }
         if (DADA==0X0A&&cont==1)
         {
            c1=a1;
            a1=1;
            sortida(DADA, a1, b1, c1);
            cont=0;
         }
         if (DADA==0X0A&&cont==2)
         {
            sortida(DADA, a1, b1, c1);
            cont=0;
         }

      }
   }
}




 

anything