16F877 nin D portunu neden kullanamıyorum?

Başlatan Franisto, 27 Haziran 2010, 21:24:34

Franisto

Merhaba arkadaşlar. 877 de portD nin pinlerine buton bağlayarak giriş olarak kullanmak istiyorum. fakat kullanamıyorum. Portc yi denediğimde herhangi bir sorun yok.

şöyle basit bir program ile denem yapıyorum

TRISA=%00000000    'A PORTU ÇIKIŞ
TRISB=%11111111     'B PORTU GİRİŞ
TRISC=%11111111     'C PORTU GİRİŞ
TRISD=%11111111     'D PORTU GİRİŞ
TRISE=%11111111     'E PORTU GİRİŞ
PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0

ADCON1 = 7

TEKRAR:
if PORTD.1 = 1 then         'portD nin 1. pini 1 ise
PORTA.0=1                       ' porta.0 a bağlı olan ledi yak
ELSE
PORTA.0=0
ENDIF
GOTO TEKRAR


yukarıdaki basit kodlarda PORTD.1 = 1 olmadığı halde sürekli PORTD.1 = 1 olarak program işliyor. 877 de Dportu  için özel bir tanımlamamı yapılmalı?

OG

TRISE=%11111111     'E PORTU GİRİŞ  yi silip

şu şekilde denermisin.
TRISE.0=1
TRISE.1=1
TRISE.2=1

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

fatihinanc

TRISE yazmacının 4.biti PSPMODE u açıp kapatır. Siz TRISE.4 ü 1 yaparsanız PORTD  yi I/O olarak kullanamazsınız.


bit 4 PSPMODE: Parallel Slave Port Mode Select bit
1 = PORTD functions in Parallel Slave Port mode
0 = PORTD functions in general purpose I/O mode


iyi çalışmalar...
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

eLectronbLue

#3
Alıntı yapılan: OG - 27 Haziran 2010, 21:34:08
TRISE=%11111111     'E PORTU GİRİŞ  yi silip

şu şekilde denermisin.
TRISE.0=1
TRISE.1=1
TRISE.2=1

Aynı noktaya değineyim ben de. TRISE nin tamamı port yazmacı değildir. Sadece ilk 3 biti port giriş çıkışı için kullanılır. Son 5 biti farklı amaçlara hizmet eder . TRISE.4 = 1 olursa PortD'yi PSP moduna alırsın ve dijital giriş çıkış işlemlerini yapamazsın. Bu yüzden programın yanlış çalışıyor. Sonuç olarak TRISE'nin sadece ilk 3 bitini kullan. Geri kalanlara dokunma.

Edit: Son iletiyi yeni farkettim  :)

Franisto

Cevaplar için teşekkür ederim. 4 Yıl aradan sonra tekrar kod yazıyorum bir çok şeyi unutmuşum. Alta Trise.4=0 yazarak sorunuz çözdüm.

TRISA=%00000000    'A PORTU ÇIKIŞ
TRISB=%11111111     'B PORTU GİRİŞ
TRISC=%11111111     'C PORTU GİRİŞ
TRISD=%11111111     'D PORTU GİRİŞ
TRISE=%11111111
TRISE.4=0

Franisto

Alıntı YapTRISE nin tamamı port yazmacı değildir. Sadece ilk 3 biti port giriş çıkışı için kullanılır. Son 5 biti farklı amaçlara hizmet eder .

TRIS komutuna takıldım şimdi iyice bu komutun nasıl tam doğru kullanılacağını anlatan bir kaynak varmı?

fatihinanc

Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Franisto

"Tris yazmaçları aslında Pic'in hafızasında 8 bitlik birer hafızadırlar. Buraya yerleştirilen sayının Binary formatındaki şekline bağlı olarak Pic bacaklarını giriş veya çıkış olarak ayarlar.8 bitlik değer sırası ile port'a ait pinleri temsil etmektedir.

Şöyle ki;

A) %00000000, ifadesi 8 bitlik Binary bir sayıdır. Desimal karşılığı 0 (sıfır) dır. Bu değeri herhangi bir TRIS registerine verir isek tüm pinlerin OUTPUT yani çıkış olarak ayarlanacağını ifade eder.

B) Şayet değer %11111111 olur ise tüm bacakların INPUT yani giriş olarak ayarlanacağını ifade eder. Binary değerin bazılarının sıfır (0) bazılarının bir(1) olması ise bazı pinlerin çıkış bazılarının ise giriş olarak ayarlandığını gösterir
"

bu bilgi sanıyyorum ete hocanın derslerinden. eski bir tarihte arşive almışım kaynağını hatırlamıyorum. O zaman bu bilgi yanlış...

fatihinanc

Yok bilgi doğru fakat TRISE yazmaçlarının her biti bu işlemi yapmıyor.
bu i/o işlemini yapan bitler yukarıdaki mesajlarda da belirtildiği üzere
sadece 0,1 ve 2. bitler.
4.bit ise PSP modu açıp kapatıyıor.

az önce verdiğim linkteki dökümanın 37.sayfasında TRISE yazmacının tablosu var
detay için oraya bakabilirsiniz
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

fatihinanc

Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Franisto

İlginiz için çok teşekkür ederim. Datasheetin iyice inceledim. Siz Tamamen haklısınız. En son eklediğiniz bilgi ile Tris konusunu net bir şekilde anladım. Çok teşekkürler.


fatihinanc

Rica ederim.Faydalı olduysa sorun yok.
iyi çalışmalar.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)