Port durumunu hafızaya kaydetme

Başlatan ersangundogdu, 15 Şubat 2020, 17:14:36

ersangundogdu

Hepinize selam. Program başlangıcında çıkış olarak ayarladığım bir portu ana döngü içerisinde bazı durumlarda giriş yada tekrar çıkış yapıyorum. Ana döngü içerisindeki port durumunu hafızaya kaydetme işini yapamadım. Diğer ölçüm sonuçlarını hafızaya kaydedebiliyorum ama port durumunu yapamadım. Yardım ederseniz sevinirim.


ersangundogdu

BANTKAPALI:
    LCDOUT $FE,$80,"  BANT KAPALI     "
    LCDOUT $FE,$C0, "                 "
    TRISB=%000001000                  'BURAYI HAFIZAYA ALMAM GEREK
    PAUSE 500
    RETURN
BANTACIK:
    LCDOUT $FE,$80,"  BANT ACIK   "
    LCDOUT $FE,$C0, "                 "
    TRISB=%000000000                  'BURAYI HAFIZAYA ALMAM GEREK
    RETURN

dnaci

#3
İki satırda 9 bit tanımlamışsınız, 8 bit olmalı:

TRISB=%000001000                  'BURAYI HAFIZAYA ALMAM GEREK
TRISB=%000000000                  'BURAYI HAFIZAYA ALMAM GEREK

Aşağıdaki şekilde portb'yi yaz değişkenine tanımlar ve eproma yazıp okutabilirsiniz.

TRISB=%00000000 'GİRİŞ YAPTIĞINIZ BİTİ BELİRTİN.

YAZ VAR PORTB
OKU VAR BYTE

WRITE 1,YAZ:PAUSE 10
READ 1, OKU


ersangundogdu

#4
Teşekkür ederim deneyeceğim.

Üstad maalesef olmadı.

MB_77

#5
bu mesaj tarafımdan silinmiştir.

ersangundogdu

#6
TRISB kaydedilecek. B portunun 3. bitindeki değişikliği kaydetmek istiyorum.

ete

#7
Tris B yi neden kayıt edeksin bir türlü anlayamadım. Zaten sen ayarlıyorsun ne olacağını kayda ne gerek var. Ama tahmin edebiliyorum. TRIS ile bunu yaptığın için girişmi yatım çıkışmı yaptım şaşırıyorsundur belki ama o işler şöyle yapılıyor.
Pogramın başında TRISB=xxxxxx vererek port pinlerinin giriş mi yoksa çıkışmı çalışacağını ayarladıktan sonra program içinde giriş çıkış değişiklikleri artık pin bazında yapılır. Onuda yapan OUTPUT yada INPUT komutlarıdır.
Bir pini giriş yapmak için , INPUT PORTB.3 şeklinde komut kullanırsın. AYnı pini çıkış yapmaki içinde OUTPUT PORTB.3 dersin. Bu durumda ilgili pin çıkışmı yoksa girişmi diye düşünmeye gerek yoktur. Çünki port giriş olarak lazım olduğu anda INPUT Pin dersin. Çıkış olarak lazım olduğu anda OUTPUT Pin dersin olur biter. Kayda alma sana ne gibi avantaj sağlayacak açıklarsan belkide yanlışını sana açıklarım.

İllaki işi TRIS registerlerinden yapmak istersen trıs tanımlamaları için bir değişken tanımla.
Örneğin ARA isimli Byte değişkenin olsun.
ARA=%00001000 şeklinde değer ver ve TRISB=ARA dediğin zaman zaten kayda aldığın bir değeri TRIS registerine vermiş olursun. ARA değişkeni ile oynamaz isen her zaman TRISB değerin ARA değişkeninde kayıt altında tutulmuş olacaktır.

Ete

ersangundogdu

Hocam şöyle anlatayım; portb3 e bağlı buzzer var. Aşağı tuşuna bastığımda ses kapat, yukarı tuşuna bastığımda ses ac alt programına gosub ile gidip return ile geri dönüyorum. Ses kapatılmış ise portb.3 giriş olsun ki buzzer ötmesin mantığını kurdum. İsiste de öyle oldu. Ancak enerji kesilip tekrar verildiğinde kaldığı şekilde açılsın istedim.

ersangundogdu

''Kayda alma sana ne gibi avantaj sağlayacak açıklarsan belkide yanlışını sana açıklarım''

ETE hocam bu konuda biraz bilgi verebilir misiniz?

ete

Kayda alma derken TRIS bilgisini kayda almayı belirtmiştim. Tris bilgisi kullanıcı tercihidir ve bunu kayda almanın hiç bir gereği yoktur.
Bu şuna benzer, Otobüs ile bir yere gideceksin , gittiğin yeri biliyorsun senin tercihin çünki ama bunu kayıt edeyim nereye gittiğimi unutursam bakayım demek gibi bir şey. Yani kısaca kendi tercihini ki bu devreye göre yapılan bir tercihtir kayıt etmenin bir anlamı yok. Binlerce program yazdım hiç Tris bilgisini kayda almadım.
Seninde belirttiğin gibi Tris bitleri içinden bir veya ikisinin bazen input bazen output olması durumunda illaki bir şeyi kayıt etmen gerekiyor ise ona sözüm yok ama o durumda bile kayıt bence çok gerekli değil diye düşünüyorum. Bu belki program detaylarını bilmediğimden kaynaklanıyordur.

Ete

ersangundogdu

Hocam email adresinizi özelden yazabilirseniz tüm dosyaları göndereyim size.

Powered by EzPortal