Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: iguruz - 28 Nisan 2008, 12:56:41

Başlık: seri haberleşmede karakter sorunu
Gönderen: iguruz - 28 Nisan 2008, 12:56:41
Merhaba ,
Aşagıdaki kodda seri haberlerşme yapıyorum gelen karakterleri pc ye gonderiyorum fakat gelen karakterler anlamsız..

fprintf(DIGERPIC,"ABCD%c%c",13,10);
  delay_ms(200);
  fgets(Gelen,SAYAC);
  delay_ms(200);
 
  fprintf(PC,"%S",Gelen);
Başlık: seri haberleşmede karakter sorunu
Gönderen: aliveli - 28 Nisan 2008, 13:43:09
Aşağıdaki kodda seri porttan gelen bilgi int_rda ile içeriden buffer dizisine alınır daha sonrada ekrana geri yazdırılır.


#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)

#define BUFFER_SIZE 32
BYTE buffer[BUFFER_SIZE];
BYTE next_in = 0;
BYTE next_out = 0;


#int_rda
void serial_isr() {
  int t;

  buffer[next_in]=getc();
  t=next_in;
  next_in=(next_in+1) % BUFFER_SIZE;
  if(next_in==next_out)
    next_in=t;           // Buffer full !!
}

#define bkbhit (next_in!=next_out)

BYTE bgetc() {
  BYTE c;

  while(!bkbhit) ;
  c=buffer[next_out];
  next_out=(next_out+1) % BUFFER_SIZE;
  return(c);
}


void my_get_string(char* s, unsigned int8 max) {
  unsigned int8 len;
  char c;

  --max;
  len=0;
  do {
    //c=getc();  // Commented out.
      c = bgetc();   // Call bgetc() instead of getc()
   
      if(c==8) {  // Backspace
       if(len>0) {
         len--;
         putc(c);
         putc(' ');
         putc(c);
       }
    } else if ((c>=' ')&&(c<='~'))
      if(len<=max) {
        s[len++]=c;
        putc(c);
      }
  } while(c!=13);
  s[len]=0;
}

#define STRING_SIZE 40

//===================================
void main()
{
char input_str[STRING_SIZE];

enable_interrupts(int_rda);
enable_interrupts(global);

while(1)
 {
  printf("Enter a string of text: ");
  my_get_string(input_str, STRING_SIZE-1);    
  printf("\n\rYou typed: %s \n\r\n\r", input_str);

 }

}


Burada ise en sade hali yer almaktadır

#use rs232(Baud=19200, Xmit=PIN_C6, Rcv=PIN_C7)

void main()
{
 char c;
 while(1)
 {
   c = getc();
   putc(c);
 }
}
Başlık: seri haberleşmede karakter sorunu
Gönderen: iguruz - 28 Nisan 2008, 21:13:35
#use delay(clock=20000000)
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, BROWNOUT, BORV20, NOPUT, STVREN, NODEBUG, LVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB

#use rs232(baud=300,parity=E,xmit=PIN_C6,rcv=PIN_C7,bits=7,stream=SAYAC)
#use rs232(baud=9600,parity=N,xmit=PIN_B1,rcv=PIN_B0,bits=8,stream=PC)

300 baudta bağlantı kuruyorum fakak gelen dataları 300 de lıp 9600 da pc ye gonderince sacma sapan karakterler geliyor
bu işi nasıl çözerim.......