Usart'ta RCREG sorunu!!!

Başlatan MICROCEBEL, 13 Mayıs 2006, 01:10:06

MICROCEBEL

Selamün aleyküm arkadaşlar;

İçinden bir türlü çıkamadığım bir sorunum var.Sorun ise RCreg içeriğini bir türlü silemiyorum.Bir devre yaptım pnömatik pistonu bilgisayardan ve kart üzerindeki butonlardan ileri geri hareket ettirmek için.Fakat hem sürekli butonların durumunu kontrol edip hemde bilgisayardan gelecek olan veriyi sürekli kontrol etmek oldukça zorladı beni.Bilgisayardan gelecek veri için kesme kullanmadım çünkü bilgisayardan veri gelmediği zaman bu sefer butonların durumunu tarayamıyorum.Belli bir gecıkmeden sonra rec reg içerisindeki sayıyı direk olarak kontrol edip pistonu harekete geçirebiliyorum.Ama örneğin bilgisayardan ileri dediğim zaman piston ileriye çıkıyor ve kart üzerindeki butondan geri ye bastığımzaman piston geriye gittiği gibi hemen ileriye çıkıyor.Bunun nedenide RCREG içerisindeki bilgisayardan gönderilen ileri kodu sürekli kalıyor taaaki geri kodunu gönderene kadar.Aynı şey geri içinde geçerli kartan ileri dediğimde piston biran ileri çıkıp hemen geri dönüyor.CLRF     RCREG komutunu uyguluyorum fakat bir türlü içerisini silemiyorum bu seferde problem çıkıyor.ISIS te çok sağlıklı bi şekilde çalışıyo içeriğinide siliyorum ama gerçek te böyle bişey olmuyor.Acaba bunun nedeni nedir arkadaşlar nasıl RCREG içeriğini silerim yada başka bir yol izleyebilirmiyim.Çalışmalarınızda başarılar....

mhk

Öncelikle bilgisayar programın veriyi sürekli gönderiyor olmasın ? Bunu kontorl et. Sonra PIR registeri yardımıyla RCREG doluysa kontrol edebilirsin. Pic basic ile yazdığım bir kod
   If PIR1.5 = 1 Then                      ' If receive flag then...
       verial = RCREG                    ' ...get received character to verial
    EndIf


bu verial değişkenini sıfırlayabilirsin. Zaten RCREG registerini bir değişkene aktarman gerek. Bunu yaptığın taktirde PIR1.1=0 olacaktır. Eğer RCREG doluysa PIR1.1=1 olacaktır.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

stlg

Sevgili MICROCEBEL
Kardeş bencede bu registerin icerigini kendi tanımladıgın başka bir registere al program icerisinde ne zaman istersen bunu kullanabilir istedigin zamanlardada silebilirsin kolay gelsin
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

CaFFeiNe

@MICROCEBEL

16F877 nin datasheetinde (diğerleride aynıdır büyük ihtimal) RCREG için "double buffered register" gibi bir ifade var bu sebepten silinmiyor olabilir bilemiyorum (belkide iki kere silmek gerekiyordur :))

üstte arkadaşların yazdıklarını uygularsan problemin çözülür bencede

MICROCEBEL

Olayı çözdüm arkadaşlar sağolasınız ilginiz için teşekkür ederim....