Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

RS232 Rx Okuma Sorunu

Başlatan blue_, 15 Ağustos 2011, 14:20:14

blue_

Merhaba
Yazmaya çalıştığım programda belli bir uzunluktaki datayı tutup arkasından terminale yollamaya çalışıyorum yazma işinde sıkıntı yok ayrıca bir "deneme" yazısı yolladığımda ekranda görüyorum ama klavyeden girdiğim karakterleri okuyamıyorum. 5 karakterde bir ekrana basacağım. yardımcı olabilirseniz sevinirim. saygılarımla..
//#include <pic.h>
#include <htc.h>
#include <stdio.h> // printf için gerekli C standart giris çıkıskütüphanesi
#include <string.h>
#include <stdlib.h>
//#include <pic1687x.h>
#include "delay.h" // Gecikme kütüphanesi tanımlanıyor

int len=0;
char buffer[20];

void usart_init(void)
{
GIE=1;
   SPBRG=25;
   BRGH=1;//data rate for sending

   TX9=0;   //8-bit transmission
   RX9=0;   //8-bit reception
   TXEN=0;   //reset transmitter
   TXEN=1;   //enable the transmitter

   SYNC=0;   //asynchronous
   SPEN=1;   //enable serial port pins
   RCIE=1;   //enable rx interrupt
   CREN=1;   //enable reception
   TXIE=0;   //disable tx interrupts
PORTC=0;
TRISC=0x80;
}

void SendData( const char*,int);

void main() // Ana fonksiyon alanı
{
usart_init();
DelayMs(500);
SendData("DENEME\r\n",8);

while(1)
{

if(len>5)
{
SendData(buffer,len);
len=0;
}
}
}
void SendData(const char* buf,int datalen)
{
int i;
for(i=0;i<=datalen;i++)
{
         while(!TXIF);
         TXREG=buf;
}
      
}

static void interrupt
ReadData()
{
GIE=0;
if(RCIF)
{
buffer[len] = RCREG;
len++;
}

RCIF=0;
GIE=1;
}

arslan74

interrupt rutinin aşağıda ki gibi yaz.


static void interrupt
isr(void)				// Here be interrupt function - the name is unimportant.
{
if( RCIE && RCIF )
{
buffer[len] = RCREG;
len++;
}
}

blue_

sorun çözüldü teşekkürler.