Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
887
Tıklama
0
Öne Çıkarma
RS232 Seri iletisimde 1den fazla bit Okuma Yazma
C
15 yıl (155 mesaj)
Teğmen
Konu Sahibi

Merhaba arkadaşlar,

Rs232 ile yani seri iletişim ile iki pic arası yada pic-pc yada rf alıcı vericisi ile daha önce veri göndermiştim. Ancak yeni fark ettim ben hep tek bit üzerinden veri gödermişim. Şuan için elime bir proje geçti ama bu sefer daha fazla bit göderip okumam lazım.
Biraz amelelik yapıt her gelen veriyi diziye atayım dedim, ama araya hep parazitler giriyor.
Yadan gelen veriyi sürekli kaydırmayı düşündüm ama gene başaramadım.

Benim klasik bir bitlik iletşimler
 
#include <16f877A.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000)
#use rs232(baud=9600,parity=N,xmit=pin_C6,rcv=pin_C7,bits=8,stop=1)
char c;

#int_rda
void seri()
{
disable_interrupts(int_rda);
c=getc();
if(c=='1') // TEK BIT VERI OKUMA
{
output_high(pin_d0);
output_low(pin_d1);
}
if(c=='2')
{
output_low(pin_d0);
output_high(pin_d1);
output_low(pin_d2);
}
putc(c); // KONTROL AMACLI TEK BITI GERI GONDERME
}

void main()
{
set_tris_d(0x00);
output_d(0x00);
enable_interrupts(global);

while(true)
{
enable_interrupts(int_rda);
}
}


Ben ise 5 bit veri okuyup göndermeliyim ?
Yardımlarını bekliyorum...

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



C
15 yıl (155 mesaj)
Teğmen
Konu Sahibi

O
15 yıl (767 mesaj)
Yüzbaşı

Şu durumda tek bit okumuyosun zaten..

Char 8 bit değişkene seri pottaki 8 bit veriyi aktarıyor programın..

ayrıca if (c=='1') ifadesi 1 bit değer için uygun değil bitsel kontrol şu şekildedir;

if(c) veya if(c==1) ; if(c!) veya if(c!=1) gibi.

' ' işareti arasındaki simgeyi derleyici char olarak tanır. '1' aslında 1 rakamının in ascii koduna eşittir..





< Bu mesaj bu kişi tarafından değiştirildi OzanGazi -- 28 Aralık 2011; 14:50:40 >
Bu mesaja 1 cevap geldi.
C
15 yıl (155 mesaj)
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: OzanGazi

Şu durumda tek bit okumuyosun zaten..

Char 8 bit değişkene seri pottaki 8 bit veriyi aktarıyor programın..

ayrıca if (c=='1') ifadesi 1 bit değer için uygun değil bitsel kontrol şu şekildedir;

if(c) veya if(c==1) ; if(c!) veya if(c!=1) gibi.

' ' işareti arasındaki simgeyi derleyici char olarak tanır. '1' aslında 1 rakamının in ascii koduna eşittir..

teşeküürler cevabınız için

yani demek istediginiz,
1 in hexadecimal karsiligi 0x31 yani (0011 0001) şeklinde 8 bit(1 byte) veri mi gidiyor ?


Bu mesaja 1 cevap geldi.
O
15 yıl (767 mesaj)
Yüzbaşı

quote:

Orijinalden alıntı: cagrisma

quote:

Orijinalden alıntı: OzanGazi

Şu durumda tek bit okumuyosun zaten..

Char 8 bit değişkene seri pottaki 8 bit veriyi aktarıyor programın..

ayrıca if (c=='1') ifadesi 1 bit değer için uygun değil bitsel kontrol şu şekildedir;

if(c) veya if(c==1) ; if(c!) veya if(c!=1) gibi.

' ' işareti arasındaki simgeyi derleyici char olarak tanır. '1' aslında 1 rakamının in ascii koduna eşittir..

teşeküürler cevabınız için

yani demek istediginiz,
1 in hexadecimal karsiligi 0x31 yani (0011 0001) şeklinde 8 bit(1 byte) veri mi gidiyor ?

aynen öyle..


Bu mesaja 1 cevap geldi.
E
15 yıl (2734 mesaj)
Yüzbaşı

#use rs232(baud=9600,parity=N,xmit=pin_C6,rcv=pin_C7,bits=8,stop=1)

Bu satır herşeyi açıklıyor zaten.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.