Teknoloji Ekibi

Elektronik Dünyası => Mikrodenetleyici ve Mikroişlemciler => PIC => Konuyu başlatan: UNIQUE - TA5DF - 18 Haziran 2008, 21:20:17

Başlık: pic basic te bunu nasıl yaparız.
Gönderen: UNIQUE - TA5DF - 18 Haziran 2008, 21:20:17
şimdi arkadaşlar pic kullanan bazı devreler yaptım. birde pic kullanarak tasarladığım bir pi dedektör projem var. ama halledemediğim bir yazılım sorunum var. şimdi örnek olarak .:: arkadaşlar pic aldığı sinyali digtal olarak çevirip bazı matematiksel işlemlerden sonra 1 ile 12 arasında bir sayı elde etmiş olsun.
eğer değer 1 ise ekrana > yaz. 2 ise >> yaz. 10 ise ekrana >>>>>>>>>> yaz dediğimizde hem daha çok komutyazmak gerekiyor.hemde zamanlama uzuyor
ben ise değer  ne ise o kadar > işareti yaz gibi kısa bir yol var mı diye merak ediyorum.
örneğin elde edilen değer kaç ise o kadar > yaz . şeklinde bir komut örneği verebilirmisiniz.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: Uykusuz - 18 Haziran 2008, 21:49:08
Böyle bir komut yok bu bir tür algoritmadır. Ben akış diyagramını vereyim:

1) ADC oku ve A değişkenine kaydet.
2) ADC 0' mı? Hayır; 3'den devam et. Evet; Geri dön
3) Ekrana > yaz ve A değişkeninden 1 çıkar. 2'ye geri dön.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: UNIQUE - TA5DF - 18 Haziran 2008, 22:16:13
evet uykusuz ustam haklısınız. komut ifadesi yanlış olmuş. benim istediğimde algoritmaydı zaten. verdiğiniz algoritmayı (3. aşama ) tam anlayamadım. eğer mümkünse üstad 3. aşamayı pic basic kodlarıyla örneklemen mümkünmü.
ben şöyle bir örnekleme yapayım:(hataları düzeltelim)
picimizde adc işlemi yapılıp bir değer eldeedilmiş olsun bu değer A değişkeninde kayıtllı olsun

2-  if A=0 then goto başadön
     if A>0 then lcd   "A sıfırdan büyükse lcd etiketine yani 3. adıma geçiyoruz
3-  lcd out, ">"
     A=A-1
     goto 2 "2 ye geri döndük

burada şöyle bir durum ortaya çıkıyor sanki. ekranda sürekli > görürüz gibi geliyor. ekranda her seferinde sanki bir satır kaydırma yapmamız gerekiyor gibi geldi bana.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: Uykusuz - 18 Haziran 2008, 22:22:30
LCD lerde imlec normalde her karakter yazımıdan sonra bir sonraki hücreye geçer.

Ben basic kullanmadığım için size kod yazamam malesef. Oldu da basicin yapısından kaynaklanan bir durumdan dolayı imlec ilerlemezse de bunun da kolayı var. İkinci bir değişken dahatanımlarsınız ve her > yazışınızda bunun içindeki sayıyı bir arttırırsınız ve yazmadan önce bu değişkeni hücre adresi olarak LCD modülünüze gönderirsiniz. Böylece imlecin ilerlemesini sğlamış olursunuz fakat büyük ihtimalle buna ihtiyacınız olmayacak. Saygılar.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: UNIQUE - TA5DF - 19 Haziran 2008, 18:52:38
uykusuz üstadım çok teşekkürler asm de imleç kaydığına göre bu rutini asm de yazarsam sorun halloldu demektir. pic basicte asm kullanılabiliyor zaten. yardımların için sonsuz teşekkürler. biraz asm örnek incelersem her halde çözerim . elimde bolca var zaten.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: Uykusuz - 19 Haziran 2008, 23:59:10
Rica ederim önemli değil. Asm konusunda yardımcı olabilirim. Size örnek bir program mantığını anlamanız için, Örneğin ADC den 5 okudum.

movf ADC,w
movwf sayac ; adc den okunan değeri sayaca yükle (5)
don ; etiket
decfsz sayac,f ;sayacdan bir cıkar sonuc 0 mı?
goto yaz ; hayır. o halde lcd ye karakteri yaz.
goto anaprogram;

yaz
movlw '>'
call lcdyegonder
goto don

burada ekrana arka arkaya sıralanmış > karakteri görmelisiniz. Fakat ekranda 6 dan fazla > işareti yeriniz olabilir. Bu durumda program içinde adc eğer 6 dan fazla ise iş yazdırdığınız > işaretlerini de saymalısınız ki lcd ekranınızda kaymalar oluşmasın. Ayrıca diyelim ilk başta 5 okudunuz. ekrana 5 tane > yazdınız. sonra da adc den 3 geldi. bu kez 3 tane > yazdınız. fakat öndecen yazmış olduğunuz ikitane > ekranda kaldı. Bu da eğer ekranınızda en fazla 6 ">" yeriniz varsa ekrana adc değeri kadar >, 6-ADC kadar da boş karakter göndermeniz gerektiği anlamına geliyor. Saygılar.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: UNIQUE - TA5DF - 20 Haziran 2008, 09:31:58
sonsuz teşekkürler ustam. iyiki varsınız.
Başlık: Ynt: pic basic te bunu nasıl yaparız.
Gönderen: baron66 - 26 Ağustos 2008, 18:10:27
feridun sana kısaca şunu söyleyim;
anolog değeri (1-12 arasındaki sayıları) sayı değişkenine koyduğunu düşünelim.birde sayac değişkenin olsun
for sayac= 0 to sayı
lcdout $fe,1+sayac,">"
next
..........
böyle yazarsan sayı değişkeninin içindeki değer kadar ekrana > yazarsın. ama ekran yenileme hızı yavaş olursa ekan gidip gidip geliyomuş gibi olur.
başarılar.