avatar_ete

PIC Basic Ders-08 (Tuş Takımı, Led Display, Port Çoğullama)

Başlatan ete, 28 Ağustos 2011, 16:15:20

blacklabel35


ete

Değişkenleri yanlış tanımlamışsın,
TUS VAR WORD
SAYI var BYTE
şeklinde olan tanımlaman,
TUS VAR Byte
SAYI var word
şeklinde olmalı.
Düzelt ve yeniden dene

Ete

blacklabel35


yusuf.ozyer

hocam ben proje ödevi aldım gene sayıcı var 0-99 sayacak 56 da buzzer ses verecek
senin yazdığın kodlarda eklemeler yaptım
@ DEVICE pic16F84A 'işlemci 16F628
@ DEVICE pic16F84A, WDT_on 'Watch Dog timer kapalı
@ DEVICE pic16F84A, PWRT_ON 'Power on timer açık
@ DEVICE pic16F84A, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F84A, XT_OSC
PortA=0
TrisA=%00000011
PortB=0
TrisB=%00000000

Symbol TUSA=PORTA.0
SYMBOL TUSB=PORTA.1
SYMBOL BUZZER=PORTA.3
SAYI     var byte
BIRLER   VAR BYTE
ONLAR    VAR BYTE

PORTB=0
SAYI=0
'--------------------------------------------------

PAUSE 200


BASLA:
      IF TUSA=0 THEN
        SAYI=SAYI+1 :PAUSE 1000
        IF SAYI=100 THEN SAYI=0
      ENDIF
     
      IF TUSB=0 THEN
        SAYI=SAYI-1:PAUSE 1000
        IF SAYI=255 THEN SAYI=0
      ENDIF
      IF SAYI=56  THEN
      GOTO LEDYAK
      ENDIF
     
      BIRLER=SAYI DIG 0
      ONLAR= SAYI DIG 1
     
      PORTB=240 | BIRLER
      LOW PORTB.5
      PAUSE 1
      HIGH PORTB.5
      PAUSE 1
   
      PORTB=240 | ONLAR
      LOW PORTB.4
      PAUSE 1
      HIGH PORTB.4
      PAUSE 2
     
LEDYAK:
      HIGH BUZZER
      PAUSE 1000
      LOW BUZZER
      GOTO BASLA
      END
ama olmadı hocam yardımcı olurmusun

ete

Ledyak etiketi ile altındakiler yalnızca sayı=56 olduğu zaman çalışacak bir alt program , ama senin kodlarda dikkat edersen her program döngüsünde çalışır şekilde ayarlanmış gözüküyor.
Ledyak etiketinden önce pause 2 şeklinde bir komut var onun altına,
Goto Basla
Şeklinde bir komut satırı eklersen olur sanırım.
Pek çok pause kullanmışsın özellikle her tuş basılışında pause 1000 çalışıyorki bu 1 sn lik gecikme yaratır ve programın hızlı çalışmasını engeller. Pause 1000 leri kaldırıp endif satırından evvel,
While tusA=0:wend
Komut satırını ekler ve altına pause 50 dersen program hızlanır tuş tepkisi hızlanır en azından.
Ete

yusuf.ozyer

hocam hallettim yalnız ben tuş kullanmadım yukarı tuşunu pull up yapıp direk şaseye verdim yani devre sürekli yukarı sayıyor ve gerçek zamanda olması açısından pause 1000 kullandım saniyede 1 atması için  orada şöyle bir komut kullandım
SYMBOL BUZZER=PORTA.3
.....
.....

IF SAYI=56 THEN
       HIGH BUZZER
       PAUSE 1000
       LOW BUZZER
ENDIF
bunu denedim yani hiç goto kullanmadım ve devre her 56ya gelince led yandı

Hattuşa

slm arkadaşlar port çoğullama ile ilgili basit bir çalışmamı sizlerle paylaşmak istedim umarım lazım olanın işine yarar,
yapmak istediğim aslında LM317 yi 0v-10v arasında işlemci ile kontrol etmekti, pek işimi görmedi zira 3,5v altına inemedim. zira mono beslemeli bir devre olduğu için ama farklı tasarımlar için veya DAC ile ayarlı voltaj lazım olduğunda belki birilerinin işine yarayacağını düşündüğümden paylaşıyorum.
isisde DAC0808 i 2 farklı şekilde (çoklu DAC kullanmak adına) sürdüm...

onurinci

kendi içindeki referans voltajı nedeni ile LM317 3Voltun altına inemez,fakat Adjust'tan Gnd'ye inen hatta seri olarak 3volt negatif voltaj tatbik edebilirseniz 0'ra kadar iner.

Bahri Bilir

Hocam birde geçende giriş çoklamak için dersinizi tekrarlarken dersin sonunda bahsettiğiniz giriş çoklama konusunda kullanılan kodlar çıkış çoklama ile aynı.Yani giriş çoklama kodlarını vermemişsiniz.
Bu kodlara araştırarak ulaşabilirdim ama hem eğitiminizde ki gözden kaçan kısmı size fark ettirmek için hemde sizin işin mantığını açıklayarak anlatımınızı çok daha verimli bulduğum için sizden bunu rica ediyorum.
"Hedeflerin bittiği tek yer, YENİ hedeflerin başlangıcıdır"

ete

Bu siteden yükledin ise Ders-8 de belirtilen Giriş çoklama kodları doğru. Programı çalıştırırsan zaten görmen gerekirdi.
Yanlışlık göremedim ben.

Ete

Bahri Bilir

http://320volt.com/picbasic-dersleri-pic-basic-pro-ile-pic-programlama-8
Hocam ben buradakilerle aynı olacağını düşündüğüm için link vermedim.Ben buradan ulaşmıştım anlatımınıza.
"Hedeflerin bittiği tek yer, YENİ hedeflerin başlangıcıdır"

Tahir

Erdal Hocam

Ders 8 deki led display sayıcı programınızda biraz değişiklik yaparak bir devre düşünüyorum.
Devreyi alarm gibi kullanmak istiyorum. Örnek olarak ekrana 80 birim girince ilave ettiğim 3. bir tuşa basınca
geri saymaya başlayacak ve sıfıra ulaşınca led yanacak. Değişik varyasyonlar denememe rağmen geri saydırmayı led displaye yansıtamadım.Aslında geri sayım oluyor ve led sonda yanıyor.  İsis devresi ve düşündüğüm program ilavesini  ; ile pasifleştirerek gönderiyorum.Bir bakabilir misiniz?.

ete

Ben hiç bakmayayım o programa. Akıl vereyim sen yapmaya çalış. Aradığın her şey o programda var aslında sadece ihtiyacın olan biraz akıl diye düşünüyorum.

Programın değişken tanımlama kısmına  YON VAR BIT  şeklinde bir yön değişkeni tanımla.
YON=0 ile başlayacak program bunun anlamı YON=0 iken program yukarı sayacak.
Saymayı sürdürecek ve diyelimki YON değiştirme noktası 100 ,

Saydırma kısmınıa;

IF YON=0 then
  sayac=sayac+1
  IF SAYAC=100 THEN
    YON=1:goto basla
  endif
else
  sayac=sayac-1
  ıf sayac=0 then
     led=1
     yon=0
     varsa başka işleri buraya
   endif
endif

ekrana verme işi aynen kalsın ekran sayı azalıyormu artıyormu bakmaz ne geliyor sa yazar.
Ete

 

Tahir

Hocam teşekkür ederim.
Dediğiniz gibi biraz kafayı çalıştırınca oluyormuş. Program istediğim gibi çalışıyor şimdi.
Hobi amaçlı sonradan elektronikçiliğe ve programcılığa soyununca bu kadar oluyor.
Ama azimle daha önce yardımızla dht 11 li devreyi yapıp çalıştırmıştım hatırlarsanız.
(Biraz ara verince eski üyeliğim iptal olmuş)

ete

Kendin başardığına sevindim. Evet biraz kafayı çalıştırınca oluyor.
Uzun süre giriş yapmamış üyeleri sildiğimi zaten en başta belirtmiştim.
Boşuna kalabalık etmesinler istiyorum.

Ete

Powered by EzPortal