Şimdi Ara

RS232 Seri iletisimde 1den fazla bit Okuma Yazma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
729
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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...







  • up
  • Ş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 >
  • 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 ?
  • 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..
  • #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.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.