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;
}
}
}
}