speedy1989
Üye
- Katılım
- 29 Eki 2009
- Mesajlar
- 27
- Puanları
- 1
- Yaş
- 35
Kod:
/******************************************************
PIC16F877 ile RS232 Seri İletişim Uygulaması
PIC PROG/DEKA : Port B jumper'ı LCD konumunda olmalı
*******************************************************/
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1) // RS232 protokolünün 9600 bit/sn baud hızında olacağını ve
// TX,RX uçlarının hangi pinler olacağını tanımlıyor
// parity bitinin olmadığını, stop bitinin 1 bit olacağı belirtiliyor
/********* ANA PROGRAM FONKSİYONU********/
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
set_tris_b(0x00);
set_tris_d(0x00);
output_high(pin_a0);
while(1) // Sonsuz döngü
{
char bufb[20];
char bufd[20];
int8 y;
int8 x;
x=input_b();
sprintf(bufb,"a%u",x);
//puts(bufb);
delay_ms(200);
y=input_d();
sprintf(bufd,"b%u",y);
delay_ms(200);
puts(bufb);
delay_ms(200);
puts(bufd);
}
}
Verileri sanal olarak her seri port programı ile çok güzel bir şekilde alıyorum fakat bilgisayara bağladığımda hiçbir gecikme yapmadan 100 tane saçma sapan veriyi gönderiyor ve bağlantıyı kesiyor.Yardımlarınız için şimdiden teşekkürler çok sıkışmış durumdayım.hatta pcbsinide ekliyorum