Pic16F877 nin B.8 portu hakkında

pilot007_

Üye
Katılım
3 Eyl 2008
Mesajlar
10
Puanları
1
Yaş
39
Merhaba Arkadaşlar

Ben amatör biri olarak PIC lerle uğraşmaktayım ve ilk proje olarakta kayan yazı yaptım.
Herşey çok güzel ama bir tek 16F877 nin B.8 portunda düzgün sinyal alamamam haricinde. Bütün portlar 5 volta yakın bir çıkış verirken bu 2,5 volt veriyor ve ledleri yakamıyor.
B portu normalde analog giriş için sanırım ama bunun bir çözümü var mıdır ? Bütün B portları normal bir tek B.8 de sorun var.

kısaca ben devremide açıklayayım. 16F877 ye 2 tane 74164 bğalayarak matrix displaylerimi sürüyorum. bu 74164 leri B portuna bağladım, herşey düzgün ama bir tek B.8 protundan gelen sinyal bozuk.

yardımcı olabilecek arkadaşlara şimdiden teşekkürler.

Selim
Bilgisayar Programcısı
 
B.8 pini değilde B.7 pini galiba,
bu port analog portu değil B7 programlama pini bir problem olacağını sanmıyorum trisleri ayarlarken dikkat edin
birde displaylerin ortak kısımlarını direkt işlemciye bağlamasan iyi olur araya bir tampon koysan daha tatlı olur
 
evet arada direnç var. hatta birde transistör koyacam.
Ama bütün portlar çalışıpta B.7 protu çalışmaması bana bu B.7 nin özel bir işlevi mi var diye sor getiriyor aklıma.

ben dil olarak pic basic kullanıyorum ve Bütün portları output olarak tanımladım. bunun dışında başka bir ayar var mı ?

Selim
 
bir transistör koysan daha iyi olur bir boşta denemeye çalış pini bakalım o zaman ne yapacak

port tanımlama bölümündeki codu gönder bakalım bir sorun varmı
 
Burda mevcut sorun sanki B.7 pinine çıkış verilememesi gibi. Çıkış sinyali ile ilgili program komutu incelenmeli, çünkü 2,5V gibi bir voltaj lojik "0" ifade ediyor. Yani zaten lojik "1" bu pine hiç gönderilemiyor.
 
Benim kodum aşağıdaki gibi. Harflerden sadece A yı nasıl yaptığımı gönderdim
digerleride aynı mantıkla.


device 16f877a

all_digital = 1
output portB
output portC
output portD

dim i as word
i=0
basla:
i=i+1

if i >0 and i <=200 then

gosub S6

elseif i >200 and i <=400 then

gosub E5
gosub S6

elseif i >400 and i <=600 then

gosub L4
gosub E5
gosub S6

elseif i >600 and i <=800 then

gosub II3
gosub L4
gosub E5
gosub S6

elseif i >800 and i <=1000 then

gosub M2
gosub II3
gosub L4
gosub E5
gosub S6
end if
goto basla


A1:
portd =%00000000
portB =%00000000
delayms 1
portd =%00010000
portB =%00000100
delayms 1
portd =%00100000
portB =%00001010
delayms 1
portd =%00110000
portB =%00010001
delayms 1
portd =%01000000
portB =%00011111
delayms 1
portd =%01010000
portB =%00010001
delayms 1
portd =%01100000
portB =%00010001
delayms 1
portd =%01110000
portB =%00000000
delayms 1
return
 

Forum istatistikleri

Konular
128,148
Mesajlar
915,463
Kullanıcılar
449,888
Son üye
kalemx

Yeni konular

Geri
Üst