Picproje Elektronik Sitesi

DERLEYİCİLER => PICBasic => Konuyu başlatan: aster - 19 Mayıs 2005, 17:33:33

Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: aster - 19 Mayıs 2005, 17:33:33
Bu başlıkta PBP ile ilgili öğrenmek istediklerimizi yazalım lütfen
sorularımızın ve izahlarımızın anlaşılır olmasına dikkat edelim
Buyurun  ;)

Not: makale kısmında sevgili ETE arkadaşımız bu konuyu gayet güzel bir şekilde işliyor,
bu dersleri yapıpta PBP öğrenmeyen kalmasın

http://rapidshare.com/files/180994746/PBP.zip

http://rapidshare.com/files/112880468/BASIC-DERS.rar
Başlık: Ders anlatımı Örnek Proğram
Gönderen: DT832 - 20 Mayıs 2005, 10:17:18
Ete Hocam her şey çok güzel ancak benim şöyle bir önerim olacak bu dersleri bizlere çok güzel ve sade bir şekilde anlatıyorsunuz yalnız birinci dersten itibaren tüm dersleri ve pic proğramlama ile ilgili herşeyi kapsayacak gelişmiş bir örnek proğram verseniz bu örnek proğramı derslerle birlikte yani birinci ders sonunda örnek proğramı birinci derste öğrendiğimiz yere kadar getirseniz ikinci derste bu örnek proğramı devam ettirsek üçüncü derste yine aynı ve derslerin sonuna kadar bu konuyu bu şekilde öğrensek hem daha iyi anlarız hemde proğram akışını daha iyi tespit etmiş olmazmıyız. Değerlendirme sizindir hocam saygılarımla DT832
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: temha - 26 Mayıs 2005, 16:40:49
ete kardeş öncelikle verdiğin bigilere herkes adına teşekkür ederim
bende bugün karşılaştığım sorunu yazayım
pic12c509 da girişlerini şöyle yaptım

sens1 var gp.0
led      var gp.1

ama hata verdigpden sonra nokta koymamayıda denedim.
Başlık: Re: Ders anlatımı Örnek Proğram
Gönderen: OG - 27 Mayıs 2005, 00:53:07
Alıntı yapılan: "DT832"Ete Hocam her şey çok güzel ancak benim şöyle bir önerim olacak bu dersleri bizlere çok güzel ve sade bir şekilde anlatıyorsunuz yalnız birinci dersten itibaren tüm dersleri ve pic proğramlama ile ilgili herşeyi kapsayacak gelişmiş bir örnek proğram verseniz bu örnek proğramı derslerle birlikte yani birinci ders sonunda örnek proğramı birinci derste öğrendiğimiz yere kadar getirseniz ikinci derste bu örnek proğramı devam ettirsek üçüncü derste yine aynı ve derslerin sonuna kadar bu konuyu bu şekilde öğrensek hem daha iyi anlarız hemde proğram akışını daha iyi tespit etmiş olmazmıyız. Değerlendirme sizindir hocam saygılarımla DT832
ETE'nin seçtiği yöntem daha anlaşılır yöntemdir düşüncesindeyim.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: atilla1970 - 13 Haziran 2005, 22:15:39
Hocam ben bu siteye yeni kayıt oldum ve pic  ile yeni tanıştım daha önce işlediğiniz konuları yollarsanız çok memnun olurum.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 13 Haziran 2005, 22:21:22
Anasayfamızda ETE Üstadın notlarının tamamı var.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: psiko - 16 Haziran 2005, 19:34:09
Pic Basic Pro Öğreniyoruz 3 ve 4'te LCD bağlatılarının çoğunda hatalar var. VEE bacağı POT çıkışına VDD ise besleme gerilimine bağlanmalı. çoğu şemada bu konuda hata var.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 19 Haziran 2005, 17:09:54
@Pisiko,

Tebrik ediyorum. Baktım gerçekten bağlantı hataları var.
Bir pot'un bacaklarını 1-2-3 şeklinde sıra ile numaralar isek;

1 nolu uç VSS ye
2. Nolu uç VEE ye
3 Nolu uç ise VDD ye bağlanmalıdır.

Bağlantı yanlışlığı için kusura bakmayın. Nasıl oldu bilmiyorum ama yapmışım.

ETE
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: HEXF2 - 29 Haziran 2005, 09:11:21
@ete LCD de RS pini "reset" değil "REGISTER SELECT" pinidir komut yada veri yazmaçlarını seçer onuda düzelt istersen
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 29 Haziran 2005, 09:14:25
@HexF2,

Bilgi için teşekkürler. Ufak detay gözden kaçıyor bazen bazende uydurup yakıştırma yapıyoruz demekki.
Artık yayınlananlarda bir şey yapamayızda sonunda bir düzeltme yayınlarız herhalde.

ETE
Başlık: slm
Gönderen: HEXF2 - 29 Haziran 2005, 09:22:06
Estafurullah hoca hepimiz yaparız böyle şeyler
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: SpeedyX - 29 Haziran 2005, 18:00:16
Teşekkürler.
Makalelerde kodların olduğu kısımların fontunu Courier New yaparsanız iç içe boşluklar hizalı olur.

Ayrıca görünümün ve dizginin daha iyi olabileceğini düşünüyorum, 18 temmuzda düzenlemek için gönüllüyüm.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 29 Haziran 2005, 18:10:04
Sağol Speedx, deneyeceğim.

ETE
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: aster - 29 Haziran 2005, 20:54:52
Arkadaşlar, bir sorundan dolayı şu anda böyle
bu durum gecici, gidermeye çalışıyoruz
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: agocer - 30 Haziran 2005, 17:21:35
cok teşekkürler gayet guzel yardimci oluyorsunuz
sorum su ;
*.bas uzantili olarak yazdim bu dosyayi asm ye nasil cevirecegim
adam akilli bir pic basic derleyici bulamadim ya demo oluyor yada calismiyor ne onerirsiniz
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 30 Haziran 2005, 17:36:03
Her şeyden önce sana HEX uzantılı dosya lazım ASM değil. Her nekadar derleyiciler bir ASM dosyasıda üretselerde bu yardımcı bir dosyadır. DOlaysıyla Pic'e yükleyeceğin dosya HEX olacaktır.

Forumda arattırırsan bulabilirsin. PBP246 kulanacaksın. Editör olarak ayrıca Microcodestudio kullan. Yapacağın iş şöyle;
- Önce PB246 yı yükle ve C klasörüne bir yere install et.
- Daha sonra Microcode Studio yu yükle (bunuda forumda arttır bulursun)
- Microcode Studio yu ilk defa çalıştırdığın zaman program PBP246 yı kendisi arayıp bulacaktır. Gerisi program yazım derlemeye kalıyor.

Basic bulabileceğin adresi aşağıda veriyorum.

ETE

https://www.picproje.org/index.php/topic,5344&highlight=pbp246
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: bigbey - 02 Eylül 2005, 18:29:02
Sayın ETE,
Benim derdime varmı bi çare Ondalık sayı işlemi konu başlığında.
Saygılar,
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: aster - 03 Eylül 2005, 16:22:53
Arkadaşlar, sevgili ETE nin PBP derslerini ana sayfada makale bölümünde yayınlıyorduk. Son veri tabanı yüklemesinde bazı sorunlardan dolayı makale bölümü devre dışı kalmıştır bu yüzden kalan dersleri sizlere direk veriyoruz, gene sorularınıza buradan devam edebilirsiniz

http://groups.yahoo.com/group/PicProjeUP6/files/ içinde

pbpdersleri1.rar ders 1-2-3-4-5
pbpdersleri2.rar ders 6-7-8
pbpdersleri3.rar ders 9-10
Başlık: bir sorum olacak.cevaplarsanız çok sevinirim.
Gönderen: tmr01 - 15 Eylül 2005, 21:08:26
merhaba.

Mesleğim muhsabe ama elektroniğe ve teknolojiye merakımdan dolayı pic programlayıcısı ve hoby devresi aldım. buradaki bütün dersleri iyice okudum. denemeler yaptım. fakat bi yerde tıkandım.

Soru şu:
Şimdi 16f84 de herhangi bi çıkış kapısından (portb.1) high gönderip ledi yaktık. low gönderip söndürdük.
peki ledi yavaştan parlağa doğru kademeli olarak nasıl yakabiliriz. yada patalayan sonra yavaş yavaş sönen bi yıldız gibi. yani trimpot görevi yaptırabilirmiyiz bu pic'e

yardımlarınız için teşekkür ederim.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 16 Eylül 2005, 00:01:04
84 için software üzerinden PWM ile elbette parlaklığı değiştirebilirsin.PWM darbe genişiliği modülasyonu olarak geçer.Led üzerine düşen ortalama gerilimi değiştirerek, parlaklığı ayarlayabilirsin.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Erol YILMAZ - 16 Eylül 2005, 00:05:19
Oncelikle Hosgeldin...
Normalde PIC in cikislari dijitaldir. 0 ve 1 disinda birsey vermez...
En basitinden PWM teknigi ile dijital bilgi analog gerilim seviyelerine donusturulebilir.

Daha da basitlestirir isek,
Surekli 1 verdiginizde LED en parlak haliyle yanar.
Surekli 0 verdiginizde LED hic isik vermez.

Peki cikisimizi %10 zamanda 1, %90 zamanda 0 yaparsak ne olur?
Cikis frekansimiz 1 Hz gibiyse yanip-sonen LED,
Cikis freklansimiz 50 Hz ve uzeriyse azicik yanan bir LED olur.

Yani analog sinyal elde etmek icin min 50 Hz gibi dusunerek cikisin, 1 ve 0 olma oranlariyla oynamaniz gerekiyor.

Gecenlerde 0...5 Volt arasi gerilime ihtiyacim olmuştu. PIC in donanimdan PWM cikisini kullanarak bu gerilimi elde ettim, Bence gayet basarili da oldu.

#include <16F628.h>
#fuses INTRC,NOWDT,NOPROTECT,NOLVP,NOMCLR
#use delay(clock=4000000)

void main()
{
  setup_ccp1(CCP_PWM);                   // CCP :)
  setup_timer_2(T2_DIV_BY_1, 49, 1);     // 20 kHz
while(1)
{
  set_pwm1_duty((unsigned long int)10);     delay_ms(3000);
  set_pwm1_duty((unsigned long int)20);     delay_ms(3000);
  set_pwm1_duty((unsigned long int)30);     delay_ms(3000);
  set_pwm1_duty((unsigned long int)40);     delay_ms(3000);

}
}


Buradaki kod CCS ile yazilmis, calisan bir kod, Basic bilenler bunu Basic'e cevirebilir.

goruldugu gibi cikis 1 suremiz set_pwm1_duty() fonksiyonu ile belirleniyor. Bu frekansta 200 sayisi full 1 cikisa denk geliyordu.
16F628 ile bu istedigini rahatlikla yapabilirsin...

Sinyal cikan ucu 1 kOhm ve 22 uF ile filtrelersen cikisin tam bir analog olur...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 16 Eylül 2005, 00:44:12
PWM pin,duty,cycle


pin:çıkış alacağın ilgili pin.
Komut koşulurken otomatik olarak çıkış değilse çıkış olarak yönlendirilir.
Çıkış olarak tanımlamış isen komut sonunda konumunu korur.

duty:Bir puls içinde % kaçlık dilimde High(1) olacağını belirler.0-255 arası değer alabilir.
255 % 100 e denk gelir.127 %50 gibi

cycle: 1 Sn de göndereceğin puls sayısı.

Örneğin;

PWM portb.7,63,100 dersen B portunun 7. pininden %25 iş süreli, sn de 100 puls gönderirsin


Burada duty ile oynayarak parlaklığı ayarlayabilirsin.
Başlık: EGİTİM =PİCBASİC PRO
Gönderen: yusuftr80 - 25 Eylül 2005, 05:12:55
??
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 26 Eylül 2005, 13:35:37
slm. microcode studio ile ilgili bir problemim var yazdığım kodları derlediğimde --fatal: out of memory (pbpw.exe)-- diye bir hata veriyor pbp 246 yı c ye yükledim microcode studioyuda kurdum ama hep aynı hatatyı veriyor ben bir çözüm bulamadım   :roll:  yardımlarınız için şimdiden teşekkürler
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mhk - 26 Eylül 2005, 20:56:14
Seçtiğin mikrokontrolör hafızası yeterli değil yada , bilgisayarında bir problem var.Aynı programı başka bir bilgisayarda deneyebilirsin.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ilhan1 - 17 Ekim 2005, 12:38:24
selamlar. pbp 246 yı  mplab ile birlikte kullanıyorum. 16f877 işlemcisinde yukarıda belirtilen fatal eror-out of memory sorunu bendede oldu. yazılımın boyutu 2k civarında. acaba elimdeki pbp limitlimi. yoksa pbp da atladığım bir noktamı var. konu hakkında bilgisi olan varsa yardımlarını bekliyorum.
herkese iyi çalışmalar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ilhan1 - 18 Ekim 2005, 08:04:29
out of memory sorunu çözüldü.Şu şekilde:öncelikle pbp klasörünün içeriğini kontrol edin. pbpw.exe dosyasını görün. daha sonra mplab da pic basic pronun tanıtıldığı project/install language tool menüsünden daha önce pbp olarak tanıtılmış bağlantıyı pbpw olarak değiştirin. pbpw nin bulunduğu dosya yerinide(browse) tanıtın. bu kadar.
derleyici çalışıyor. bu arada sayfa aşıldığına dair mesajlar gelebilir. bunlar sadece mesaj. gerekli sayfa ayarlarını pbp yapıyor. herkese başarılar ve iyi çalışmalar.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: tagan - 19 Ekim 2005, 14:15:10
lcd ekrana ders 3 te olduğu gibi hexadecimal olarak sayı yazdırmaya çalışıyorum bad expression hatası veriyor. komut:
LCDOUT $FE,$C0,"Hex  = ",HEX2 SAYI
tabiki aynı yöntemle binary olarakta yazamıyorum herhalde HEX2 tanımlamasında hata var  :?:
birde notları rapidshare e de yükleseniz daha iyi olur bende ilk 6 sı var
geri kalanını edinemiyorum. şu mailden indirme olayınıda bi çözemedim gitti zaten
herkese teşekürler
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 19 Ekim 2005, 20:04:10
protonun help kısmından "bin" komutunu bir incele istersen..
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: tagan - 20 Ekim 2005, 03:43:56
teşekürler yardımcı olduğun için şimdi indiriyorum inceleyeceğim umarım sorunumu çözer
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 23 Ekim 2005, 18:08:55
slm mcs 2300 ve pbp 246 kullanıyorum yazdığım kodları derlediğimde fatal eror-out of memory diye hata veriyor. oluşan pbp dosyasını masa üstüne atıp yeniden derlediğimde problem yok derliyo ama bir klasörün içinde olduğunda fatal eror-out of memory hatasını veriyo bide isim de önemli ismi değiştirdiğimde derlemiyo bunun nedeni nedir ? pbp 246 değil pbp245-243 denedim ayni mcs plus kullanndım aynı problemler pbp dosyalarını masa üstüne atıp daerleyip yıne ordan alıp başka bir dosyaya atmak çok zor oluyo lütfen yardım :cry:  :cry:
Başlık: Hangi dil???
Gönderen: jeyhun - 27 Ekim 2005, 01:51:20
Herkese merhaba

Ben pic i ögrenmek ve ugrasmak istiyorum...

ama nereden baslayıp hangi dili kullanacagıma karar veremiorum yardımcı

olabilirmisiniz..???

simdiden teşekkür..:))
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: CaFFeiNe - 27 Ekim 2005, 05:57:52
hiç bilmiyorsan asm den başlayıp yüksek seviyeli bir dille devam etmen daha güzel olur
tabi asm öğrenirken haliyle pic in iç yapısını donanımını öğreneceksin ve asm ile uğraşırkende kullanacağın picin datasheeti en büyük yardımcın olacaktır (boşu boşuna 1-2$ a aldığımız piclere yüzlerce sayfa datasheet yazmıyorlar dimi)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 06 Kasım 2005, 20:01:56
slm arkadaşlar yukarıda yazdığım problemi çözdüm ben yanlış formatta kaydediyomuşum.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kristalx - 07 Kasım 2005, 22:59:09
Arkadaşlar merhaba. Ben yeni yeni merak saldım bu konuya. Kitaplardan da faydalanmaya çalışıyorum. Anlatım bana göre karışık geldi. Sizin bu bahsi geçen dersleri hiçbir şekilde indiremiyorum. Yardımcı olabilirseniz. Teşekkürler..
Başlık: sevgili ete hoca
Gönderen: tmr02 - 27 Kasım 2005, 15:25:46
sevgili ete hoca;
size maillerim gelmediği için iki mail adresimden atmıştım.
bombardımandan ötürü özürdilerim.  :oops:

verdiğiniz bilgilerden yola çıkarak herşeyi hallettim.
ısıs için verdiğiniz pass versiyon tutmadığı için geçersizdi.
aradım bi yerde crack dosyası ile birlikte isis 6,3 sp1 buldum o çalıştı

sonra

dedikleriniz madde madde uyguladım.

sonra

prg3a yazdım.  hex dosyasını pic'e tanıttım.

lcd yi en başta çalıştırmadı ama sonra RW ucuna GND bağladım şimdi sorunsuz herşey.
:lol:  :lol:  :lol:

sabırlı yardımlarınız için çok çok çok teşekkür ederim.

3-4 gündür sizi mail bombardımanı ile uğraştırdım ama sonunda istediğim gibi herşey yoluna girdi.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 29 Kasım 2005, 23:16:00
slm, pbp de sadece 1. yada sadece 2. satırı nasıl silebilirim :?:   LCDOUT $FE,1 bu kamut bütün ekreanı temizliyo kullandığım lcd 2 satır 16 karakter
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: CaFFeiNe - 29 Kasım 2005, 23:39:00
$FE, 2   (ilk satır)
$FE, C0 (ikinci satır)

ile istediğin satıra gelirsin sonra LCDOUT "              " gibi boşluk yazarsın (LCD ye göre artık kaç karakterse 8,16,20 vs)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 30 Kasım 2005, 00:02:57
$FE, 2 (ilk satır)
$FE, C0 (ikinci satır)

ile istediğin satıra gelirsin sonra LCDOUT " " gibi boşluk yazarsın (LCD ye göre artık kaç karakterse 8,16,20 vs)

sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us)  ustam denedim çare oldu ama boşluk bırakarak pic in hafızasında boşuna yer kaplamış olmazmıyız daha pratik bi çözüm yokmu :?:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: bayramonur - 30 Kasım 2005, 01:05:03
LCD_OUT $FE,C2 gibi de C0 hexadesimal değerine +15'e kadar ekleyip istediğin konuma getirebilirsin.Bu zaten HD44780 tarafından algılanıyor.
Boşluk bırakmana gerek yok.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 30 Kasım 2005, 01:37:41
sanırım sorum pek anlaşılmadı ben bütün satırı silmek istiyorum yani 16 karakterse 16 sını birden boşluk yazarsam 16 karakterlik hafızada gereksiz yer kaplamış olucam tek bi satırı silmek benim için çözüm değil.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mhk - 30 Kasım 2005, 10:28:25
Sevgili Mihri... Sana bir örnek.


basla:
adresb=$80:gosub ekransil    '1 satır silme
adresb=$C0:gosub ekransil    '2.satır silme

goto basla


ekransil:
for satir=adresb to adresb+15
   LCDOUT $FE,satir," "
next
return



Uyarın için teşekkürler editlenmiş hali budur...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: tmr02 - 30 Kasım 2005, 21:33:04
sayın mhk hocam.
for next döngüsünde sürekli değişen değer adresb olduğuna göre;

LCDOUT $FE,satir," "  
yerine

lcdout $fe,adresb," "

yazmamız gerekmezmi acaba?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 30 Kasım 2005, 22:11:57
sağol(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us)  mhk buda bi çözüm tabii bu şekilde bir çözüm benimde aklıma gelmişti. ama anladığıma göre "LCDOUT $FE,1" gibi tek bir komutla satırları ayrı ayrı silemiyoruz :cry:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 30 Kasım 2005, 22:24:50
#include <16F84A.h>
#fuses XT, NOWDT, PUT, NOPROTECT
#use delay(clock=4000000)

#define led port_b0

void main()
{
  basla:                      
  {
     output_high(pin_b0);
     delay_ms(200);
     output_low(pin_b0);
     delay_ms(200);
  }
  goto basla;


}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

TRISA=%11111
TRISB=%00000001
'-------------------------------------------------------------------------------
@ DEVICE pic16F84A
@ DEVICE pic16F84A,WDT_ON
@ DEVICE pic16F84A,PWRT_ON
@ DEVICE pic16F84A,PROTECT_OFF
@ DEVICE pic16F84A,XT_OSC
'-------------------------------------------------------------------------------
basla:
high portb.0
pause 200
low portb.0
pause 200
goto basla
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

yukarıdaki iki programda aynı işi yapıyo. 1. prg ccs de 2. prg pbp de yazıldı ama ortada bi tezat var ccs de wdt açık olduğunda program çalışmıyo, pbp de ise wdt nin açık yada kapalı olması farketmiyo her iki durumda çalışıyo neden :?:  bide bu sigortaların ne işe yaradığını ne zaman açık ne zaman kapalı olması gerektiğini anlatırsanız çok sevinirim. çalışmalarınızda başarılar dilerim.
Başlık: 16F877
Gönderen: elektrohaluk - 04 Aralık 2005, 16:06:33
16F877 kullanarak bir timer devresi yapmam lazim.Bu devreye bir lcd ve bir keyboard bagli olacak. Bu sistem keyboardtan girlen sayıya kadar devreyi saydıracak. Bu devre şemasi nasil oluşturulabilir. Yardimlariniza ihtiyacim var...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mhk - 04 Aralık 2005, 18:17:09
@ DEVICE pic16F84A
Seçilen chip 16F84

@ DEVICE pic16F84A,WDT_ON
@ DEVICE pic16F84A,WDT_OFF
Wdt açık yada kapalı

@ DEVICE pic16F84A,PWRT_ON
@ DEVICE pic16F84A,PWRT_OFF

Power on reset. Mikroişlemci besleme gerilimi düzgün seviyeye çıkana kadar işlemciyi reset durumunda tutar.

@ DEVICE pic16F84A,PROTECT_OFF
@ DEVICE pic16F84A,PROTECT_ON

Kod koruması kapalı. Eğer başkaları tarafından mikroişlemci içindeki hex kodunun okunmasının istemiyorsanız bu kod ON olmalıdır.

@ DEVICE pic16F84A,XT_OSC
@ DEVICE pic16F84A,HS_OSC
Kullanılan osilatör tipini belirler. Eğer 20 Mhz osilatör kullanıyorsanız Osilatör tipi HS olmaldır.

16F628 için bazı sigorta örnekleri

@ device MCLR_OFF
@ device MCLR_ON
MCLR ucunun reset yada normal port gibi davranması için ayarlanır.

@ device INTRC_OSC_NOCLKOUT
Dahili osilatör kullanılır ( 4 Mhz ) harici osilatör için kristal ve kondansatörler bağlamanıza gerek yoktur.


Bu sigortalarda 18F serisi için

@   __CONFIG    _CONFIG1H, _OSCS_OFF_1H & _HSPLL_OSC_1H
@   __CONFIG    _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_ON_2L
@   __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
@   __CONFIG    _CONFIG3H, _CCP2MX_ON_3H
@   __CONFIG    _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
@   __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
@   __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H
@   __CONFIG _CONFIG6L, _WRT0_ON_6L & _WRT1_ON_6L & _WRT2_ON_6L & _WRT3_ON_6L
@   __CONFIG _CONFIG7L, _EBTR0_ON_7L & _EBTR1_ON_7L & _EBTR2_ON_7L & _EBTR3_ON_7L
@   __CONFIG _CONFIG7H, _EBTRB_ON_7H


Son olarak picbasic proda WDT yi kullanmak için programın tanımlama kısmında;
DEFINE NO_CLRWDT 1     tanımlamasını eklemek gerekecek.

Umarım işinize yarar. Kolay gelsin
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 04 Aralık 2005, 20:14:14
çok sağol mhk
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: feyzi - 15 Aralık 2005, 23:28:00
Alıntı yapılan: "psiko"Pic Basic Pro Öğreniyoruz 3 ve 4'te LCD bağlatılarının çoğunda hatalar var. VEE bacağı POT çıkışına VDD ise besleme gerilimine bağlanmalı. çoğu şemada bu konuda hata var.
Kıymetli arkadaşlar!
Bu ince işlerin, umumun istifadesine arz edilmeden  önce ,bir komisyon tarafından kontrol edilmesi gerekir. Daha bu gün Altas Elektroniğin en gelişmiş deney setinde 8x2 LCD bağlantılarından iki bacağı yanlış yazıldığından  2 saatimi zayi ettim.Benim gibi yüzlerce insanımızın ne kadar zaman kaybedeceği hesap edilsin.......
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Petek - 16 Aralık 2005, 00:30:35
Alıntı yapılan: "mihri"#include <16F84A.h>
#fuses XT, NOWDT, PUT, NOPROTECT
#use delay(clock=4000000)
#define led port_b0
void main()
{
  basla:                      
  {
     output_high(pin_b0);
     delay_ms(200);
     output_low(pin_b0);
     delay_ms(200);
  }
  goto basla;
}

yukarıdaki iki programda aynı işi yapıyo. 1. prg ccs de 2. prg pbp de yazıldı ama ortada bi tezat var ccs de wdt açık olduğunda program çalışmıyo, pbp de ise wdt nin açık yada kapalı olması farketmiyo her iki durumda çalışıyo neden :?:  bide bu sigortaların ne işe yaradığını ne zaman açık ne zaman kapalı olması gerektiğini anlatırsanız çok sevinirim. çalışmalarınızda başarılar dilerim.
Eğer C de goto kullanacaksan bunu C kullanıcılarına gösterme. Çok büyük ayıp :)
WDT açık olunca çalışmaz. Birincisi ya WDT süresini uzun tutacaksın (200ms büyük) ve delay lerden sonra clear_wdt yapacaksın, yada

#use delay (clock=4000000, RESTART_WDT)

kullanarak delay döngüsünde wdt in otomatik sıfırlanmasını sağlatacaksın.
Bu açıklamadan sonra programının neden çalışmadığını anlamış olman lazım...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mihri - 07 Şubat 2006, 02:01:56
Petek hocam rica etsem şu WDT yi biraz açabilirmisin ?  ;)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: XNHCX - 07 Şubat 2006, 02:27:33
wdt hakkında ....

https://www.picproje.org/index.php/topic,4612

https://www.picproje.org/index.php/topic,5547

https://www.picproje.org/index.php/topic,2795

https://www.picproje.org/index.php/topic,6715

https://www.picproje.org/index.php/topic,6026
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: metuman - 22 Şubat 2006, 11:42:04
hocam ben pic'e yeni başladım 3-5 ledi yakıp söndürmekten başka bişey bilmiyorum.pic ile dijital saat,sıcaklık ölçümü nem ölçümü gibi örnekleri derslere eklerseniz sevinirim.kolay gelsin.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: metuman - 22 Şubat 2006, 11:45:52
Bir örnekte ADCON1=%10001110 '7. bit 1 yapıldı 10 bit sonuç almak için gibi bir açıklama yapılmış (pic basic pro dersleri 5'te) bu komut ne anlama geliyor.biraz açarsanız iyi olur.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 22 Şubat 2006, 22:07:32
Alıntı yapılan: "metuman"Bir örnekte ADCON1=%10001110 '7. bit 1 yapıldı 10 bit sonuç almak için gibi bir açıklama yapılmış (pic basic pro dersleri 5'te) bu komut ne anlama geliyor.biraz açarsanız iyi olur.
Bu pic basic pro ile ilgili değil, PIC ile ilgili. Datasheetlerden görebilirsiniz.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ee_faris - 23 Şubat 2006, 19:09:34
Alıntı yapılan: "tagan"lcd ekrana ders 3 te olduğu gibi hexadecimal olarak sayı yazdırmaya çalışıyorum bad expression hatası veriyor. komut:
LCDOUT $FE,$C0,"Hex  = ",HEX2 SAYI
tabiki aynı yöntemle binary olarakta yazamıyorum herhalde HEX2 tanımlamasında hata var  :?:
Hexadecimal ve binary ile birlikte "Bad expression" hatasını bende decimal bir sayının digit sayısını belirtmek için kullanılan DEC2 komutu ile birlikte de veriyor.Bu sorunun nereden kaynaklandığını veya nasıl çözüleceğini bilen var mı? Herkese teşekkürler.
Başlık: merhaba
Gönderen: net65 - 26 Şubat 2006, 12:01:01
benim problemim soyle

makken dogru olmasına ragmen pic e yuklenince ya calismıyor yada farkli calısıyor..

mesela

if porta.1=1 then
high porb.1
if porta.2=1 then
high portb.2

gibi bir if komutu koydugumuzda porta nin 1 pine 1  degdiginde portb.1 ucundaki led yakmalı ama yakmıyor yada yaksada 2. if komutu calısmıtor...

yardımcı olursanız sevinirim...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: babali - 27 Şubat 2006, 07:13:18
şu dersler nerde adresı var ama ben gıremıyorum sayfa yok dıyor
Başlık: CEVAP
Gönderen: seco06 - 27 Şubat 2006, 20:37:33
evet işte burada
http://rapidshare.de/files/14283853/DERSLER.rar.html
başarılar  8)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: gonenc - 05 Mart 2006, 11:54:58
arkadaşlar pic basic ile pic basic pro aynı programlama dillerimi yoksa arasında farklar var mı...
Başlık: cvp
Gönderen: koordinat - 05 Mart 2006, 15:00:37
ben farklılıklar var diye biliyorum.hatta compiler ları bile farklı olmalı.
Başlık: CEVAP
Gönderen: seco06 - 05 Mart 2006, 17:52:44
Ewet dostum ikiside farklı diller ama birbirlerine çok yakın komutları içeriyorlar.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kalemmm - 12 Mart 2006, 12:50:17
ben dahaca pıc konusunda yeniyim bu derslerden valla anlıyorum cokkk sağol keşke okuldaki derslerimize sen girsen  :)

ben 1. dersteki sadece bir yeri anlamadım onu sorcam

TRISA=0 'bu ifade " TrisA=%00000 " e eşdeğerdir.
TRISB=0
PortA=0
PortB=0
burda ne yaptınız ben sadece burayı anlamadım
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 12 Mart 2006, 15:20:45
Tris yazmacı ait olduğu portun giriş mi çıkış mı amaçlı kullanılacağını belirler.
Port yazmacı ise, eğer çıkış amaçlı kullanılacaksa pinlerin 1 mi 0 mı olacağını belirler.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sapkaliamca - 12 Mart 2006, 20:12:29
Ustalar 5. ders adc bölümünde kafama birşeyler takıldı picin adc pini ile ham değerler ölçülüyor peki şöyle bir sorum olacak ADC pinine 0 ile +5 volt uygulayalım HAM değerler de 0 ile 500 olarak okunsun şimdi okunan ham değer 50 den çok 100 den az ise program başka bir yere dallansın 100 den fazla 150 den az ise daha başka yere dallansın bunun için yazılacak karşılaştırma programı nasıl olmalı acaba teşekkür ederim
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: elitteknik - 30 Mart 2006, 13:34:57
ben derslere baktım cok guzel anlatılmış pic ogrenesim geldi sanırım bende başlayacagım bu işe elinize emeğinize saglık arkadaşlar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: KraL_41_88 - 05 Nisan 2006, 01:51:55
Benim Lcd le ilgili sorunum var ...
Türkçe karakter yapamıyorum kullandığım program proteus 6.2 sp5
yardımmmmmmmmmm :(  :(  :(  :(
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: aster - 05 Nisan 2006, 16:22:19
Alıntı yapılan: "DumrulBey"Öncelikle Foruma hoş geldiniz

ana sayfamızda Sevgili ETE ustamızın bir makalesini göreceksin
http://picproje.org/main

"Normal LCD' lerde Türkçe ve simgesel karakterler"
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: micRole - 09 Nisan 2006, 13:39:47
Merhaba arkadaşlar,
pic öğrenmek için yaptığım araştırmalarım sonucunda sanırım tam adresini buldum.Burada Programlama konusunda en basit ve anlaşılır olarak  picbasic pro dilinden bahsediliyor.Topic başındaki dersleri inceledim.Şimdi ilk önce bir uygulama kartı almak ya da yapmak gerekiyor . Gerisi uygulamaya başladıkça zaten şekillenecek sanırım.Doğru mudur ?
Saygılar.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: tekniker_murat - 07 Mayıs 2006, 21:34:51
sayın hocam derlerinizi baya zamandır ilgiyle takip ediyorum fakat birkaç noktada sorunlar yaşıyorum örneğin
lcd yi pic e bir türlü tanıtamıyorum sonra sonra bu adcon1=7 olayı pici dijital moda alıyor fakat tekrar analok moda almak için ne yazmalıyız yani ben daha önce asm kullanıyordum basic e yeni başladım herşey çok garip geliyor bu arada lcd ile ve pwm ile daha detaylı açıklayıcı bilgiler verebilirseniz daha iyi olacağına inanıyorum fakat kullanım ve komut ilişkileri bakımından asm ile basic arasında çok büyük farklar varmış.
birde çok önemli faktörlerden biri donanımlar hakkında pek bilgi bulamıyoruz misal olarak bir yazıcıyı pic ile kullnmaya çalışacak olsak yazıcının mantığı ne anlamak mümkün değil bu ve buna benzer konularda daha çok bilgilendirilmek istiyoruz ilgilerinizden dolayı teşekkür ediyorum
 artvin_li_murat@hotmail.com
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 12 Mayıs 2006, 23:42:34
pbp'da portb'nin son dört bitini nasıl bir değişken olarak atabiliriz acaba

mesela ilk 4 bit BUTONLAR son 4 bit ÇIKIŞLAR olarak

rastladığım değişken atamalarında ya bit düzeyinde yada byte düzeyinde karşılaştım.

0'dan 99'a sayan sonra bir sayıcı yapıyorum. Bu kodlar çalışıyorda portb 3 pinini de start, stop, reset olarak atamak istiyorum. Ama giriş olarak bitleri seçince sayıcı sapıtıyor. 9'dan sonra abcd diye devam edip 0'a dönüyor. Ne yapabilirim. Bu konuda değişken ile belki çözülür diye düşündüm ama dediğim gibi istediğim 4 biti değişken atayamadım.

TRISA=%00000
TRISB=%00000000

PORTA=0
PORTB=0

DEVAM:
   
   PORTB=PORTB+1
   
   IF PORTB=10 THEN PORTB=%0000    
   
   IF PORTB=%0000 THEN PORTA=PORTA+1
   
   IF PORTA=10 THEN PORTA=%00000
   
   PAUSE 250
   
GOTO DEVAM
   
END
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 13 Mayıs 2006, 00:21:09
Alıntı Yapmesela ilk 4 bit BUTONLAR son 4 bit ÇIKIŞLAR olarak
:?:  :?:  :?:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 13 Mayıs 2006, 00:24:37
Alıntı yapılan: "OG"
Alıntı Yapmesela ilk 4 bit BUTONLAR son 4 bit ÇIKIŞLAR olarak
:?:  :?:  :?:

yani portb'nin ilk 3 yada 4 bitinden start,stop,reset butonları oluşturup son 4 biti BCD olarak saydırmak istiyorum.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 13 Mayıs 2006, 00:37:09
Alıntı YapTRISB=%00000000
Hepsini çıkış yapmışsın. Giriş olarak atamak istediklerin 1 olmalı.

Sayma işlemi için önce bir değişken ata. Örneğin
sayac var byte

daha sonra
sayac=sayac+1 şeklinde artışı sağla.
if şartlarını gerçekleştir.
Daha sonra PortB ye bu değeri gönder.

Alıntı YapPORTB=%0000
şeklinde bir atama olmamalı sanıyorum emin değilim. Böyle birşey hiç görmedim. BIT bazında bir işlem yapacaksan PORTB.X=0 gibi demen gerekir.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 13 Mayıs 2006, 00:44:46
Yukarıda yazdığım kodlar 0-99 arası sayıp tekrar sıfırlayan kod yani sayma işlemi yapılıyor.

Ama mesela PortB'yi =%11000000 olarak ayarladığımda sayma işlemi sapıtıyor.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 13 Mayıs 2006, 00:45:15
Tek pic ve 4 bit ile nasıl 0-99 sayıcı yapmayı düşünüyorsun?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 13 Mayıs 2006, 00:53:44
Alıntı yapılan: "katana"Tek pic ve 4 bit ile nasıl 0-99 sayıcı yapmayı düşünüyorsun?

Yukarıdaki çalışan kodlardan da görüldüğü üzere 2 digit (0-99) arası sayaç yaptım. Yani Proteus'ta simüle ettim, çalışıyor. Birler basamağının 4 bitini PORTB, onlar basamağının 4 biti içinde PORTA 'yı kullandım. Ama portb'nin kalan bitlerinden de buton vasıtasıyla faydalanmak istiyorum. Giriş olarak atayınca sayma işlemi sapıtıyor. Sürekli 0-A arası sayıp duruyor PORTB'nin bitlerini giriş yapınca.

Şemanın linki kodlar da yukarıda yardımlarınızı rica ediyorum.

http://img132.imageshack.us/my.php?image=0993wi.gif

Teşekkürler
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: CaFFeiNe - 13 Mayıs 2006, 11:00:10
olur tabiki ama neden PORTB'ye iki dijiti bağlayıp PORTA'yı ise butonlar için kullanmıyorsun?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 13 Mayıs 2006, 11:25:53
Alıntı yapılan: "CaFFeiNe"olur tabiki ama neden PORTB'ye iki dijiti bağlayıp PORTA'yı ise butonlar için kullanmıyorsun?

Şu anda bunun nasıl yapılacağı hakkında bir fikrim yok.  biraz bilgi yada bir örnek var mı acaba?

Bir tane buldum da kodları pbp değil asm galiba pek anlamıyorum. ve de şu istediğimiz bitleri nasıl değişken atayabiliriz. Yapmasam bile öğrenmek isterim. Teşekkürler

https://www.picproje.org/index.php/topic,5730
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 14 Mayıs 2006, 13:23:09
Son 4 bite "DEĞER" etiketini atamak için
TEMP = DEGER <<4
şeklinde mi yapılıyor ve buradaki "TEMP" değişkeni ne amaçla konulmuştur acaba.

Teşekkürler.

SAYAC VAR BYTE
TEMP VAR BYTE
DEGER VAR BYTE

SAYAC = 0
DEGER = 0

MAIN :

 FOR SAYAC = 0 TO 9

   TEMP = DEGER <<4

   PORTB =TEMP | SAYAC

 PAUSE 100

 NEXT SAYAC

   DEGER = DEGER+1

   IF DEGER > 9 THEN DEGER = 0

 GOTO MAIN
END
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: CaFFeiNe - 14 Mayıs 2006, 13:43:23
TEMP = DEGER <<4

ile DEGER değişkeni sola 4 bit kaydırılıyor ve TEMP değişkenine aktarılıyor örneğin

DEGER = 00000011 olsun 4 bit kaydırınca DEGER = 00110000 olur ve TEMP = 00110000 olur

ardından

PORTB = TEMP | SAYAC

TEMP ve SAYAC değerleri veya işlemine sokularak PORTB ye yazılıyor örneğin

TEMP = 00110000
SAYAC = 00001001

bu durumda PORTB = 00111001 olur
PORTB ye bağlayacağın 2 dijitte ise (BCD->7segment çözücü yardımıyla) "39" değerini görürsün (dijitleri ters koyarsan "93" te görebilirsin tabiki)

bu programa göre  SAYAC değişkeni birler basamağını DEĞER değişkeni ise onlar basamağını tutar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cirak05 - 14 Mayıs 2006, 13:53:56
Sana ne kadar teşekkür etsem azdır.

Anlattıkların için çok teşekkürler.

Sayende bu konuyu kavradım.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: hakdogan - 31 Mayıs 2006, 23:22:05
Selam diyerek yeni bir arkadaşınız olarak ilk sorumu sorayım

Ben PIC Programlama ile yeni ilgilenmeye başlayan birisiyim 2 kitap alıp

PicBasicPro
http://kitapyurdu.com/kitap/default.asp?id=99299

ve Elektronik Hobi
http://www.kitapyurdu.com/kitap/default.asp?id=80058

olaya Bismillah dedim ve girdim :)

Okduğum http://kitapyurdu.com/kitap/default.asp?id=99299 eserde tavsiye edilen PICMicro PIC16F84, PIC Programlama kartı PPK-U1.00, PIC Deneme kartı PDK-U1.00 (Bu kartlaraa dair bilgiye kitabın yayın evinin sitesi dahil hiçbir yerde rastlayamadım) ilk intiba olarak eski teknoloji gibi geldi, PIC programlama ile yeni ilgilenen birisi olarak şu an kullanılanlar hangisidir ve bu donanımlara dair güncel eserler var mıdır bilmiyorum ve sizlere soruyorum : yeni birşeyler var mı? :)


Sizlere sormak istediğin 2 soru ise acemilik döneminde yazdığım kodları herhangi bir programlama kartı ve deneme kartı almadan simule edebileceğim bir emulator tavsiyesi var mı?

MPLAB içinde bir simülatör olduğunu gördüm ancak çalıştıramadım.


Bu konuda da yardıma ihtiyacım var.

İlgilenen kardeşlerime şimdiden çok teşekkürler...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: karabel - 01 Haziran 2006, 17:38:31
Sana picproje.org sitesinde birkaç gün geçirmeni öneririm.

Kısa zamanda, birçok programlama ve uygulama kartlarının yanısıra

Proteus hakkında bilgilere ulaşacağına eminim.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: denizhanyerel - 07 Haziran 2006, 22:09:30
Dosyalara ulaşamadım maalesef. Yardımcı olabilirmisiniz?
Başlık: yardım
Gönderen: stormburak - 18 Temmuz 2006, 21:59:56
Birkaç gündür picproje netde etenin vermiş olduğu derslere bakıyorum benimde bir ADC projem var.Ses dalgasını alıp dijitale dönüştürüp seri porta göndercem yalnız bikaç sorum var.
1-Aldığım dalgayı herhangi birşeye dönüştürmeme gerek varmı yoksa direk analog girişten alıp dijital girişe verebilirmiyim?
2-Zaman aralığı gibi birşey tanımlamam gerekirmi ben ses geldiği sürece almasını istiyorum sonsuz döngü içinde sadece değişkene alıp çıkışa göndermem yeterli olur mu?

Bu soruları cevaplayabilecek arkadaşlar mail,msn ne olursa bana ulaşırsa çok mutlu olurum teşekkürler.
mail,msn=kurtburak@yahoo.com
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: laydinata1 - 20 Temmuz 2006, 11:05:17
Biraz geç olucak ama elinize sağlık..rapid linki ölmüş tekrar upload etseniz çok makbule geçer arkadaşlar..
Başlık: Re: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: gunalhakan - 05 Ağustos 2006, 15:33:41
selamlar..pic basic notları için öncelikle hazırlayanlara ve bu işle uğraşan arkadaşların ellerine kollarına sağlık.
bu notlar kodlar ve şemalar için gmail den bir mail vermişsiniz ama ben bu mail in şifresini bulamadığım için o dökümanlara ulaşamadım.
bana bu konuda bir yol gösterirseniz çok sevinirim.
herkese çok kolay gelsin
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 05 Ağustos 2006, 16:12:32
O adres geçerli değil. Notlara BURADAN (https://www.picproje.org/main/modules.php?name=News&new_topic=2) ulaşabilirsiniz.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: esmerim33 - 03 Ekim 2006, 10:17:40
sayın ete hocam bir sorum var bir fabrika için bir devre tasarladım devrenin kodunu pic basic pro ile yazıyorum fakat takıldığım bir yer oldu gördüğüm kadarıyla pğic basic pro da değişken olarak bit byte ve word var bunlar bana yetmiyor ben sayıcı olarak 3600000 gibi rakamlar ve daha üstünü kontrol etmek istiyorum fakat değişkenler bana yetmiyor bu konuda bana ayardımcı olabilirimisiniz..?

abdullahcetinel@hotmail.com
abdullahcetinel@gmail.com

saygılar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Logan - 03 Ekim 2006, 10:59:52
@esmerim33, aynı problemi bende yaşamıştım ve iki adet word kullanmak zorunda kalmıştım.Benim problemim daha büyüktü çünkü 40.000.000'a kadar ekranda sayı göstermek zorunda kalmıştım.O zamanlar bu soruna bir çözüm bulmuştum fakat iş değiştirdiğim için artık ulaşmama imkan yok.Programı nasıl yazdınız bilmiyorum ama şunu söyleyebilirim, her hane için bir register yapıp bu şekilde kontrol etmeye çalışabilirsiniz.Kolay gelsin.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: esmerim33 - 03 Ekim 2006, 12:31:30
Alıntı yapılan: "Logan"@esmerim33, aynı problemi bende yaşamıştım ve iki adet word kullanmak zorunda kalmıştım.Benim problemim daha büyüktü çünkü 40.000.000'a kadar ekranda sayı göstermek zorunda kalmıştım.O zamanlar bu soruna bir çözüm bulmuştum fakat iş değiştirdiğim için artık ulaşmama imkan yok.Programı nasıl yazdınız bilmiyorum ama şunu söyleyebilirim, her hane için bir register yapıp bu şekilde kontrol etmeye çalışabilirsiniz.Kolay gelsin.

register oluşturmayı bilmiyorum ama bu işin mantığı bence bu kadar zor olmamalı daha kolay bir çaresi vardır diye düşünüyorum acaba dıştan library ekleyip komutları çoğaltarak değişken tiplerini arttırma şansımız olamazmı?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Logan - 03 Ekim 2006, 14:04:25
@esmerim33, PBP'de en büyük eksiklerden birisi doubleword tanımının olmamasıdır.Yani bir değişkene max. 65535 sayısını atayabilirsin. Sana anlattığım hanelere register atama yöntemi şu şekilde olabilir;

birler        var yte
onlar        var byte
yuzler       var byte
binler        var byte
on_binler   var byte
yuz_binler  var byte
bir_milyon  var byte
on_milyon  var byte

şeklinde olabilir.Yani kullanmak istediğin değeri hanelere ayırarak işlersin. Fakat programda zaman kaybı ve yığılmalara sebep olur.Bir önceki mesajda dediğim gibi böyle bir ihtimalin varmı bilmiyorum.Bu sadece bir fikir. :?:
Başlık: bir dizini diğerine atma
Gönderen: showtime - 10 Ekim 2006, 20:19:30
a var byte[100]
b var byte[100]

a değişkeninin tüm elemanlarına atama yaptıktan sonra kodun belli yerlerinde b nin tüm içeriğini a 'ya atmak istiyorum.

a=b yaptım ama olmuyor. mecburen for..next ile yapıyorum ama bunun bir kısa yolu varsa onu uygulamak isterim.
saygılar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: melihh - 21 Ekim 2006, 22:51:09
Merhaba arkadaşlar pbp ile yazılan program hangi derleyici ile hex e çevrile bilir.Bunun için en uygun derleyici  hangisinidir.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 22 Ekim 2006, 01:17:35
http://picproje.org/index.php/topic,11691&highlight=pbp+windows
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: devkartal - 06 Kasım 2006, 13:15:23
selam ,

ustad  yazmış olduğun konuları zaman zaman iş yoğunlugu nedeni ile çok uzakta olsa yada koputa olsa takip etmeye çalişiyorum  

şuan bende sizlere yorum ve dusuncelerimi aktarmak istiyorum fakat konuların tarihleri o kadar eski ki yazacağim cevabın  nekadar anlamlı yada  ne kadar yerine ulasacagi konusunda suphelerim var

Suanda bu konu halen  ders olarak işlenmektemi? bilmiyorum

derslere devam edilmediğini dusunmekteyim  katılımın azlığımı? yoksa baska sorunlarmı var ?

gercekten  ders anlatiminiz çok guzel bulmuştum

umarım  bu derslere devam edilir

kolay gelsin

iyi calismalar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: babali - 03 Aralık 2006, 21:15:28
slm.
2 hafta sonra pic basıc ıle ılgılı kıtaplarım gelcek
picbasıc asm. gore zormu asm. baya zorlanıyorum
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: XX_CİHAN_XX - 03 Aralık 2006, 22:22:18
Alıntı yapılan: "babali"slm.
2 hafta sonra pic basıc ıle ılgılı kıtaplarım gelcek
picbasıc asm. gore zormu asm. baya zorlanıyorum
Bana göre picbasic en kolay ögrenilen ve kullanılan bir dil ama yine bana göre diğer dillere göre en yavaş dil.
Asm tabii ki zor kullanım açısından hepsınden zordur.üst seviy dili olarak C yi tavsiye ederim. Tercihim ise çoğu zaman asm den yana olmuştur.
Saygılarımla...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: babali - 04 Aralık 2006, 07:18:35
c hakkında bılgı bulmas zor bu yuzden basıc secdım
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mutta - 04 Aralık 2006, 21:31:37
Alıntı yapılan: "babali"c hakkında bılgı bulmas zor bu yuzden basıc secdım
evet haklısın kişinn c altyapısı olması gerekiyor eğer c bilmiyorsan bende basic derim;)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: babali - 10 Aralık 2006, 10:31:53
http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/17/17.pdf
arkadaşlar burda örnek 3 e ait c otları nın yazılışı bukarmı yoksa daha varmı
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: nightwolf - 31 Ocak 2007, 17:21:50
Selam Arkadaslar ;

Ben pic de yeni sayılırım.
Bende PIC 16F877 ile bi proje gelistiricem ve burada anlatılan örnekleri bread board da kurdum ama olumlu sonuc alamadım. örnekleri 16F84a da denedim oldu. 877 ile tüm baglantılarıinceledim hatalı olanları da düzeltim ama sonuc yok acaba breadboard mı bozuk olabilir diyicem cünki 16f84a yı baska board denedim olmuştu yardım ederseniz sevinirim
Son olarak 877 denedigim board da enerji sorunuda yok...
Başlık: rapidshare
Gönderen: metek2003 - 04 Şubat 2007, 23:21:06
Rapid ile ilgili hiç bir dosyaya erişemiyorum.Ne yapmalıyım
herkese iyi çalışmalar
Başlık: ete picbasıc ders
Gönderen: a.zorba - 05 Şubat 2007, 11:05:04
http://rapidshare.com/files/14987323/eteders.rar.html


buda picprojeden derledıgım picbasıc notları

http://rapidshare.com/files/14987590/a_zorba_pbp.rar.html
Başlık: bir rica...
Gönderen: explorerman - 10 Şubat 2007, 22:03:51
arkadaşlar merhaba
ben yeni üye oldum ve Ete beyin konu anlatımları gercekten harika.forumda ders notlarının atıldıgı bir gmail hesabı var acaba nasıl üye olabilirim?Yardımcı olursanız sevinirim.
Başlık: dersler burda
Gönderen: hkalaycioglu - 11 Şubat 2007, 09:59:31
arkadasım hos geldın aramıza E T E hocamızın derslerı zaten yukarıdakı lınkte verılmıs 10 derslık bır dosya proteus sımülasyonları ve programlarıda var benım bıldıgım baska  bu sekılde bır dersı yok bunlarıda a.zorba arkadasımız yuklemıs
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pozitive - 13 Şubat 2007, 00:17:41
Yukarıda verdiğiniz link çalışmıyor

rapid de sorun yapıyo

rica etsem mail ime gönderirmisiniz.
emre_kilic@hotmail.com
veya  bir tane gmail li adres var onun şifresi güncellense çok güzel olur.

Pbp da diziye sabit sting değerler nasıl tanımlayabilirim.
dizi[1]="pazartesi"
dizi[2]="salı"

gibi bişi yazmak istiyorum yardımcı olursanız sevinirim.
Herkese kolay gelsin
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: hkalaycioglu - 17 Şubat 2007, 10:24:50
yukarıdaki linkler sağlam arkadaşlar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrkaya - 08 Mart 2007, 16:59:40
merhaba arkadaşlar ben yeni katıldım aranıza. sormak istediğim bi şey var
ben bilgisayar programlarıyla elektronik devreleri kontrol etmek istiyorum. Kendimi bu yönde geliştirmek istiyorum. Neler yapmam gerektiği hakkında yardımcı olurmusunuz. Pic Basic ile ilgili makaleleri okudum ancak, resimler çıkmıyor bende. Bunlarla ilgili detaylı bilgi verebilirmisiniz .

Yardım ederseniz çok sevinirim
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ilker_32 - 08 Mart 2007, 17:18:21
öncelikle aramıza hoş geldin pic basic öğrenmek istiyorsan Ete hocanın dersi var link aşağıdadır.

http://rapidshare.com/files/20022971/eteders.rar
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 16 Nisan 2007, 12:21:46
Bildiğiniz üzere bilmeyenlerin öğrenebilmesi için değişik bir mantıkla basic dersleri yazmış idim. Dersler toplam 10 adet dersten oluşmakta idi.  Bu derslerin arasında eksik olan PWM konusunu tek bir ders halinde Ders-11 olarak toparladım. Önceki derslerin linkleri silinmiş olabilir. Bu yüzden 11 adet dersin tamamını aşağıdaki linke yükledim.


http://dosyam.net/?id=gmc43k

Ete
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: y_murat - 29 Nisan 2007, 21:48:17
sevgili arkler bu gmailin sıfresı ne acaba gırıorum ama olmuo bı daha yazarmısınız :roll:  :arrow:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: okantex - 19 Mayıs 2007, 19:18:04
selam ETE Hocam,
notlarinizxdan  php ogrenmeye calisiyorum.ADC konusuna kadar acıklamali gilmissiniz fakat ordan sonrasi biraz yuzeysel olmuş.aklinizdan gecenler kagida tam yansimadiigindan anlamk zor oluyor.
ozellikle ham=ham+1  yaptık tan sonra olay kopuyor.
neyse benim bi sorum olacak bu php de komut oncelligi nedir.

programyaziyorum
ADC kullancam bir nevi osiloskop gibi bir program olacak.
5 micro saniye araliklarla olcum alcam.
toplam olcum alacagim periyot 300mikro saniye ondan sonra 9700micro saniye boyunca okunan deger sifir olacak
tabi bu arada gelen "0" degerli olcum ekrandaki sonucu etkiliyor onndan etkilenmemek icin
baslangicta
DEFINE LCD COMMANDUS 1000 yaptim.buda 1000mili sn ye beklet demek.
ben olcum yaptıgım aralarda bazi komutlar kullaniyorum
yani bol miktarda lcdout tanimlarim var.
ilk cıkan lcdout normalde 1000 mili sn beklemeli. ama benim 1000mil sn dolmadan verecegim
LCDOUT $FE,1, silme komutum ilk komuta gore oncelikli midir.
yani bu silme komutu gelince onceden yazilan silinirmi.
Başlık: mcs de sorun
Gönderen: aziz41 - 23 Mayıs 2007, 02:15:44
ete hocam yazdığın pic basic ile ilgi ders notları mükemmel emeğine sağlık.benim sorunum şu.derslerdeki örnekleri mcs plusta yazdım asmbler kodlarında hata verdi.mcs de kullandın hata vermedi fakat 16f628 e program atamıyorum.bana yardımcı olursan sevinirim.teşekkür.
Başlık: picprojeup@gmail.com hakkında,
Gönderen: empire62 - 17 Ağustos 2007, 13:57:49
Merhaba,
picprojeup@gmail.com adresine konan yazılara nasıl ulaşacağım?
Teşekkür eder, iyi çalışmalar dilerim.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: a.zorba - 17 Ağustos 2007, 14:14:27
forumumuzun upload alanı   http://picproje.4shared.com/   olmuştur hepsinı değilsede bir kısmını bu alanda bulabilirisn  pass :www.picproje.org
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 21 Ağustos 2007, 16:25:03
iyi çalışmalar herkese
yaklaşık 1,5 sene pic ile meşgul olup asm dilinden dolayı lcd ye yazı yazmak için 40 türlü takla atmak canıma tak etti #c den daha kolay olduundan pbp örenmeye karar verdim ve ete hocamızın derslerine dün başladım ilk 3 ders sonun da doğru kaarar verdiimi anladım asm ile çok takla tıomuşuz :) tabi asm nin vazgeçilmez yanları var  o ayrı mesele

benim 1. sorum pbp kodları arsına asm kodlarını da ekleyebilirmiyiz

2. sorum pbp nun enso derleyicisi nedir nerden temin edilir?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: M_B - 21 Ağustos 2007, 17:06:23
merhaba   arkadas.

PBP da Asm kodları ekleyebılırsın.

[code]ASM
  bsf PORTA, 0 ; Set bit 0 on PORTA
  bcf PORTB, 0 ; Clear bit 0 on PORTB
ENDASM
benim bildigim 2,47 versiyonu var
Kolay gelsın.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 22 Ağustos 2007, 09:45:56
ben pbp demo kurulu şu an şindi 2.47 yi indirdim ama herhangi bir setup dosyası bulamadım 2.47yi nasıl kurarım
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: M_B - 22 Ağustos 2007, 09:58:15
pbp YU Microde Studıo ıcınde kullanacaksın.
Once MıcroCode Studıo yu kurman gerekıyor. Kurduktan sonra PBP 2,47 nın bulundugu klasoru MCS ıcınde tanıtıp kod yazmaya baslayabılırsın. Derlemeyi falan hepsını MCS ıcınde yapıyorsun.
Kolay gelsın
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 22 Ağustos 2007, 10:21:06
pbp 247 klasorunu mcs klasorunun içine kopyaladım ama kıod sayım belli bi sınırı aştığında bu ekranı görüorum

(http://img168.imageshack.us/img168/8710/pic001tj3ew4.jpg) (http://imageshack.us)


'****************************************************************
'*  Name    : ilk pbp.BAS                                      *
'*  Author  : [Erkan BODUR]                    *
'*  Notice  : Copyright (c) 2007 [Erkan BODUR] *
'*          : All Rights Reserved                               *
'*  Date    : 21.08.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE LCD_DREG     PORTB   'DATA REG PORTB ye BARLI
DEFINE LCD_DBIT     0
DEFINE LCD_EREG     PORTA
DEFINE LCD_EBIT     0
DEFINE LCD_RWREG    PORTA
DEFINE LCD_RWBIT    1
DEFINE LCD_RSREG    PORTA
DEFINE LCD_RSBIT    2
DEFINE LCD_BITS     8
DEFINE LCD_LINES    2

TRISA=0
TRISB=0

 BASLA:
PAUSE 200
LCDOUT  $FE,1
LCDOUT  "N"
LCDOUT  $FE,$C0, "E.E. ENGIINER"
PAUSE   20
LCDOUT  $FE,1
LCDOUT  "AN"
LCDOUT  $FE,$C0, "E.E. ENGIINER"
PAUSE   20
LCDOUT  $FE,1
LCDOUT  "KAN"
LCDOUT  $FE,$C0, "E.E. ENGIINER"
PAUSE   20
LCDOUT  $FE,1
LCDOUT  "RKAN"
LCDOUT  $FE,$C0, "E.E. ENGIINER"
GOTO    BASLA
GOTO    BASLA
END


2. GOTO basla sınırı aşan kod oluo
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: M_B - 22 Ağustos 2007, 10:29:44
Merhaba arkadas MCS ıcınde view den Compıle and Program options
sekmesıne geleceksın  ve asagıdakı resımdekı gıbı ayarları yapacaksın.
Manuel veya Automatıcal


http://img518.imageshack.us/my.php?image=adszku6.gif
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: a.zorba - 22 Ağustos 2007, 10:32:20
basıc kullanacaksan bunu kullan
picbasic plus (proton 3) enson surumu bu forumun bir uyesi tarafından kırıldı

www.rapidshare.com/files/49631190/setup_new.rar.html
pass:sonsivri
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 22 Ağustos 2007, 11:13:28
@M_B pbp demoyu kaldırdım yerine mcs 2300 die bişe buldum bilgisayarın ücra bi köşesinde onu kurdum pbp 247 klasorunu mcs içine kopyaladım vede belirttiğiniz düzenlemeyi yaptım şimdi herhangi bir sorun yok teşekkürler
(http://img503.imageshack.us/img503/4748/adszto3.th.jpg) (http://img503.imageshack.us/my.php?image=adszto3.jpg)

@a.zorba teşekkürler
You have requested http://rapidshare.com/files/49631190/setup_new.rar (41911 KB).

You have reached the download-limit for free-users. Want to download more?
Get your own Premium-account now! Instant download-access! (Or wait 171 minutes)


171 dk sora dosyayı indircem  :lol:  :lol:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: idemirdoven - 29 Ağustos 2007, 00:40:48
Alıntı yapılan: "aster"ders 5 notları şemaları
picprojeup@gmail.com da ETE PHP Dersleri 5 msj içindedir
pw: 16f877

password çalışmıyor. dersleri mail adresime gönderebilir misiniz?

idemirdoven73@gmail.com

şimdiden teşekkür ederim.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: eureka - 29 Ağustos 2007, 10:17:51
İyi günler sorunumu sitede aradım ama bulamadım varsa şimdiden özür dilerim. Ben PBP ve 16f877 ile hem bir paralel lcd kullanmak hemde bilgisayarın com portu ile iletişim yapmak istiyorum ayrı ayrı denediğimde ikiside oluyor ama ikisini birleştirdiğimde sorun oluyor yardım ederseniz sevinirim
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 29 Ağustos 2007, 18:28:24
@idemirdoven
Alıntı yapılan: "a.zorba"forumumuzun upload alanı http://picproje.4shared.com/ olmuştur hepsinı değilsede bir kısmını bu alanda bulabilirisn pass :www.picproje.org
burda istediin derslerin hepsi var

@eureka walla sorunu anladık ta yazdığın kodu verirsen burdaki hocalarımız sana nerde hata yaptığını söyleyeblilir
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 08 Eylül 2007, 16:49:39
bu gün mcs 2300 ü başka bi bilgisayara kurdum ve pbp 2.47 içine kopyalayıp compile ve program options dan yerini gösterdim.
ama helpten about a girdiğimde compiler not installed dio ve herhangi bi programı compile etmek istediğimde pbpx.exe ile alakalı eror verio
ama klasorun içinde pbpw.exe var.
sizce sorun nerde?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: tyildizak - 10 Eylül 2007, 11:07:37
pbp'yi mcsp içine falan kopyalamayın,hepsini kaldırın,pbp'yu c altına klasör olarak kopyalayın,mcsp'yi kurun,compiler ve assembler'i tanımlayın,çalışacaktır.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 20 Eylül 2007, 18:13:08
arkadaşlar mcs 2300 ü kuruyorum pbp 247 nin yerini gösteriyorum ama compile olmuyo
"fatal error:out of memory (pbpw.exe)" uyarısı oluo
mcs help about a baktığımda compiler not instaaled dio birtürlü çözemedim çözüm yolunu
yardım edin
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: tyildizak - 22 Eylül 2007, 14:09:00
assambler'in yerini gösteriyor musunuz?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 24 Eylül 2007, 11:38:18
Alıntı Yaparkadaşlar mcs 2300 ü kuruyorum pbp 247 nin yerini gösteriyorum ama compile olmuyo
@tyildizak demekki göstermiomuşum.
şöyle bi açıklama yapmak istiorum bende iki bilgisayar var biri şu an kullandığım güncel ve herşeyi ile çalışıo, diğeri p2mmx 333mhz bi tarihi eser ve ondada xp sp2 yüklü.
in my currently computer'de mcs 2300 ü kurdum pbp2.47 i gösterdim çalıştı ama eski bilgisayarda bu olmadı yada ben bişeyi sürekli atlıom
assembler demişsiniz çalışan bilgisayardan baktım compile and program options da not defined yazıo yani çalışan bilgisayardada tanımlanmamışki?
şimdi ben bu konuda napiim?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: a.zorba - 24 Eylül 2007, 11:43:07
Alıntı yapılan: "erkan614"
diğeri p2mmx 333mhz bi tarihi eser ve ondada xp sp2 yüklü.

win 98 yada win me yükle xp de zorlanarak çalışacagına win 98 de rahat rahat çalış
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 24 Eylül 2007, 13:02:00
hocam haklısın xp büyük yük emektara ama crackli 98 cdsi yok (gerçi cracksizide yok da) alışmışım 4 senedir hazır sp2li bi xp cd'm var kargadan başka kuş tanımam hesabı onla gidioruz emektarın sitem 3 ay önce çökünce bunu yükledik aslında ben emektara linux yüklemek istiorum ama linux kunusunda çooook acemiyim
elinizde eli ayağı düzgün crackli 98 cd'si linki varsa yollayın yoksa emektar xp ile daha çook sürünecek gibi  :D
bu arada bazan iyi oluo isiste si yaparken ms ms ilerlio :lol:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: files - 24 Eylül 2007, 13:37:40
2007 - 1998 = 9
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 24 Eylül 2007, 14:26:08
oruçlu iken insanın performans düşüo biraz
Alıntı yapılan: "files"2007 - 1998 = 9
burdaki nüansı kaçırdım aç olduğundan kovalayamıom da yakalayanların insaniyet namına olmadı kanun namına :lol:  :lol: neyse
hocam anlamadım
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: KAZIMUGUR - 24 Eylül 2007, 15:47:57
Bu tip program arayışlarınız için :

BAKINIZ (http://www.zevkli.org) <<<
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 24 Eylül 2007, 16:11:19
" Eski, eski oldugu icin değil, kotu oldugu icin atilir; Yeni, yeni oldugu icin değil, lazim oldugu icin alinir" demis bir yasli...
Yasli dedigime bakmayin, yil olarak yasli; eski değil yani...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kafa1500 - 27 Ekim 2007, 23:53:43
Selam arkadaşlar;  "for ...next"" komutu ile kafama takılan bir konu var. Basit bir program yazıp deniyorum az çok mantığı kavradığımı düşünürken kafam karıştı.

BASLA:
for i=0 to 9
PORTB=i
i=i+0
pause 200
if i=10 then i=0
NEXT i
GOTO BASLA


Bu kodlarda amacım 7447 ile 0'dan 9'a kadar saydırmak ama  i=i+0'ın mantığını anlayamadım. bu şekilde yapmayınca da çalışmıyor.
i=i+1 yapınca 2şer 2şer artıyor rakamlar.

Neden olabilir? Bu komutun mantığı hakkında biraz yardıma ihtiyacım var.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 28 Ekim 2007, 00:19:26
BASLA:
i=0
for i=0 to 9
PORTB=i
pause 1000
NEXT i
GOTO BASLA
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kafa1500 - 28 Ekim 2007, 11:06:43
Bu şekliyle ISIS'da çalışıyor hocam, pic'in çıkışında 7447 var. Elimde Orhan Altınbaşak'ın picbasic pro ile programlama kitabı var. Ona bakayım dedim for..next komutu için ama kitap microcode studio programının helpinin  birebir Türkçeye çevrilmiş hali. Örnekleri bile aynı.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Veli B. - 28 Ekim 2007, 15:01:16
Duzeltiyorum, bu sekli ile 7447 kulanirsaniz dogrudur displayde rakamlar gorunur.Portb<0:3> uzerinden 7447 girislerine BCD uygulamis olursunuz. Gece farketmemisim 7447 kullandiginizi, ozur dilerim yanlis bilgi icin...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mert3162 - 29 Ekim 2007, 15:31:22
TRISA=%11111111       'A PORTU CIKIS OLARAK TANIMLANDI
TRISB=%00000000          'B portu çıkış yapıldı
PortB=0                  'B portunun çıkışı Low(0) yapıldı.

Symbol TUS0=PORTA.0   'A.0 PORTU TUS1 OLARAK TANIMLANDI
Symbol TUS1=PORTA.1   'A.1 PORTU TUS1 OLARAK TANIMLANDI
Symbol TUS2=PORTA.2   'A.2 PORTU TUS1 OLARAK TANIMLANDI
Symbol TUS3=PORTA.3   'A.3 PORTU TUS1 OLARAK TANIMLANDI
Symbol TUS4=PORTA.4   'A.4 PORTU TUS1 OLARAK TANIMLANDI

SYMBOL  LED0=PORTB.0   'B.0 LED0 olarak atandı.
SYMBOL  LED1=PORTB.1   'B.1 LED1 olarak atandı.
SYMBOL  LED2=PORTB.2   'B.2 LED0 olarak atandı.
SYMBOL  LED3=PORTB.3   'B.3 LED1 olarak atandı.
SYMBOL  LED4=PORTB.4   'B.4 LED0 olarak atandı.
SYMBOL  LED5=PORTB.5   'B.5 LED1 olarak atandı.
SYMBOL  LED6=PORTB.6   'B.6 LED0 olarak atandı.
SYMBOL  LED7=PORTB.7   'B.7 LED1 olarak atandı.

BUTON_KONTROL:
   IF TUS0=1 THEN     '0 PORT KONTROL
       HIGH led0
   ELSE
       LOW  LED0
   ENDIF
 
   if tus1=1 then     '1 PORT KONTROL
       high  led1
   else
       low led1
   endif
   if tus2=1 then     '2 PORT KONTROL
       high  led2
   else
       low led2
   endif
   if tus3=1 then     '3 PORT KONTROL
       high  led3
   else
       low led3
   endif    
   if tus4=1 then     '4 PORT KONTROL
       high  led4
   else
       low led4
   endif
   
       
  goto BUTON_KONTROL
END


Böyle bir programa sahibim portadaki butonlara basıldığında portbdeki ledleri çalıştıran bir devre
Buton programları hakkında bilgi almak istiyorum amaçım kendi PLC cihazımı yapmak ancak butonlarla çıkışları nasıl kilitlerim ve kilidi çözerim onun hakkında bir mantık göremedim

Yani butona basacağım led yanacak tekrar bastığımda sönecek
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Logan - 29 Ekim 2007, 15:40:40
@mert3162, "TOGGLE" komutunu dene ;)



if porta.0=1 then
toggle portb.0
endif
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mert3162 - 29 Ekim 2007, 18:05:36
Alıntı yapılan: "Logan"@mert3162, "TOGGLE" komutunu dene ;)



if porta.0=1 then
toggle portb.0
endif
Hocam On Off işlemi için güzel oldu ancak buton ark yapıyor hemde proteusta

Buton arkını nasıl önlerim
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mert3162 - 31 Ekim 2007, 03:55:19
Pause 50 yazmak pratikte çözüm olabiliyor ancak proteus gibi similatörlerde deniyorsanız biraz saçma çalışabiliyor.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mustafa_cmbz - 31 Ekim 2007, 17:27:07
krıstal değerini 4mhz yaparsanız fark edecektir D:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kafa1500 - 31 Ekim 2007, 18:36:42
Selamlar arkadaşlar; TV kumandasının herhangi bir tuşunu kullanarak (örneğin açma-kapama tuşu) basit bir devre yapmaya çalışıyorum. Alıcıda F628 ve TK19 ir alıcı kullanmayı düşünüyorum. Aklıma takılan birkaç soru var.
Galiba kumandanın IR protokolünü bilmek gerekiyor, bunu nasıl öğrenebilirim? girder programına biraz baktım, tuşa basıldığında tuşun kodu görünüyor. Acaba bunu kullanabilir miyim? Kumandanın baud rate'i önemli mi?

Birde ETE hocanın picbasic derslerindeki seri verici-alıcı uygulamasına baktım, notları okudum. Ancak anlayamadığım yerler var. Mesela
Verici kodunda;
      IF TUSA=0 THEN
         VER=88

88'in anlamı nedir?
Sorularım baltaca olabilir ama kusura bakmayın.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Elektroemre - 31 Ekim 2007, 20:27:47
Alıntı yapılan: "kafa1500"Selamlar arkadaşlar; TV kumandasının herhangi bir tuşunu kullanarak (örneğin açma-kapama tuşu) basit bir devre yapmaya çalışıyorum. Alıcıda F628 ve TK19 ir alıcı kullanmayı düşünüyorum. Aklıma takılan birkaç soru var.
Galiba kumandanın IR protokolünü bilmek gerekiyor, bunu nasıl öğrenebilirim? girder programına biraz baktım, tuşa basıldığında tuşun kodu görünüyor. Acaba bunu kullanabilir miyim? Kumandanın baud rate'i önemli mi?

Birde ETE hocanın picbasic derslerindeki seri verici-alıcı uygulamasına baktım, notları okudum. Ancak anlayamadığım yerler var. Mesela
Verici kodunda;
      IF TUSA=0 THEN
         VER=88

88'in anlamı nedir?
Sorularım baltaca olabilir ama kusura bakmayın.

Orada ETE hocanın örneğinde " 88 " A tuşuna atanmış herhangi bir değerdir.Yani A Tuşuna basınca gönderici 88 kodunu karşıya gönderiyor.Alıcı 88 'i bilgisini alınca A Tuşuna basıldığını anlıyor.
Yani sen oraya 111 gibi bir değer yazarsan ve alıcının kodunda da A tuşunu kodunun 111 olduğunu yazınca yine aynı şey olur.
Kısacası onun bir özelliği yok.

Bu sayede alıcı hangi tuşa bastığımızı anlıyor ve ona göre gereken görevi yerine getiriyor.;)

Saygılar...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: The_Daywalker - 05 Kasım 2007, 00:28:09
herkese merhaba ben pic16f84 entegresinin programını yazmak için ona ait komut setlerini kullanıyorum ama internette gezerken şunu fark ettim pic basic pro ile yazılan program çok kolay ve çok kısa olduğunu gördüm mesela zaman geciktirme programcıkları gibi ben şimdi iki pic ile seri iletişim ve ayrıcada ır göz ile pic arası iletişim yapacağımda ben bunların programlarını yazarken picbasicproyumu kullanayım veya ben bunu picbasicde nasıl yapabilirim veya komut setiyle nasıl yapabilirim zamanınızı ayırıp beni dinlediğiniz için teşekkürler ve yardımlarını bekliyorum herkese kolay gelsin
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: omckomu08 - 13 Kasım 2007, 22:11:23
Arkadaşım aşağıdaki kodları benim için proton plus da derleybilir misin. Benim derleyici de sorun var olmuyor bi türlü. Sanırım sorun ON_INTERRUPT data_al da çıkıyorr .





include "PROTON_4.INC" 'LCD DECLERASYONU BUNUN IÇINDE
include "modedefs.bas"
DEVICE 16F877

dim SERDATA[69] as byte
dim LCD_Data[42] as byte
Dim adress As word
Dim refresh_time As Byte
Dim i As Byte
Dim satir As Byte
Dim not_sayac As Byte
Dim nokta As Byte
nokta = 14


CONFIG HS_OSC, WDT_OFF, PWRTE_OFF, BODEN_OFF, LVP_OFF, CP_OFF, DEBUG_OFF
DEFINE XTAL 4
ALL_DIGITAL = True
PORTB_PULLUPS = OFF
option_reg=%11000000
DECLARE FSR_CONTEXT_SAVE = ON
ON_INTERRUPT data_al

ADCON1 = 7
INPUT PORTC.7 'RX
input portd 'LED
output portd.1
output portd.2
output portd.3
input portb.0 'Hardware Interrupt için

Symbol GIE=INTCON.7 'Global Interrupt Enable bit
symbol peie=intcon.6 'Peripheral Interrupt Enable bit
symbol t0ie=intcon.5 'TMR0 Overflow Interrupt Enable bit
symbol inte=intcon.4 'RB0/INT External Interrupt Enable bit
symbol rbie=intcon.3 'RB Port Change Interrupt Enable bit
symbol t0if=intcon.2 'TMR0 Overflow Interrupt Flag bit
symbol intf=intcon.1 'RB0/INT External Interrupt Flag bit
symbol rbif=intcon.0 'RB Port Change Interrupt Flag bit


HSERIAL_BAUD = 2400 'BAUD RATE 1200
HSERIAL_RCSTA = %10010000 'SERIALPORT AÇIK VE CONTINUOUS RECEIVER
HSERIAL_TXSTA = %00100000 '
HSERIAL_CLEAR = ON 'RECEIVER DAN ÖNCE BUFFER I TEMIZLER

DECLARE SDA_PIN PORTC.4 'I2C DATA PIN
DECLARE SCL_PIN PORTC.3 'I2C CLOCK PIN
DECLARE SLOW_BUS OFF 'I2C AT 400KHz

Dim sayac As Byte
Dim a As Byte
Dim b As Byte
Dim d As Byte
Dim busout_adress As word
busout_adress = 0
adress = 0
low portd.2
low portd.3
low portd.1
delayms 1500
input portd.7
input portd.6
input portd.4
input portd.5
delayms 10
Print at; 1, 1, ""
Print at; 2, 1, ""

delayms 10
print $FE,$68,0,0,12,4,4,4,14,0 'Adresi 5,küçük ı
delayms 10
print $FE,$48,14,14,17,16,22,17,14,0 'Adresi 1,büyük Ğ
delayms 10
print $FE,$50,14,0,15,17,15,1,15,0 'adresi 2,küçük ğ
delayms 10
print $FE,$58,0,10,0,17,17,17,14,0 'Adresi 3, Küçük ü
delayms 10
print $FE,$60,0,14,16,14,1,30,12,0 'Adresi 4, Küçük s
delayms 10
print $FE,$70,10,0,14,17,17,17,14,0 'Adresi 6,küçük Ö
delayms 10
print $FE,$78,14,16,16,17,14,4,12,0 'Adresi 7,Küçük ç
delayms 10

input portd.6
output portd.7
output portd.4
output portd.5

Print at; 1, 1, " This Project was made by "
Print at; 2, 1, " Tolgahan ATALAY & Erdal DEMiRCAN "
Print at; 3, 1, " and developed by "
Print at; 4, 1, " Kahraman ZAiM "
delayms 2000

GoSub ekrani_temizle

INTCON=%00000000
GoTo EEPROM

'==============Data Alma Rutini (interrupt aldığında bu rutine gelecek)===================================

data_al:

While GIE = 1
GIE = 0
Wend
intf = 0
low portd.2
low portd.3
busout_adress = 0
high portd.1
GoSub ekrani_temizle
input portd.6
output portd.7
output portd.4
output portd.5
Print at; 1, 1, "Veri Aliniyor."

yeni_data_al:

For sayac = 0 To 68
SERDATA [sayac] = " "
Next
hrsin wait("|||"),str SERDATA

Print at; 1, nokta, "."

If nokta = 41 Then
nokta = 14
GoSub ekrani_temizle
input portd.6
output portd.4
output portd.7
output portd.5
delayms 10
Print at; 1, 1, "Veri Aliniyor."
End If

nokta = nokta + 1

For sayac = 0 To 68
if SERDATA[sayac]<>"|" THEN
a=SERDATA[sayac]


If a = 192 Then 'Paket sonu
GoTo yeni_data_al
End If
bstart
busout $A0,busout_adress,[a]
bstop
delayms 10
busout_adress = busout_adress + 1

If a = 193 Then
adress = 0
GoTo EEPROM
End If
End If
Next

GoSub ekrani_temizle
input portd.4
output portd.6
output portd.7
output portd.5
delayms 10
Print at; 1, 1, "VERI ALIMINDA HATA OLUSTU!!!"
INTCON=%00000000
inte = 1 'RB0/INT External Interrupt Enable bit
peie = 1 'Peripheral Interrupt Enable bit
GIE = 1 'Global Interrupt Enable bit
Loop:
asm
nop
nop
nop
nop
endasm
goto loop


EEPROM:

busin $A1,0,[a]
If a = "$" Then
high portd.2
high portd.3
Else
low portd.2
low portd.3
End If


ilk_ekran:
INTCON=%00000000
INPUT PORTC.7 'RX
low portd.1
input portb.0
inte = 1 'RB0/INT External Interrupt Enable bit
peie = 1 'Peripheral Interrupt Enable bit
GIE = 1 'Global Interrupt Enable bit
adress = 1
nokta = 15
'=======================Ekrana yazma rutni===============================
'============Birinci satir========================================

GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
If adress = 1 Then
refresh_time=SERDATA[a]
End If
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_1
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_1

End If

if SERDATA[a]=193 THEN
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_1:

GoSub lcddata_space
GoSub filtre

input portd.6
output portd.7
output portd.4
output portd.5
delayms 10
Print at; 1, 1, Str; LCD_Data \ 40


'============Ikinci satir========================================

inner_loop:

GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_2
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_2

End If

if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_2:
GoSub lcddata_space
GoSub filtre

input portd.6
output portd.7
output portd.4
output portd.5
delayms 10
Print at; 2, 1, Str; LCD_Data \ 40


'============Üçüncü satir========================================

GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_3
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_3

End If

if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_3:
GoSub lcddata_space
GoSub filtre

input portd.7
output portd.6
output portd.4
output portd.5
delayms 10
Print at; 1, 1, Str; LCD_Data \ 40

'============Dördüncü satir========================================
GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_4
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_4

End If


if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_4:
GoSub lcddata_space
GoSub filtre

input portd.7
output portd.6
output portd.4
output portd.5
delayms 10
Print at; 2, 1, Str; LCD_Data \ 40

'============Besinci satir========================================
GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_5
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_5

End If

if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_5:
GoSub lcddata_space
GoSub filtre

input portd.4
output portd.6
output portd.7
output portd.5
delayms 10
Print at; 1, 1, Str; LCD_Data \ 40

'============Altinci satir========================================
GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_6
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_6

End If

if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_6:
GoSub lcddata_space
GoSub filtre

input portd.4
output portd.6
output portd.7
output portd.5
delayms 10
Print at; 2, 1, Str; LCD_Data \ 40

'============Yedinci satir========================================
GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_7
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_7

End If

if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_7:
GoSub lcddata_space
GoSub filtre

input portd.5
output portd.6
output portd.7
output portd.4
delayms 10
Print at; 1, 1, Str; LCD_Data \ 40

'============Sekizinci satir========================================
GoSub serdata_space

For a = 0 To 41
busin $A1,adress,[SERDATA[a]]
adress = adress + 1
if SERDATA[a]=13 then
GoTo Satir_8
End If

if SERDATA[a]>200 then
GoSub turkce_karakter
End If

if SERDATA[a]=126 then
SERDATA [a] = " "
For not_sayac = 0 To 41
busin $A1,adress,[LCD_Data[not_sayac]]
adress = adress + 1
if LCD_Data[not_sayac]=13 then break
Next

b = (40 - not_sayac) + 1
For i = 41 To b Step -1
SERDATA=LCD_Data[not_sayac]
not_sayac = not_sayac - 1
Next

GoTo Satir_8

End If

if SERDATA[a]=193 THEN
For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle
GoTo ilk_ekran
End If
Next

Satir_8:
GoSub lcddata_space
GoSub filtre

input portd.5
output portd.6
output portd.7
output portd.4
delayms 10
Print at; 2, 1, Str; LCD_Data \ 40

For i = 1 To refresh_time
GoSub delay_500ms
Next
GoSub ekrani_temizle_1
GoTo inner_loop

End



ekrani_temizle:
input portd.6
input portd.7
input portd.4
input portd.5
PRINT $FE , 1 : DELAYMS 30
Return

ekrani_temizle_1:
input portd.6
output portd.7
output portd.4
output portd.5
Print at; 2, 1, " " 'birinci satırı silmiyor sadece ikinci satıra boşluk karakteri dplduruyor
input portd.7
output portd.6
output portd.4
output portd.5
PRINT $FE , 1 : DELAYMS 30
input portd.4
output portd.6
output portd.7
output portd.5
PRINT $FE , 1 : DELAYMS 30
input portd.5
output portd.6
output portd.7
output portd.4
PRINT $FE , 1 : DELAYMS 30
Return

delay_500ms:
delayms 1000
Return

turkce_karakter:
if SERDATA[a]=253 then 'LCD karakter eşleme
SERDATA [a] = 5
End If
if SERDATA[a]=208 then
SERDATA [a] = 1
End If
if SERDATA[a]=240 then
SERDATA [a] = 2
End If
if SERDATA[a]=252 then
SERDATA [a] = 3
End If
if SERDATA[a]=254 then
SERDATA [a] = 4
End If
if SERDATA[a]=246 then
SERDATA [a] = 6
End If
if SERDATA[a]=231 then
SERDATA [a] = 7
End If

Return

serdata_space:
For a = 0 To 41
SERDATA [a] = 32
Next
Return

lcddata_space:
For a = 0 To 41
LCD_Data [a] = 32
Next
Return

filtre:
b = 0
For a = 1 To 41
if SERDATA[a]<>10 and SERDATA[a]<>193 and SERDATA[a]<>13 then
LCD_Data=SERDATA[a]
b = b + 1
End If
Next
Return
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: aslan_korhan - 13 Kasım 2007, 22:16:19
Senin sorun derleyicide gözükmüyor.
Derlemeyi bende denedim ama baya hatta mesajı verdi. Yani senin sorun yazılımda görünüyor...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: omckomu08 - 13 Kasım 2007, 22:27:09
abi hangi sürümü kullanıyosun bana söylermisin indireyim

ya da bildiğin link var mı
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: aslan_korhan - 14 Kasım 2007, 00:11:06
Proton 2 programdan oluşuyor yani tek programı kurmak yetmiyor.
Forumda var biryerlerde bende buradan inirmiştim istersen bir arat.
Başlık: selamlar
Gönderen: sonbinary79 - 25 Kasım 2007, 23:40:33
picprojeup@gmail.com
merhabalar arkadaşlar ben yeni üye oldum. bu ders notlarını indirmek için önce  picprojeup@gmail.com   a girmem gerekiyor sanırım. nerden erişebilirim bu adrese. bu kısmı anlamadım. biri bana yardımcı olursa çok sevinirim...
Başlık: Re: selamlar
Gönderen: ilker_32 - 26 Kasım 2007, 02:30:59
Alıntı yapılan: "sonbinary79"picprojeup@gmail.com
merhabalar arkadaşlar ben yeni üye oldum. bu ders notlarını indirmek için önce  picprojeup@gmail.com   a girmem gerekiyor sanırım. nerden erişebilirim bu adrese. bu kısmı anlamadım. biri bana yardımcı olursa çok sevinirim...

Öncelikle "Hoş geldiniz." sorunuza gelince bunu ilk defa duyuyorum...

http://picproje.4shared.com/

şifre : " www.picproje.org "  --> olmasın,

dediğiniz yer burasımıdır. Eğer pic basic ders notlarını arıyorsan sadece bu başlık altı ile yetinme diğer başlıklarda da ara en önemlisi "Pic Basic Pro" altında ara eğer eski linkler ölmüş ise upload edelim...

Kolay gelsin...
Başlık: teşekkürler
Gönderen: sonbinary79 - 26 Kasım 2007, 14:03:42
çok teşekkür ediyorum ilker_32.  verdiğin linkten ders notlarına eriştim. emeği geçen bütün arkadaşlara teşekkür ediyorum. paylaşılan bilginin değerinin artacağını herkes bilir. paylaşımlara devam....
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sonbinary79 - 27 Kasım 2007, 01:04:17
ete bey, özcelikle bu picbasic anlatımları için size teşekkür ediyorum. gerçekten müthiş bir iş yapmışsınız ve değerli bilgiler sunmuşsunuz bizlere. yalnız burda şunu rica ediyorum. diğer arkadaşlarda  bildiklerini buradan yazarlarsa ve benim  anlayamadıklarımı cevaplarlarsa sevnirim. ders 5 te adc kullanarak sıcaklık okumayı anlatmışsınız. yalnız aşağıdaki gibi varsayalım ki kelimeleri kullanınca bunları anlamakta epey güçlük çektim ve de anlayamadım. bunun yerine  gerçek değerleri yazamazmısınız? ders 5 te ki gibi sade basit ntc yi 16f877 e bağlayarak adc ve lcd kullanımı ile bizim gerçekte yapabileceğimiz ( elemanların değerlerini de vererek) bir şema ve yazılım koyma şansınız varsa yaptığınız bu müthiş işe bir güzellik daha katmış olacaksınız.
Aşağıdaki "50 derecede okunan ADC değeri 256 ve 0 derecede okunan 146 olduğundan " cümlesini anlamadım. nasıl hesapladınız 256 yı ve 146 yı daha açık hesap yaparsanız çok sevinirim. Kusura bakmayın bizde böyle öğreneceğiz bunları... teşekkürler yardımlarınız için. cevabınızı ilgiyle bekliyorum. bilen arkadaşlar da yardımcı olurlarsa sevinirim...

"
BASLA:
     ADCIN 0,HAM  '0 nolu kanaldan Analog değeri oku ve RAW değişkenine aktar.
BAK:  IF ADCON0.2=1 THEN BAK 'Çevirme işlemi tamamlanınca Adcon0.2=0 olacak.
     lcdout $FE,1,"HAM =",# HAM
'50 derecede okunan ADC değeri 256 ve 0 derecede okunan 146 olduğundan
'0-50 derece arası okunan değer farkı 110 dur (256-146) . O halde her bir derece
'için okunması gereken değer 110/50=2,2 olacaktır. Pic e uyarlamak için
'okunan değeri 10 ile çarpıp 22 ye bölersek direkt sıcaklığı bulmuş olacağız.
‘ondalık değeri de hesaplamak için 10 yerine 100 ile çarpıyoruz.
     ISI=((HAM-146)*100)/22
     onda=ISI//10
     ISI=ISI/10
     LCDOUT $FE,$C0,"     ISI=",#ISI,",",#onda,"`C"
     pause 500
     goto basla  
"
Başlık: yardım lütfen!
Gönderen: sonbinary79 - 27 Kasım 2007, 23:24:02
arkadaşlar yazdıklarımı cevaplayacak biri varsa lütfen yazsın. 877 ile ntc , adc ve lcd kullanarak termometre yapmak istiyorum. bunun için şema ve basic yazılımı arıyorum. yardımcı olacak bir arkadaş arıyorum.
anolog girişten ham verinin okunup dönüştürülme formülünü gerçek değerlerle açıklayabilecek bir arkadaş varsa çok sevinirim. ders 5 teki yukarıda yazdığım varsayılarak yapılmış değerleri anlayamadım.
merakla bekliyorum...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 28 Kasım 2007, 13:43:48
ETE hocanın yazılımını tam olarak incelemedim ama kısaca ;

f877 nin analog kanallarının max giriş gerilimi 5V tur.Bu denetleyici  ADCON komutu ile analog/digital konversiyon sonucunu bizim verdiğimiz bir değişkene atar.Burada HAM değişkeni sanırım onu ifade ediyor.
Analog giriş gerilimi 5V ise konversiyon sonucu değişkenimizin alacağı değer 1023 olacaktır(10 bit ADC).Biz bu 1023 değerini alıp ekranda görmek istediğimiz şekle çeviririz.
Lcd de; gelen 5V u gösteren bir voltmetre olarak tasarım yaptığımızı düşünecek olursak;
5000/1023=4.88mV gibi bir değer çıkar ki bu değer ile okunan ADCON değerini yani ham değeri çarpıp lcd ye verirsek
A= 4.88 * HAM
print A

0-5V arası çalışan bir voltmetre yapmış oluruz.

Sıcaklık devresinden atıyorum 0-200C de gelen gerilim 200C de 5V ise ekrana 200 derece olarak yazdırmak için
200/1023=0.195

A=0.195 * HAM
print A
olacaktır...
  Kısaca analog girişe ntc den gelen mV yada V her ne ise ve derece başına ne kadar mV lik bir değişim oluyor vede max skala değeri. Bunların bilinip yukarıdaki çevrim işleminin ona göre formülize edilmesi gerekir.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sonbinary79 - 30 Kasım 2007, 18:34:19
teşekkür ediyorum.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sonbinary79 - 30 Kasım 2007, 18:41:43
kıdemli arkadaş teşekkür ediyorum paylaşımın için. bu işi biliyorsun gördüğüm kadarıyla. elinde var mı hazır termometre yazılımı. böyle parça parça konuşacağımıza en son yazılım ne şekilde olur. varsa elinde yazılım ve donanım yollar mısın bana. msn adresim  sonbinary@hotmail.com
ya da burdan bana ulaştırırsan sevinirim.
başka arkadaşlarda yardımcı olabilir...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 30 Kasım 2007, 20:55:19
ds18b20 ile yapılmış bir uygulama var elimde ...yarın göndereyim mail adresine..
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 23 Ocak 2008, 15:53:12
arkadaşlar çıldırmak üzreyim az kaldı
daha önce yaşadığım problem tekrar oldu ve çözemiyorum
şöyleki iş yarindeki pc den mcs2300 ü kaldırmışlar (haftada bir gelince öyle oluyo tabi :) ) bugün yeniden kurdum pbp 2.47 nin yerini gösterdim ama mcs compileri görmedi  compiler not installed yazısı veriyor. acaba pc den kaldırırken uygun kaldırmadıkları içinmi oluyor kafayı yiycem nedir bu sorun

kurulum şeklim:
1 mcs 2300 ü c ye kur
2 pbp 2.47 yi c:\programme files\mcs içine kopyala
3 microcodestudio yu aç
4 compiler and editor optionsdan compiler (pbp 2.47)nin yerini göster
5 help menusunden abauta gir ve compiler is pbp 3.47 yazısını gör

5. basamakta ben compiler not installed yazısını görüyorum
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ahmet2004 - 23 Ocak 2008, 16:16:59
Pbp 2.47 yi görmesi için MCSE'den Find ayarlar kısmından

Automatically butonuna bas kendi otomatik bulsun.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 24 Ocak 2008, 12:42:34
:) ne yazık ki o şekildede olmuyor
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 29 Ocak 2008, 17:14:26
pbp'da 4 satır nümerik ekran sürerken üçüncü ve dördüncü satırrlara karakter yazdırmak için gereken kod hangisi?
mesela 2. satıra bişe yazmak için lcdout $C0, "......" gibi bir kaomut yazıyoruz 3. ve 4. satır için $C0 yerina ne yazılmalı?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 29 Ocak 2008, 19:04:03
$FE, $80   1.satır (1.satır 2.karakter=$81 , 1.satır 3.karakter=$82)
$FE, $C0  2.satır (2.satır 2.karakter=$C1 , 2.satır 3.karakter=$C2)
$FE, $94   3.satır (3.satır 2.karakter=$95 , 3.satır 3.karakter=$96)
$FE, $D4  4.satır (4.satır 2.karakter=$D5 , 4.satır 3.karakter=$D6)

şeklinde olması lazım.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: avignon - 30 Ocak 2008, 23:10:04
ya bu linkteki şifreyi giriyorum yanlış diyor. Yardımcı olabilirmisiniz? indiren arkadaşlar varsa avignon7@hotmail.com adresine gönderebilirmisiniz?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: canbulut - 25 Şubat 2008, 23:09:45
arkadaslar adcyi şöyle sade bir dille anlatabilecek olan varmı ete hocamızın notlarıını okudum ancak anlayamadım neden 256 ile çarptığımızı falan anlayamadım. :oops:
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: _md_ - 05 Nisan 2008, 20:19:04
merhaba arkadaşlar bende pbp'ya yeni başladım LCD ekranda yazı kaydırmak için hangi komutu nasıl kullanıyoruz yardımcı olabilseniz sevinirim.


Birde ADC girişine uguladığımız 0-5V ıcın ben 1 volt geldiğnde ekranda o guzksun 5 volt geldıgınde 400 gozuksun ıstıyorum bunu nasıl yapabılırım?
Başlık: sht-11
Gönderen: avignon - 05 Mayıs 2008, 20:53:36


RUTHESAP:
          ISI=ISI1*10+ISI2
          p1=(26542-(54722**ham+ham))**ham-40    
          P2=655+(HAM*5)+(HAM**15917)      
          P3=(P2**(ISI*10+2480))-(P2**2730)+P1   ' kompanse edilmiş değer
          U1=p3/10:U2=p3//10
          If ham>3710 Then
             u1=0:U2=0
             GoTo SENSORYOK
          EndIf  
          Return


Yukarıdaki p1 p2 ve p3 değerleri nasıl bulunduğunu açıklayacak bir insan evladı varmı? 26542 sayısı nedir ne işe yarar neden 26542?
Başlık: AYDEDEMİYORUM.......
Gönderen: enestoker - 19 Mayıs 2008, 17:57:16
merhaba arkadaşlar.
pic basic öğrenmeye yeni başlıyorum. yaptığım bi projede kaydetme işini beceremedim. yardımcı olursanız sevinirim.
proje otopartaki araçları sayan ve 30 gün boyunca kaydeden devre. yaptığım programda saat var. araç girişi için bir buton araç çıkışı içinde bir buton kullandım. buraya kadar herşey yolunda. fakat öyle birkomut satırı eklemeleyimki saat 00:00:00 olduğunda otoparka giren taplam araç sayısını kaydetmeliyim. ve okuma butonuna basınca lcdnin 4. satırında görebilmeliyim.
şimdidem teşekkür ederim.

yaptığım ekide göndereyim hatalarımı söyleyin ltf.
buradaki c saat dakika ve saniye sıfır olunca 1er artıyor. yani 3 artmış oluyor.
IF C//3=0 THEN KAYIT
IF PORTC.2=1 THEN OKU




OKU:

FOR E=1 TO 30
READ E,B
if guncelle=1 then
LCDOUT $FE,$D4,#E,".GuN ","TOPLAM ",B," ARAC"
PAUSE 500
guncelle=0
ENDIF
NEXT E
goto ark_sondur



KAYIT:
WRITE E,B
PAUSE 10
E=E+1
IF E>=30 THEN
E=1
ENDIF
goto ark_sondur :(
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: valentino000 - 27 Mayıs 2008, 19:55:13
s.a abiler bana yardım edicek birisi lazım proteustan anlayan.0-9 ileri sayan bir devre lazım yardım ederseniz seviniirm
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 05 Haziran 2008, 20:21:23
iyi çalışmalar arkadaşlar
16 f 877a için bi program yazdım şimdide bunu 18f452 ye transfer etmek istiyorum ne yapmnalıyım????? :(
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 08 Ağustos 2008, 17:26:23
zorluk yaşamamak için kodları proton'a aktarıp fuses için basitçe


Device 18F452
XTAL = 20
@CONFIG_REQ
' @__CONFIG config1h, OSCS_OFF_1 & HSPLL_OSC_1
@__CONFIG config1h, OSCS_OFF_1 & HS_OSC_1
@__CONFIG config2l, BOR_ON_2 & BORV_45_2 & PWRT_ON_2
@__CONFIG config2h, WDT_OFF_2 & WDTPS_128_2
@__CONFIG config3h, CCP2MX_ON_3
@__CONFIG config4l, STVR_OFF_4 & LVP_OFF_4 & DEBUG_OFF_4
@__CONFIG config5l, CP0_ON_5 & CP1_ON_5 & CP2_ON_5 & CP3_ON_5
@__CONFIG config5h, CPB_ON_5
@__CONFIG config6h, WRTC_ON_6
' @__CONFIG CONFIG3H, MCLRE_OFF_2


yazdığın zaman (gereken değişiklik varsa onları da ayarlayıp) işi bitirirsin.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: okanbugdayci - 25 Ağustos 2008, 10:03:13
yardımcı oldğunuz için teşekkürler arkadaşlar peki basicte aşağıdaki gibi bir kalıp gördünüz mü yada kullanan var mı
   
if li kısımdaki yazıma dikkat. bu tam olarak ne anlama geliyor bilen varsa çok acil bi şekilde yardımcı olursa sevinirim

          FOR DIZIN=0 TO 7
          IF PALS[DIZIN]< 100 THEN DBIT.0[DIZIN]=0
           NEXT DIZIN
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Tagli - 25 Ağustos 2008, 10:34:44
Emin değilim ama burda sanırım PALS bir dizi değişken olarak tanımlanmış. DBIT ise tek bir byte değişkeni ve bunun "dizin"inci bitine erişilmeye çalışılıyor. Normalde DBIT.n gibi bir ifade n. bite erişir. Bunun mantığını anlamadım ama deneyimlerime dayanarak söylüyorum o kısım, yani DBIT.0[DIZIN], sanki DBIT.(0+DIZIN) gibi çalışıyor. Ben olsam DBIT.[DIZIN] yazardım ama o zaman hata veriyor.

Özetlersek, n = 0'dan 7'ye kadar dönerek, eğer PALS[n] < 100 ise DBIT'in n. bitini sıfırla demek istiyor olsa gerek.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: okanbugdayci - 25 Ağustos 2008, 11:11:20
Alıntı yapılan: "Tagli"Emin değilim ama burda sanırım PALS bir dizi değişken olarak tanımlanmış. DBIT ise tek bir byte değişkeni ve bunun "dizin"inci bitine erişilmeye çalışılıyor. Normalde DBIT.n gibi bir ifade n. bite erişir. Bunun mantığını anlamadım ama deneyimlerime dayanarak söylüyorum o kısım, yani DBIT.0[DIZIN], sanki DBIT.(0+DIZIN) gibi çalışıyor. Ben olsam DBIT.[DIZIN] yazardım ama o zaman hata veriyor.

Özetlersek, n = 0'dan 7'ye kadar dönerek, eğer PALS[n] < 100 ise DBIT'in n. bitini sıfırla demek istiyor olsa gerek.

DBIT.(0+DIZIN) bu kısmı mantıklı geldi bana ama asıl kafamı karıştıran PALS[DIZIN] < 100 kısmı pals değişkeni byte olarak tanımlanmış eğer DIZIN PALS in bitini temsil etme gibi bir durum varsa burada konrol edilen   100 gibi bir sayı 1 bitlik değil yani bit içinde böyle bir sayıyı bulmayız ama bu değişken şu şekilde tanımlanmış   PALS VAR BYTE(13)   oradaki 13 ne demek olyor acaba PALS0 PALS1 PALS2....PALS12 diye 13 adet değişken  mi tanımlanıoo?
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Tagli - 25 Ağustos 2008, 11:54:16
Evet öyle, zaten ilk mesajımda "dizi değişken" demiştim. "DIZIN" ifadesi PALS'ın bitini değil dizi numarasını temsil ediyor. Gerçi tanımın PALS VAR BYTE[13] (köşeli parantez ile) olması gerekir diye biliyorum. Ayrıca eğer başka bir yerde kullanılmıyorsa 13 olmasına da gerek yok sanırım, 8 olsa yeter bu döngü için, tabi kodun tamamını görmeden kesin birşey diyemem, belki 8'den 12'ye kadarını da başka yerde kullanıyordur.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 25 Ağustos 2008, 11:56:02
Dim pals [8]  As Byte (proton basic için)
şeklinde bir dizin tanımlanmış olması gerekli daha öncesinden..

if pals(dizin)<100

ifadesinde pals[0] dan pals[7] ye kadar 8 byte'ı 100 değeri ile karşılaştırıyor.Ama;
IF PALS[DIZIN]< 100 THEN DBIT.0[DIZIN]=0 ifadesinde

DBIT.0[DIZIN]=0 kısmında bir hata oldugunu düşünüyorum.DBIT mutlaka byte olarak tanımlanmıştır.Dolayısı ile bu kısmın

DBIT.[DIZIN]=0
şeklinde olmalı ki örneğin DBIT.[0]=0 (DBIT byte'nın 0.biti 0 olsun)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Tagli - 25 Ağustos 2008, 12:09:19
Alıntı yapılan: "dombilik"DBIT.0[DIZIN]=0 kısmında bir hata oldugunu düşünüyorum.DBIT mutlaka byte olarak tanımlanmıştır.Dolayısı ile bu kısmın

DBIT.[DIZIN]=0
şeklinde olmalı ki örneğin DBIT.[0]=0 (DBIT byte'nın 0.biti 0 olsun)

Kesinlikle katılıyorum, bence de mantıklı olan bu ama PicBasic Pro 2.47 bu şekilde kabul etmiyor. DBIT.0[DIZIN] olarak istiyor, ve sanki DBIT.[0+DIZIN] gibi işleme sokuyor (0'ı 1 yaparak falan da denemiştim). Saçma ama elimizden birşey gelmez, adamlar böyle yazmış, biz de kurala uymak zorundayız...
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: okanbugdayci - 25 Ağustos 2008, 12:45:46
arkadaşlar çok sağol ilgilendiğiniz için olayı anladım yanlız bi sorum daha olacak şimdi ben pulsin komutunu kullanıyorum pbp de ama ben bu komutun tam olarak çalışmasını anlamadım elimdeki kaynaklarda çok açık yazmıyor

şimdi komutun kalıbı "pulsin pin,konum,değişken" şimdi low pals genişliğine göre ölçüm yapıyorum kaynakda şöyle bir şey diyor "4 mhz lik osc kullanılırsa pals genişliği 10us lik artışlarla ölçülür " diyor bu tam olarak ne demek oluyor mesela benim gönderdiğim sinyalin low pals genişliği 288 us olsun bunu 10,20,30.....280,290 diye artırarak pals bitene kadar mı ölçüyor  değişken içine nasıl bir değer atıyor yani bu değer pals genişliğinin us cinsinden aynı değeri mi??
Başlık: yardım 16f877
Gönderen: hp8920 - 04 Ekim 2008, 05:49:34
arkadaşlar selam
öncelikle sitede yeni oldugumu belirtmek isterim
sitede gerçekten çok güzel konular var emeği geçen arkadaşlara teşekkürler sorunumla ilgili birşeyler bulamadım

ornek:
gigh porta.2
pause 100
high porta.3
pause 100
goto örnek

A portunu çıkış olarak kullanmam gerekiyor fakat örnekteki işlemde portların her ikisininde haih da kalması gerekirken biri high da iken diyeri low a düşüyor.
dikkatimi çeken bu sorun ADC si olan pic lerde oluyor 16f84 ve 628 be böyle bi sorun yok.
bu konuda bana yardımcı olursanız sevinirim
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 04 Ekim 2008, 08:39:34
ADC si olan pic lerde (mesela 16F877) analog kanallar PORTA ya konumlandırılmıştır.PORTA hem analog giriş kanalı hemde digital giriş kanalı olarak kullanılabilir tabi bu durumu pic'e belirtmek koşulu ile...

16F877 için konulacak olursak ADCON1 registeri ile bu seçimler yapılır.İstenilen kanallar analog istenilen kanallar digital olarak yönlendirilir.ADCON1 registeri ve kullanımı datasheette mevcut ama kısaca bu registerdeki pcfg0,pcfg1,pcfg2,pcfg3 konfigurasyon bitleri ile
portunu düzenleyebilirsin..
mesela;
ADCON1=7
tüm analog kanallar digital olacaktır.
Kolay gelsin..
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: hp8920 - 04 Ekim 2008, 16:22:48
cevap için teşekkur
16f877 pdf sini epeyce inceledim ama asm bilmedigim için pek bişe anlamadım az önce şu örnegi denedim
'------16f88-------------------------

 adcon1=7
 trisa=%00000000
main:
 high porta2
 high porta3
 pause 100
 low porta2
 low porta3
goto main
'----------------------------------------

bu şekilde bi deneme yaptım fakat sonuç olumsuz
porta3 normal çalışıyor
porta2 anında low a duşuyor
bu arada adcon1=7 olarak denedim adcon1=0 ve adcon1=255 olarak çeşitli denemeler yaptım ama hiçbiri en ufak bi etki yapmadı
A portunu tanımlamayla ilgili bi sorun oldugunu biliyorum am nasıl olacagını bulamadım ayrıca dökümanda bulamadım ASM de bilmiyorum
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 04 Ekim 2008, 17:02:25
Device 16F877
XTAL 20
ADCON1=7
basla:
     High PORTA.2  
     High PORTA.3
     DelayMS 500
     Low PORTA.2
     Low PORTA.3
     DelayMS 500
     GoTo basla


birde böyle dene..High ve Low komutları zaten ilgili pini direk
çıkış olarak atadığı için TRIS yada OUTPUT komutu ile veri yönü
belirtmenede gerek kalmaz..Bu arada PORTA.4 ün "open drain"
yani açık kollektor bağlantısına sahip olduğunuda belirteyim..
Eğer bu pin çıkış olarak kullanılacaksa 4K7 bir direnc ile +5V ye
bağlanmalıdır aksi takdirde çıkıştan "lojik 1" seviyesini alamazsın.

micro code studio da ise;
include "P16F877.inc"
DEFINE OSC 20
ADCON1=7
basla:
     High PORTA.2  
     High PORTA.3
     High PORTA.4
     pause 500
     Low PORTA.2
     Low PORTA.3
     Low PORTA.4
     pause 500
     GoTo basla

işini görecektir sanırım.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: hp8920 - 04 Ekim 2008, 18:08:27
verdiginiz örnekle diyerleri arasında pek far gözukmuyor ama yinede denedim sorun aynı devam ediyo
fakat yeni bi deneme yaptım bu şekilde çalışıyor
---------------------------------------------------
     ADCON1=7
basla:
     portA=00001100
     pause 500
     portA=00000000
     pause 500
     GoTo basla
---------------------------------------------------
bu şekilde kullanmakta programın uzamasına neden olur yani 1 portu high yapmak için tüm portların degerlerini gondermek gerekiyor
açıkçası bu olayı çözmek gerekiyor neden
(porta=00001100) çalışıyorda
(high porta.2,  high porta.3) çalışmıyor
yaptıgım testlerde high porta.2  çalışıyor ardından high porta.3 dedigimizde porta.2 işlevini kaybediyor porta.3 işlevsel duruma geçiyor
yani  1 bit register varmışta tüm a portları için aynı registeri kullanıyormuş gibi
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: hp8920 - 04 Ekim 2008, 19:06:00
soruna bi çozum buldum bu şekilde kullanabiliyorum ama asıl sorun duruyor
---------------------------------------------------------
cikis var byte
TRISA = %00000000
basla:
cikis=0
   cikis.2=1
   cikis.3=1
       porta=cikis
   cikis.2=0
   cikis.3=0
       porta=cikis
goto basla
-------------------------------------------------------------------
bu sekilde kullanabiliyoruz purogram içerisinde a portlarından bini high veya low yapmamız gerekirse şöyle yazmamız gerekiyor
--------------------------------------------------------------
cikis.1=1      'cikis in 1. adresini 1 yap
porta=cikis    'cikis i portA ya aktar
-------------------------------------------------------
enteresan bi durum A portunun 1 pinine işlem yaptırdıgımızda diyer pinlerdeki bilgiler siliniyor A portunun hepsine birden yükledigimizde bi sorun yok
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dombilik - 04 Ekim 2008, 20:32:55
senin daha önce verdiğin örneklerde ;

porta2

tabirini kullanmışssın...doğrusu porta.2 olacak...

mutlaka çalışması lazım biryerlerde bariz bir hata var..
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: hp8920 - 04 Ekim 2008, 20:59:43
ordaki örnekte porta2 senbolik dogru olması gereken porta.2
gerçek uygulamada yazılımda bi sorun yok fakat kesinlikle bahsettigim hata oluşuyor  ayrıca bu yazılımları kendim yapmış oldugum deney bordunda anında deneyebiliyorum ve yukardakileri denedim
zannedersem ADC li PİC lerde A portunu çıkış olarak kullanan olmadı.
PİC12F675   8 bacaklı ADC li ve 6 adet IO portu var A ve B portları olmadıgı icin tüm işlemleri IO port uzerinde yapmak zorundayız birden fazla pini çıkış olarak kullandıgımızda aynı sorun burdada oluşuyor
Başlık: Selamlar
Gönderen: kafa1500 - 09 Kasım 2008, 23:01:06
ETE hocanın derslerinde kopya çekerek 12f675 ve RF modüllü tek kanal alıcı-verici yapmaya çalıştım, nasıl olduysa çalıştı :) Buraya kadar sorun yok.
Şimdi alıcı kısmına ayrıca buton ekleyip alıcıdaki ledi yakıp söndürmeye çalışıyorum, ama doğal olarak çalıştıramadım. Amacım vericiden led yakıldıysa veya söndürüldüyse alıcıdaki butonla tersini yapmak. Nasıl yapabilirim?

@   device  pic12f675, intrc_osc_noclkout, wdt_on, pwrt_on, mclr_off, protect_off

        cmcon = %00000111
        ansel = 0
        OPTION_REG.7=0
        trisio = %000110
        GPIO=0
       
BILGI VAR BYTE
       GIRIS VAR GPIO.2
       LED1 VAR GPIO.0
       TUS VAR GPIO.1
       PAUSE 300
       
BASLA    
  serIN2 GIRIS,396,[WAIT ("OZB"),BILGI]
   IF BILGI=22 then
      TOGGLE LED1
   ENDIF
IF TUS=0 THEN
       TOGGLE LED1
       WHILE TUS=0
       WEND
   ENDIF
      pause 200
      GOTO BASLA

END

(http://img90.imageshack.us/img90/1346/veralhm3.th.jpg) (http://img90.imageshack.us/my.php?image=veralhm3.jpg)(http://img90.imageshack.us/images/thpix.gif) (http://g.imageshack.us/thpix.php)
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kafa1500 - 11 Kasım 2008, 01:10:36
Kesme mi kullanmak gerekir? Arkadaşlar bu konuda yardımınıza ihtiyacım var.
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: kafa1500 - 14 Kasım 2008, 00:30:09
@alayli hocanın başka bir başlıkta yazdığı mesajdan yola çıkarak kodu aşağıdaki şekilde değiştirdim. Sonuçta alıcıdaki buton çalıştı ama önce vericideki butona bir kere basmak gerekiyor. Alıcıdaki butonu bağımsız çalıştıramıyorum. Bu kısmı çözemedim.


@   device  pic12f675, intrc_osc_noclkout, wdt_on, pwrt_on, mclr_off, protect_off
        cmcon=%00000111
        ansel=0
        trisio=%000110
        GPIO=0
       BILGI VAR Byte
       GIRIS VAR GPIO.1
       LED VAR GPIO.0
       TUS VAR GPIO.2
       PAUSE 100        
BASLA:
serIN2 GIRIS,396,50,ZAMAN,[WAIT ("OZB"),BILGI]
   IF BILGI=1 then
   TOGGLE LED
   PAUSE 50
   ENDIF
ZAMAN:
   IF TUS=0 THEN
   TOGGLE LED
   WHILE TUS=0 :WEND
   PAUSE 50
   ENDIF
   goto BASLA
   END
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: temha - 30 Ocak 2009, 11:17:44
arkadaşlar yaklaşık iki üç senedir proğram yazmıyordum biraz paalanmışım herhalde şöyle bir proğram yazmıştım.
TrisB=0

say var byte
dis var byte
say=0
dis=0

basla:
say = say+1
Lookup say, ["68,245,140,164,53,38,6,244,4,36,21,60,20,0,78,64"] ,dis
portb = dis
pause 500
portb=255
pause 100
if say = 16 then
say = 0
endif
goto basla
end
tek displayli sayıcı hex sayıları ve yıldız H ve kare o dahil sayacak şekilde
display anormal bir şekilde yanıpsönüyordu.
aşağıadaki gibi yazdım proğramı problemsiz çalıştı. Pic basic pro kitabımıda kaybettim. Look up komutu yukarıda doğru mu kullanılmış. say ın içindeki değere göre tablodaki değeri di e veriyor değilmi?

trisb=0
portb = 1
basla:
portb=68  '0
pause 500
Portb=255
pause 500
Portb=245 '1
pause 500
portb=255
pause 500
portb=140 '2
pause 500
portb=255
pause 500
portb=164 '3
pause 500
portb=255
pause 500
portb=53  '4
pause 500
portb=255
pause 500
portb=38   '5
pause 500
portb=255
pause 500
portb=6     '6
pause 500
portb=255
pause 500
portb=244    '7
pause 500
portb=255
pause 500
portb=4    ' 8
pause 500
portb=255
pause 500
portb=36    '9
pause 500
portb=255
pause 500
portb=21    'h
pause 500
portb=255
pause 500
portb=60    'o
pause 500
portb=255
pause 500
portb=20    'a
pause 500
portb=255
pause 500
portb=0    ' b
pause 500
portb=255
pause 500
portb=78    ' c
pause 500
portb=255
pause 500
portb=64     'd
pause 500
goto basla
end
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: temha - 31 Ocak 2009, 20:02:33
lookup komutundaki hatamı buldum arkadaşlar çift tırnak koymuşum koymamam gerekiyormuş yanlış olan ["68 doğrusu [68
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Recepg - 30 Mart 2009, 23:02:13
herkese çok teşekkürler..
Başlık: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: selvi - 07 Mayıs 2009, 09:18:22
16F84 CONFIG ayarlari nasil olacak.asagidaki sekilde duzenledim.derleyici hata verdi.
@ DEVICE pic16F84A 'islemci 16F84A
@ DEVICE pic16F84A, WDT_OFF 'Watch Dog timer kapali
@ DEVICE pic16F84A, PWRT_ON 'Power on timer acik
@ DEVICE pic16F84A, PROTECT_OFF 'Kod Protek kapali
@ DEVICE pic16F84A, MCLR_ON 'MCLR pini kullaniliyor.
@ DEVICE pic16F84A, XT_OSC 'Dahili osilatör kullanilmayacak
@ DEVICE pic16F84A, LVP_OFF
@ DEVICE pic16F84A, BOD_OFF
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Zorbey54 - 22 Nisan 2010, 23:06:52
herkese merhaba, model tekne yapıyoruz okulda, kumanda kısmında sorun yaşıyoruz. servoyu kontrol etmek PIC basic pro'da nasıl bir program yazmalıyız? yani kumandanın sağ butununa basılı tuttuğumda tekne sağa dönmeli, butonu bıraktıpımda ise servo orta konumuna gelmeli. Sol yön için de aynı işlem olmalı. yardım ederseniz sevinirim. teşekkürler...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 23 Nisan 2010, 12:03:57
Neden C değilde Pic Basic öğrenmek istiyor insanlar? Bana bunun cevabını verebilecek var mı ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dhan000 - 23 Nisan 2010, 13:33:38
çok çeşitli sebeb sayılabilir mesela öğrenimi daha kolay türkçe döküman çok kullanan/bilen fazla...bu sitede bakınız derleyiciler kısmına picbasic 12000 ileti varken asm 3400 c 2000 lerde...
birde bu konu çok tartışıldı hanği dil diye bunu tekrardan tartışmanın anlamıda yok sitede arama yaparak çok çeşitli cevaplar bulunabilir...umarım bu konuda böyle bir tartışmaya dönmez.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 23 Nisan 2010, 14:14:30
Tartışmaya dönecek değil ama daha güçlü bir dil varken insanların basic ile uğraşmasını anlamıyorum. Türkçe konusuna gelince programcılıkla uğraşan insanların ingilizce bilmesi gerektiğine inanıyorum.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 23 Nisan 2010, 14:33:22
Alıntı yapılan: orhanc - 23 Nisan 2010, 14:14:30
Tartışmaya dönecek değil ama daha güçlü bir dil varken insanların basic ile uğraşmasını anlamıyorum.
Bunlar lüzumsuz sözler. Basic ile yapılan işlerden 21 kişi istihdam edildi ekmek yedi ise ne demek istediğimi anlarsın. Yani, bir şey tamamen kara değildir. Başka bir şey de tamamen ak değildir. İş görüyorsa, üretiyorsa ne ala.

Dil'in tekniği, gücü vs ayrıca tartışılır, çokca da tartışıldı. Forumda bolca bulabilirsin. Sonuçları da belli. Zayıf görülen veya zayıf olan bir dili o zaman tarihe mi gömelim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 23 Nisan 2010, 14:38:30
Her dilden para kazanan insanlar var. Herkes kolayına gelen dili kullanacak muhakkak, ben sadece merak ettim hepsi o.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: gladi - 23 Nisan 2010, 16:03:09
mevcut işlerde c nin bana getirisi götürüsü nedir ? ... c bana luzumsuz geliyor mesala ...telefonum 3310 ... bazen ekran lazım oldugunda söküp kullanıp takıyorum ... işler güçler derken ... basic bana yetiyor ... ne en gelişmiş bir telefona nede  a.b. c ye ihtiyaçta duymuyorum ... 8)

bana ilaç olan bir başkasına zehir olabilir ... onun için bu böyledir demiyorum ...

c ile ilgili slogan uydurdum şimdi  ;)

bana c öğreteceni kölesi olacağıma  ... işe alırım
basic i baside alma , hepsinin babası o
....... :)))))))))))))))  ;D
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 23 Nisan 2010, 16:51:13
Evet tercih meselesi sadece

http://langpop.com/
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Zorbey54 - 23 Nisan 2010, 22:25:54
ben yine çağrımı tekrarlayım. LÜTFEN! okulda öğrencimle beraber yaptığımız RC teknemizin kumandasının yön servosu için yazılıma ihtiyacımız var. PIC Basic Pro da olmalı yazılım. Yardımcı olursanız inanın çok büyük bir iyilik yapmış olacaksınız. teşekkürler..
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 01 Mayıs 2010, 21:33:20
Alıntı yapılan: Zorbey54 - 23 Nisan 2010, 22:25:54
ben yine çağrımı tekrarlayım. LÜTFEN! okulda öğrencimle beraber yaptığımız RC teknemizin kumandasının yön servosu için yazılıma ihtiyacımız var. PIC Basic Pro da olmalı yazılım. Yardımcı olursanız inanın çok büyük bir iyilik yapmış olacaksınız. teşekkürler..

konuyu açtığınız yer yanlış ,
bağımsız bir başlık açınız picbasic pro bölümünde.
ve daha detay verin, alt yapı ,elektronik kumandası vs vs
yaptığınız çalışma varsa o da dahil basic ile .

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dej4vu - 22 Haziran 2010, 00:11:56
basc için türkçe kaynak bulabilirmiyiz...acaba elinizde varmı
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: muhittin_kaplan - 22 Haziran 2010, 01:07:58
Alıntı yapılan: orhanc - 23 Nisan 2010, 12:03:57
Neden C değilde Pic Basic öğrenmek istiyor insanlar? Bana bunun cevabını verebilecek var mı ?
ben bu konuya örnek olabilirmiym bilmiyorum.
vb 50 dan bu yana herhangi bir eğitim kurs vs almadan pc de programlar geliştiriyordum. bununla beraber kaçınılmaz olarak access ile vt bağlantısı vs yapıyordum. net in çıkmasıyla beraber (arada vb 6.0 var) yavaştan vb.net e geçiş yaptım. sırasıyla SqlServer gib yan dallar gelişti.neredeyse tüm sürümlerde 2005 e kadar HTML,ASP,C# gibi dilleri işimi görecek kadar çözmüştüm.
"2006 yılında Sistemi değiştireceğiz PIC biliyormusun" dendiğinde hemen diller nedir diye baktım ve karşılaştırdım.
1. Alt yapıma uygun olmalı
2. Döküman Bulunmalı
3. Öğretmesi kolay olmalı

siz olsanız hangisini seçerdiniz.

[]
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 22 Haziran 2010, 11:41:11
Bende Delphi ve C# dan sonra PIC programlama öğrenmeye başladım ve C ile başladım. PIC mantığını öğrendikten sonra da dilin pek bir önemi kalmıyor açıkcası. Döküman olarak genelde dillerin kendi dökümantasyonları kullanıyorum ve bir kaç örnek olması yeterli geliyor. Ama eğer ki ben takıldığım her noktada birilerine sorsaydım hiçbirşey öğrenemezdim
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dej4vu - 22 Haziran 2010, 13:49:14
pic basic türkçe kaynak lasım ve en kısa zmnda öğrenmek istiyorum yardımcı olabilirmisiniz
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 22 Haziran 2010, 13:52:07
Ete hocanın notları var onları bir oku
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dej4vu - 22 Haziran 2010, 13:53:28
o notları nerde bulacam ?_?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ferit06 - 22 Haziran 2010, 15:50:20

https://www.picproje.org/index.php?topic=26271.0
http://www.4shared.com/file/33373220/f92e28b7/BASIC-DERS.html


https://320volt.com/pic-basic-dersleri/

buralardan....

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: orhanc - 22 Haziran 2010, 17:32:13
http://tinyurl.com/2ab7gsa
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: issi - 20 Temmuz 2010, 11:07:13
Merhaba arkadaşlar bir sorum olcak ;

Ufak boyutlu DC motor'u Döndürücem mesela kaç tur döndü 4.7 olsun bu dönen 4.7 turu algılayacak ve ben mesela bu motoru 5 sn aralıklarla istediğim kadar 4.7 tur döndürücem.Bana bunun kodunu yazmaya yardım edebilecek arkadşlar var mı?
Şimdiden Teşekkür Ederim...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: muhittin_kaplan - 20 Temmuz 2010, 11:08:44
step motor u araştırın.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: subram - 20 Temmuz 2010, 13:01:32
Alıntı yapılan: issi - 20 Temmuz 2010, 11:07:13
Merhaba arkadaşlar bir sorum olcak ;

Ufak boyutlu DC motor'u Döndürücem mesela kaç tur döndü 4.7 olsun bu dönen 4.7 turu algılayacak ve ben mesela bu motoru 5 sn aralıklarla istediğim kadar 4.7 tur döndürücem.Bana bunun kodunu yazmaya yardım edebilecek arkadşlar var mı?
Şimdiden Teşekkür Ederim...

Tam tur olsa normal DC motor işini görebilir. Hasss bişey yapmak istiyorsan step motoru kullanman gerecek. istediğin kadar dönderebilirsin.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: husnuaygoz - 17 Ağustos 2010, 07:36:38
forum çok zenginmiş. herkeze teşekkür ederim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: frkcn - 08 Ekim 2010, 20:16:09
programı derlemek istiyorum

""error in parametter""  
yada

"unable the compile 18f452.pbp The source directory is read only."

hatası çıkıyor ne demek istiyor çözemedim. yardımcı olabilecek varmı?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Ghengistr - 01 Kasım 2010, 15:31:02
Proje1a yi calistiramadim. Amacim sadece 1 adet led i kontrol etmek zaten sonrasinda gerisi gelecektir.

proje1a ya bakarsak 15-16 numarali bacaklara  22 pf esliginde 4 MHZ bir kistal baglanmis aynisini yaptim . elimdeki pic test devresi iel yazdigim prgrami denedim sorunsuz calisiyor. ama 16f84 u test cihazimdan cikartip masa uzerinde kristal ve capacitor ile denedigimde devrem calismiyor.
Kullandiigm test cihazim ayni zamanda bu cihaz ile pic programliyorum : http://www.apogeekits.com/pic_programmer_k8048.htm

Simdiden Tesekkurler.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 01 Kasım 2010, 16:21:33
Pharuq,

18F serisi PBP ile derlenmemektedir. Bu işlemci için yazdığın programı aşağıdakileri yaparak derleyebilirsin.
Bunun için Micro Code Studio kullanman gerekiyor. Programı yazdıktan sonra derleme butonuna basmadan önce;
1. View Menüsünde "Compile & Program Options" seçeneğini seç
2. Açılan menüde Assembler seçeneğini seç
3. Sağ tarafta yer alan MPASM kutusunu işaretle.
4. İşaretledikten sonra Makinanda bir MPASM olması gerekir. Ben Proteus klasörü TOOLS alt klasöründe bulunan MPASM yi kullanmaktayım Sende onu kullanabilirsin. Bunun için MCS ye MPASM nin yerinie manuel yada otomatik olarak göstermende gerekecektir.

BU aşamadan sonra program içinde bazı düzenlemeler yapman özellikle sigorta ayarlarını MPASM formatında vermen gerekiyor.
18F452 için kullanabileceğin muhtemel sigorta ayarları aşağıdaki şekilde olmalıdır,

asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H  ;  _HSPLL_OSC_1H       
    __CONFIG _CONFIG2L, _BOR_ON_2L  & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_OFF_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
;    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
;    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H   
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm

Bu örnekte Osc tipi, 10 Mhz ve üzeri için HS olarak seçilmiştir. 8 Mhz in altında bir frekansta çalışacak isen OSC tipini XT olarak seçmen gerekir.
Bu değişiklikleride yaptıktan yapman gereken bir işlem daha var.
MCS de yeni dosya yükle işlemi ile PBP klasöründe yer alan  18F452.INC dosyasını bul ve yükleyip ekrana getir.
O dosyada sigorta ayarları ile ilgili 3 satır göreceksin. Hepsinin baş tarafına ; koyarak o satırları iptal etmiş ol. Sonra yeniden kayıt et. Bu işlemin sebebi sigorta ayarlarının PBP daki bu INC dosyasından değil MPASM klasöründe bulunan muhtemelen M18F452.INC dosyasından alınacak olmasıdır. Aynı şey iki ayrı dosyadan alınır ise hata verecektir derleme. Bu nedenle PBP dakileri kapatıyoruz işleme koyulmaması için. Dosyayı yeniden kayıt ettikten sonra artık derleme yapabilirsin.
Bas derleme butonuna MPASM derlemeyi yapıp sonucu vereck hata varsa kırmızı renkten anlayacaksın. Hatasız derleme yeşil renk ile belirtilmektedir.

Bu arada Source directory is read only diyor ise ya desktop'a direk koymuşsundur yada bir yerden yüklemişsindir. Bu nedenle o dosyayı önce bir klasör içine kayıt et sonra derlemeye çalış lütfen.

Ete

KOlay Gelsin.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 01 Kasım 2010, 16:34:53
Ghengistr,
Devre deney boardında çalıştığına göre sorun senin devrende demektir. Muhtemel sorunları aşağıya yazıyorum. tek tek kontrol ediver.

1. Pic in OSC bacakları olan 15 ve 16 nolu bacaklar 4 Mhz kristal bağlanacaktır. Bu bacakların her biri 22pf kondansatörle şaselenecektir. Yani kondansatörün bir bacağı kristal yada pic bacağında diğer ucu GND de olacaktır.

2. Pic in 4 nolu bacağı MCLR ucudur. Bu uca 1K-10K arası bir direnç bağlanacak ve direncin diğer ucu +5V ta bağlı olacaktır. Kısaca bu MCLR bacağına bir pullup direnci bağlanması gerekiyor.

3. Pic in 5 nolu bacağı GND ye bağlı olmalıdır.

4. Pic in 14 nolu bacağı +5V ta bağlı olmalıdır. Pic voltaja hassas bir malzemedir. verilebilecek en fazla voltaj 5,5 V dur ama bu voltajda bile uzun süre çalışamayabilir. Tam 5V verilemsine özen göstermek gerekir.

5. Daima picin besleme bacakları arasına 100nf kondansatör bağlamayı alışkanlık haline getirmelisin.

6. Pic'e program doğru biçimde yüklenmelidir. Yüklendikten sonra bir mukayese (verfication) yapılması uygun olur. Böylece pice yazılan programla programlayıcıda yüklenmiş programın aynı olup olmadığında daha doğrusu pice programın doğru yüklenip yüklenmediğine bu şekilde bakabilirsin.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: POWER - 01 Kasım 2010, 18:43:50
ete hocam,
sigorta ayarları için verdiğin satırlardan uygun olan tek bir satırımı kullacağız?söylediğin gibi yapmaya çalıştım fakat kırmızı renkte aşağıdaki hatayı verdi.
(http://i1011.hizliresim.com/2010/11/1/3419.jpg) (http://urlal.com/dqqf)
(http://i1011.hizliresim.com/2010/11/1/3427.jpg) (http://urlal.com/dqqf)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: frkcn - 01 Kasım 2010, 18:59:55
Sn ETE hocam zahmet edip ilgilendiğiniz için teşekkürler. Dediklerinizi yaptım, bir kaç hata mesajı kayboldu ve sadece ;
Error[102] c:\pbp\pbppic18.lib 997 : Out of memory   (997 den 1012 ye kadar giden)
bir hata dizisi alıyorum.  Hatamı bulmaya çalışıyorum teşekkürler.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 02 Kasım 2010, 10:05:50
Öncelikle şu Micro Code Studio Plus kullanmaktan vaz geçin. Size hiç bir faydası olmadığı gibi işinizi çıkmaza sokuyor gibime geliyor.
Normal MCS ücretsiz bir programdır Plus ise ücretlidir ancak kırılarak kullanılmaktadır. Bu nedenle normale geçseniz sizin için daha hayırlı olacak. Plus kullanmak için ileri derece programcı olmanız Debug vs kullanmanız gerekir. Bunları kullanıyorsanız sözüm yok ama kullanmıyorsanız nrmalini kullanmanızı öneriyorum.

Power sözümün bir kısmı sana. Evet ordaki ASM satırlarının tamamı Config ile ilgilidir. Ama programın önceki hali sanırım 16F877 için yazılmış ve XT osc kullanılmış. Bu nedenle ASM satırlarının ilkini aşağıdaki şekilde değiştirmen gerekir.;

__CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H

Verilen hataları çok iyi anlamadım. Sanki ASM kodları ile MPASM kodlarının uyuşmaması gibi bir durum sezinliyorum. Bunu anlamak için şöyle yapıver;

- MCS yada MCS_Plus da open File seçeneğini kullanarak ,Derleme için kullandığın MPASM klasörünü aç ve içinde  yer alan P18F452.INC dosyasını ekrana getir. Dikkat et MCS de açtığın için BAS yada PBP uzantılı dosya arayacaktır. Dosya tipi olarak ALL Files seçersen P ile başlayan dosyaları göreceksin.
- Ekrana gelen bu dosyanın sonuna doğru git
- Takriben 654 üncü satırlar civarında;
  ;Configuration Byte 1H Options şeklinde bir ifade göreceksin. Altında 1H options için önerilen komutları bulacaksın.
  Ben sana göreceklerini sıralayayım
_OSCS_ON_1H        EQU  H'DF'   ; Oscillator Switch enable
_OSCS_OFF_1H       EQU  H'FF'
_LP_OSC_1H         EQU  H'F8'   ; Oscillator type
_XT_OSC_1H         EQU  H'F9'
_HS_OSC_1H         EQU  H'FA'
_RC_OSC_1H         EQU  H'FB'
_EC_OSC_1H         EQU  H'FC'   ; External Clock w/OSC2 output divide by 4
_ECIO_OSC_1H       EQU  H'FD'   ; w/OSC2 as an IO pin (RA6)
_HSPLL_OSC_1H      EQU  H'FE'   ; HS PLL
_RCIO_OSC_1H       EQU  H'FF'

Bu yazılanlar sende farklı olabilir. Diğer config satırlarınıda kontrol et. Programa ayzdıklarınla dosyada olanlar arasında yazım farklıkları var ise onları düzelt.
Aslında derleme yaptığın anda programdaki config satırları ile bu dosyadaki satırlar eşleştiriliyor. Uyumsuz olan varsa yada yanlış yazılmış olan varsa program hata veriyor.

Bir diğer husus da MPASM ile derleme yaparken kesinlikle kısa bir yol kullanılması gerekiyor . Bas uzantılı yada PBP uzantılı dosyanız çok uzun bir yol ismi ile gelirse ki burada sınır en fazla 65 karekter diye biliyorum sistem yine hata verecektir.
Gerekirse direk MPASM nin içine programınızı kayıt edin ve oradan derleme yapın.

Önceden dediğim gibi PBP klasöründe yer alan 18F452.INC dosyasında hiç bir CONFIG satırı açık olmamalıdır. Buna da dikkat edin.

Ete

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 02 Kasım 2010, 14:03:19
İyi günler

sürekli bu hatayı alıyorum ne sıkıntısı var anlamadım
[IMG]http://img121.imageshack.us/img121/8876/67779059.jpg[/img] (http://img121.imageshack.us/i/67779059.jpg/)

melabdan mcs indirdim olmadı pbp250a versyounu da gösterdim compiler olarak yine yok

şuan da sağlam çalışan bir versyonu lazım yardımcı olursanız sevinirim
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 02 Kasım 2010, 14:54:15
MCS ücretsiz olarak aşağıdaki adresten indirilebilir.

http://www.mecanique.co.uk/software/mcsinstall.exe

PBP ise şu anda tek kaynak gördüğüm Sonsivri sitesinen alıntı aşağıdaki adreslerin birinden indirilebilir.

http://www.megaupload.com/?d=0XIXHXHA
Aslında pek çok adres olmasına rağmen çoğundan dosya silinmiş durumda. Henüz tam çalışan birini bulamadım. Ama bu forumda da olması gerek bazı adresler. Özellikle 4shared.com adresleri çalışır durumda olması gerek. ARaştırın bence.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 02 Kasım 2010, 17:51:26
Alıntı yapılan: ete - 02 Kasım 2010, 14:54:15
MCS ücretsiz olarak aşağıdaki adresten indirilebilir.

http://www.mecanique.co.uk/software/mcsinstall.exe

PBP ise şu anda tek kaynak gördüğüm Sonsivri sitesinen alıntı aşağıdaki adreslerin birinden indirilebilir.

http://www.megaupload.com/?d=0XIXHXHA
Aslında pek çok adres olmasına rağmen çoğundan dosya silinmiş durumda. Henüz tam çalışan birini bulamadım. Ama bu forumda da olması gerek bazı adresler. Özellikle 4shared.com adresleri çalışır durumda olması gerek. ARaştırın bence.

Ete


teşekkürler linkleri aradım aslında ama pek bulamadım



define OSC 4
CMCON = 7
ANSEL = 0 
TRISIO = %00001111
GPIO = %00000000
on interrupt goto kesme
intcon=%10100000          'interrupt aktif tmr0 kesmesi aktif
OPTION_REG=%00000001       'pull up aktif ps tmr0 için 1/4
tmr0=0
   
Basla:
      High GPIO.5
      Pause 50
      Low GPIO.5
      pause 500
     
      goto   basla
goto basla

end

disable
Kesme:
       toggle gpio.4
       intcon.2=0
       tmr0=0
       resume
enable


bu kodda 500 ms ara ile yanıp sönen bir led ve interrupt ile 1 ms ara ile yanan 2. led lmasını istyordum fakatbir türlü olmadı işte çıkışı görüntüsü
[IMG]http://img191.imageshack.us/img191/7480/out1f.jpg[/img] (http://img191.imageshack.us/i/out1f.jpg/)

sanırı goto basla komtunu icra etmiyor
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 02 Kasım 2010, 18:02:06
Kesme kullandığın program içinde büyük değerli PAUSE komutu kullanamazsın.
Yoksa kesme oluşsa bile Pause komutu bitinceye kadar program kesme etiketine atlamaz.
Yapılacak iki şey var ya pause süresini daha küçük sürelere bölerek uygulaman yada pause yerine başka bir taktik kullanman gerekir.

Senin programı ele alırsak;
PAUSE 500 yerine

FOR I=1 to 5000
PAUSEUS 100
next
şeklinde komut dizisi kullanmak daha doğru olacaktır. Ancak komutlardan doğan gecikmelere karşı Pauseus 100 yerine Pauseus 90 yazmanız daha uygun olur.
Kesme olan programlarda en büyük pause komutu 5 us olmalıdır. Şayet doğru bir çalışma bekliyorsan. Yoksa yukardaki örnekte olduğu gibi ms seviyesinde olmayan 100us lik bir gecikmede kullanılabilir. Kesme oluştuktan sonra en fazla 100us sonra kesme etiketine gider program.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 02 Kasım 2010, 18:25:19
ete hocam sizin verdiğiniz linkleri indirdim tekrar kurdum mcs yi
fakat bir süre sonra tekrar ayni hatayı almaya başladım


sürekli bu hatayı alıyorum ne sıkıntısı var anlamadım
[IMG]http://img121.imageshack.us/img121/8876/67779059.jpg[/img] (http://img121.imageshack.us/i/67779059.jpg/)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: yucelcem - 02 Kasım 2010, 19:02:29
hocam basicle rasyonel sayılarla işlem yapma şansımız varmı?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 02 Kasım 2010, 20:30:34
Yucelcem,
Rasyonel sayılardan kastın küsüratlı işlemler ise direk olarak mümkün değil.
PBP yalnızca tam sayılarla işlem yapar. Sayıları küsürattan kurtararak işlem yapabilirsin.
Örneğin 4/5 sayısı 0,8'e eşdeğerdir. Bu sayıyı direk basicde kullanamayız.
Ancak bu sayıyı 10 ile çarparsak 8 değerini alacaktır. İşlem yaptıktan sonra sonucu yeniden 10'a bölersen sonuç değişmemiş olacaktır. Yolu bu.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkan614 - 03 Kasım 2010, 11:16:30
Alıntı yapılan: erkan614 - 02 Kasım 2010, 18:25:19
ete hocam sizin verdiğiniz linkleri indirdim tekrar kurdum mcs yi
fakat bir süre sonra tekrar ayni hatayı almaya başladım


sürekli bu hatayı alıyorum ne sıkıntısı var anlamadım
[IMG]http://img121.imageshack.us/img121/8876/67779059.jpg[/img] (http://img121.imageshack.us/i/67779059.jpg/)

sorunu çözdüm şudur ki windows 7 ve kis2011 kullanıyorum kis'i kapatınca derlemeyi sorunsuz yaptı 10 tanede 3 tanesi yine ayni hatayı verdi
sonra uyumluluktanda xp sp2 ye göre çalıştıra tıklayınca hiç problem kalmadı
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: yucelcem - 03 Kasım 2010, 19:19:58
Alıntı yapılan: ete - 02 Kasım 2010, 20:30:34
Yucelcem,
Rasyonel sayılardan kastın küsüratlı işlemler ise direk olarak mümkün değil.
PBP yalnızca tam sayılarla işlem yapar. Sayıları küsürattan kurtararak işlem yapabilirsin.
Örneğin 4/5 sayısı 0,8'e eşdeğerdir. Bu sayıyı direk basicde kullanamayız.
Ancak bu sayıyı 10 ile çarparsak 8 değerini alacaktır. İşlem yaptıktan sonra sonucu yeniden 10'a bölersen sonuç değişmemiş olacaktır. Yolu bu.

Ete

demek istediğim işlem sonucu olarak atıyorum 7.682 alıp bunu lcd'ye yazdırabilir miyiz? Denemelerimde yazdırmadı, tam kısmını alıp yazdırdı, bunu yapmanın yolu var mı?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 04 Kasım 2010, 06:44:43
7.682 sayısını mutlaka 7682 olarak elde etmen gerekiyor. Zaten bu sonuca 7,682 sayısını 1000 ile çarparak ulaştığın için sayının tam ve küsürat kısımlarını elde etmenin yolu şöyle;
TamSayı=7682/1000
Kusurat=7682//1000

Lcdout $fe,2,dec TamSayı,",",dec Kusurat

Kusurat hesabına Mod alma işlemi denir. Bir sayının belirli bir sayıya bölünmesinden sonra kalanları sana verir. Kısaca şu işlemi yapar bu mod alma ,
-7682 sayısı zaten 1000'e bölünürse tam sayı olarak sonuç 7 çıkar.
- Bunu 1000 ile çarparsan sonuç 7000 çıkar
- 7682-7000=682 sayısını verir Böylece 7682//1000=682 bulunur.

Ekrana yazdırırkende önce tamsayıyı yazdırıyoruz;
LCDOUT $fe,2,Dec Tamsayı

Sonra bu sayının peşine bir ondalık ayıracı olarak tırnak içinde bir virgül koyuyoruz;
Lcdout $fe,2,Dec Tamsayı,",",

Daha sonrada ondalık kısmı yazdırıyoruz.
Lcdout $fe,2,Dec Tamsayı,",",Dec Kusurat

Hepsi bu kadar.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: H@S@N - 04 Kasım 2010, 16:04:41
s.a arkadaşlar hayırlı çalışmalar dilerim.sizlere bir sorum olucak.kısmetse ılk projemı yapıcam.(ete hocadan ALLAH razı olsun).yapmak istediğim proje lcd ekranlı anımasyon devresi.diyelimki elimde 3 farklı animasyon var.1.animasyon,2.animasyon,3.animasyon diye.kullandığım işlemci 16f84a.malum pin sayısı kısıtlı.şuan tuş için bir adet pin kaldı boşta :)benim yapmak istediğim tus a her bastığımda diğer animasyona geçmesi ve lcd bunun gözlenmesi.bana tus kısmında yardımcı olursanız lcd de gösterme işini halledebilirim.
devre şeması aşağıdaki gibidir.
[IMG]http://img825.imageshack.us/img825/2397/adszfrt.png[/img] (http://img825.imageshack.us/i/adszfrt.png/)

Uploaded with ImageShack.us (http://imageshack.us)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 04 Kasım 2010, 16:17:55
Hasan,
Önce kolay gelsin diyorum. Yapacağın iş çok zor değil. Önce bir değişken belirle Byte cinsinden olsun. Mesela SIRA diyelim.
Program ilk çalıştırıldığında değeri sıfır olsun (SIRA=0) Bunun için başla satırından evvel SIRA=0 komutunu koy.
Daha sonra tuşa her basılışta SIRA değeri 1 artsın ama animasyon adedini geçmesin. Diyelimki animasyon adedin 3 ve biz sıfır değerinide kullandığımız için SIRA değeri 2'yi aşmamalı. Aştığı zaman yeniden sıfırlanmalı.
Örnek verelim;
IF TUS=0  THEN 'yani tuşa basılmış ise
SIRA=SIRA+1
IF SIRA>2 then SIRA=0
WHILE TUS=0:WEND
ENDIF
Bu işlemden sonra geriye sıra değerine bağlı olarak programı animasyonlara yönlendirmek kalıyor.
SELECT CASE SIRA
CASE 0
Goto Animasyon_Bir
Case 1
Goto Animasyon_Iki
Case 2
Goto Animasyon_Uc
End Select
hepsi bu kadar.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: H@S@N - 04 Kasım 2010, 19:36:02
hocam ALLAH sizden razı olsun.tek seferde anladım.zaten zor bişey değill ama olsun.siz olmasaydınız belki pic diye bişey bilmiyor olcaktık.hocam bir sorum daha olucak.benim elimde 4 çeşit pic var.ben bu piclerin atıyorum dahili osilatörü olup olmadığını bilmiyorum.bu piclerin bu tarz özelliklerini anlamak için datasheetlerdeki can alıcı noktalar nelerdir.yani nasıl anlarım.birde ben us-burn programını kullanıyorum.eğer pıc yazılımında sigorta ayarlarını belirtmemişsem burdan ayarlayabiliyorum.bunun herhangi bi sakıncası varmıdır.teşekkür ederim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Tagli - 04 Kasım 2010, 19:43:20
Microchip'in datasheet'lerinin genelde ilk 5 sayfası içinde (genelde 3. sayfa) bir yerde maddeler halinde bir liste olur. Bu listede "internal oscillator" gibi bir ifade olarak görebilirsin varsa eğer. Karmaşık seçenekler sunan modellerde PDF'nin sol tarafındaki başlıklar arasında (üstlerde bir yerde) "Oscillator Configurations" başlığının olması da dahili osilatörün varlığına bir işarettir.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 04 Kasım 2010, 19:49:58
Datasheet denilen şeyin Türkçesi Bilgi Formudur adı üzerinde bilgi formu yani her şeyin yazılı olduğu belge.
Şu önemli bu önemli diye ayırmak gerçekten zor. Ama bir genelleme yaparsak ben çoğunlukla, ADC ayarlamaları için bakarım,
Sigorta ayarları için bakarım ama sigorta ayarları için daha güzel bir kaynak mevcut yazının sonunda açıklayacağım.
Muhtelif registerlere bakarım. Mesela Option, INCON, T1CON gibi registerlere bakarım. Aklıma gerçekten gelmiyor.
Hiç bir zaman data sheeti açıp bakalım ne özellikleri varmış demedim. Hep belirgin bir veya iki konu lazım olduğu için açtım data sheetleri . Bu nedenle sende lazım oldukça bak.

Sigorta ayarları için en güzel kaynak bence  MPASM klasörü içinde yer alan ve Pxxxxxx.INC dosyalarıdır. Bu dosyanın sonuna doğru bakarsan configürasyon kısmında tüm olası sigorta ayarlarını isimleri ile görürsün. Hangisini merak edersen gerekirse data sheete bakar açıklamasını okumaya çalışırsın değilse orada belirtildiği şekilde kullanmaya çalışırsın.

Sigorta ayarlarını programdan ayarlamak en iyisidir. Ama zorunlu değildir. Programlayıcı üzerinden de ayarlama yapabilirsin. Bir şey değişmez. Sorunda çıkarmaz.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: H@S@N - 05 Kasım 2010, 16:52:18
hocam bir sorum daha olucak. isisde kurduğumuz devre, gerçekde örtüşmüyor.atıyorum 12 volt luk bi lambamız var.bunu transistörün emiterine bağlıyorum.tranasistörün beslemesini 12 volt veriyorum.picden çıkan 5 voltu ise beyze bağlıyorum.şaçmalık o ki lamba yanıyor.gerçekde denediğimse ise lamba çalışmıyor.bildiğim transistör akım kazancı sağlar.beyzine 5 volt gırersek emiterinden de 5 volt çıkar.ama mosfet olsa işler değişir.5 volt ile mosfeti max. iletime sokabiliriz.anlamadığım ares gibi 6 ayda bir güncelleme yapan bir program böyle şeyleri nasıl oluyorda göz ardı ediyor.:)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: JKramer - 05 Kasım 2010, 17:44:55
Sizin durumunuzda npn tranzistör kullandığınızda yükü (lambayı) kollektöre bağlamalısınız.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: H@S@N - 05 Kasım 2010, 17:55:00
ben lambayı örnek olarak vermiştim.benim kullandığım 12 voltluk şerit ledler.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Wellnes - 11 Kasım 2010, 17:50:39
Ete hocam selamlar iyi varsınız.program konusunda başımız sıkıştığında sizinle iletişime geçerek sorunları çözüyor..çözerken birşeylerde öğreniyoruz.
Bende pic basic proğramlama dilini çözmeye çalışanlardanım.Benimde bir sorum olacak;
SORUM:Her dakikada belirlenmiş bir sayının katları şeklinde üst üste toplayan bir yazılım yaptım Örneğin verilen yada belirlenen sayı '15' katları her dakikada '15' ekleyerek devam ediyor..15-30-45 vs. Ben ekrandaki bu sayıları 1.5-3.0-4.5 -6.0 şeklinde görülmesini istiyorum. Nasıl bir proğram yazmalıyım..Şimdiden teşekkürler.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 11 Kasım 2010, 17:56:20
Elde ettiğin sayılar ekrana vereceğin sayıların 10 ile çarpılmış hali ise (ben öyle anladım) işin zor değil.
Sayı=15 olsun. Ekrana şöyle yazdıracaksın;
Lcdout $fe,$02,dec SAYI/10,",",dec SAYI//10

Bu komut ne yapıyor onu izah edeyim.
Sayı değerini 10'a bölerek önce sayının tam sayı kısmını ekrana veriyor (15/10=1 çıkar ve ekrana 1 yazdı)
Sonra bir virgül koyuyor "," komutu bunu yapıyor. Görünenler   1,
Sonra sayı üzerinden mod işlemi uyguluyor yani sayının 10'a bölündükten sonra kalan sayıyı ekrana veriyor. Buda SAYI//10 komutu ile yapılıyor ve ekrana 5 yazdırılıyor. Sonuçta görülen kısım 1,5 şeklinde olacaktır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: rercan - 11 Kasım 2010, 22:28:02
sayın ete  bende şöyle bişey yapmak istiyorum acaba bu modlu bölmeyi orada kullanabilir miyim ?

i2c ile pt2258 e veri yolluyorum

mb6=mb6+1 
x=x+1
If mb6>%11101001 Then ma6=ma6+%00000001       'b6 max ise a6 yı 1 arttır
If mb6>%11101001 Then mb6=%11100000                 'b6 max dan büyük ise b6 min e çek
If ma6>%11011001 Then ma6=%11011001                 'a6 max ise max degerde sınırla
If ma6=%11011001 Then mb6=%11101001                 'a6 max ise b6 yıda max da sınırla
i2cwrite sda,scl, $88,[ma6,mb6]
pause 100
GoTo main

burada amaç 8 bitlik iki veri var bunlar birisi 10 lar basamagına ait  volume verisi digeri birler basamagına ait veri . yani 99 kademeli ses ayar entegresi 6 kanal.  bu 8 bitin ilk 4 ü hangi kanal oldugunu gösteriyor. diger 4 de  volume degerini. istedigin kanalın ilk 10lar verisini sonra 1 ler verisini yolluyorsun.  0 dan başlıcak 9 dan 10 a geçince 10lar basamagı 1 artacak ve 1 ler basamagı sıfırlanacak öyle öyle artacak. bu durumu daha kısa yolla sizin modulüs bölme ile nasıl yapabiliriz ?   8 bitlik veride  4 biti kanal verisi oldugundan onu degiştirmeden ilk 4 biti değiştirmek.o noktada bilgim yetersiz. yardımcı olursanız memnun olurum.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Kasım 2010, 07:45:35
whyliving,
Açıkladıklarını çok iyi anlamadım. Anlayabilsem bir şeyler önerebilirim belki.
Daha açık anlatmanın yolu yokmudur.
Anlaşılan entegrede bir register var ve bu 8 bitlik register iki parçada iş görüyor. İlk 4 biti birler hanesini sonraki 4 biti onlar hanesinimi tutyor yoksa başka fonksiyonlarıda varmı. Bu izahatı tek register üzerinden yap mesela;
REG=%0000 0000  şeklinde olsun. Bunun %0000 xxxx x ile gösterilenler birler hanesini gösteriyor.
%000x 0000 x ile gösterilen onlar hanesini gösteriyor  gibi anlatırsan daha kolay anlarım.
Bu açıklamadan sonra ne yapmak istediğinide bir kez daha açıklayıver lütfen.
8 bitlik veride bir denfazla fonksiyon olması sıklıkla kullanılan bir sistemdir.Genelde RTC ler bu sistemi kullanırlar (DS1302 - DS1307 gibi).
Benzer bir şeymidir. ?

Ete

Not: data sheet'i inceleyince anladım. Sanırım volum değerini 1 desibel artırıp 9 dan 10 a geçince 10'ar artırılan değeri de bir artırmak zorunluluğun var. Özetlersek alete 68 desbile emrini verdin ama 8 değerini bir artırdın 69 oldu bir artırdın 70 olunca 60 lık desibel değeri 70'e ayarlanmalı demek istiyorsun sanırım.  Değil ise tam olarak ne istegini anlatıver lütfen.

Şayet isteğin dediğim gibi ise işin çok zor değil. Vol_1 yani 1. kanal volum değeri şeklinde bir değişken tanımla Byte cinsinden.
BU senin o kanala ait volum değerin olsun. Artırmak için
Vol_1=Vol_1+1
IF VOL_1=100 then Vol_1=99 demen gerekiyor maksimum sınırlama için

Azaltmak için;
Vol_1=Vol_1-1
If Vol_1=255 then Vol_1=0  'buda minimum sınırlaması sıfırdan küçük olmayacak demektir.

Şimdi Bu volum değerinin 10 hanesine ait bilgiyi yollamak için;
Onlar=Vol_1/10  şeklinde bir hesap yapman yeterli. Bu değeri 10 lar hanesi için yolluyorsun.
Daha sonra birler hanesi için ise  Birler=Vol_1//10  şeklinde bir hesap yapıp yolluyorsun hepsi bu.

Diğer kanallar için yalnızca Vol_2 ... Vol_3 gibi değişkenler tanımla ama her biri için Onlar , Birler diye değişken tanımlamana gerek yok. Bunları bir kere tanımla ve her kanal için kullan.
Umarım anlaşılmıştır.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: rercan - 13 Kasım 2010, 15:06:37
hocam sağol anladım. birde şöyle bişey de sorun yaşıyorum hocam. 628 de a portunda osc cıkışlarını kullanacagım mclr falanda . uzaktan kumanda yapacagım. 4 bit kalıyor ancak direk giriş yerine 4 biti diyotlar ile 15-20 kanala cogaltmak istiyorum. 

şöyle ki

if porta = 10101001 dedigimde  osc ve mclr bitleri dolu oldugundan nasıl algılar bilemiyorum. maskeleme diye bişey var sanırım.
porta.1 2 3 bitlerini yani osc mclr uclarını sıfır alıp  kullandıgım girişleri öyle algılatacagım. bu durumda port a 4.5.6.7. bitleri deger olacak

buton 1 e basıldıgında  if port a = % 10010000  ' ilk dört bit kullanılamadıgından 0 degeri görülür mantıgıyla yaklaşsam dogru olur mu ?
mclr veya osc uclarının başka görevlerde olmasından etkilenir mi .  umarım anlatabilmişimdir. malesef rahat ortamda olmadıgımda alel acele çözüm üretmem gerekiyor lütfen mazur görün. anlayışınız ve yardımlarınız için cok teşekkürler.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 13 Kasım 2010, 15:40:08
Bu işler için maskeleme denilen metodu kullanman gerekiyor.
Her hangi bir 8 bitlik değişkenin istediğin bitlerini alabilmen için alınacak bitleri 1 ile AND işlemine tabi tutman gerekiyor.
Senin örneğine göre açıklar isek;
PORTA=%10110110  olsun
Bunun 4-5-6-7 nolu bitlerini ayırıp almak için
PortA & %11110000 şeklinde and işlemine sokman gerek. Bakalım ne olur AND işelminden sonra;
%10110110
%11110000
bit7 lerin ikiside 1 olduğundan 1 AND 1=1 dir o halde and işleminden sonra elde edilecek değerin 7. biti 1 olacak
bit-6 ların birisi 1 diğer 0 olduğundan 1 AND 0=0 olur ohalde altıncı bit sıfır olacak demektir.
5. bitler her ikiside 1 olduğundan sonuç 1 olacak
4 . bitler de her ikisi  olduğundan sonuç 1 olacak
O halde ayırma işlemi sonucunda elde edilecek değer %10110000 olacaktır. SOnra gerekirse bu sayıyı sağa doğru 4 bit kaydırarak gerçek değerine getirebilirsin.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: rercan - 15 Kasım 2010, 15:24:32
cok teşekkür ederim açıklamalarınız için.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: yucelcem - 16 Kasım 2010, 18:01:36
pbp.zip olan ink gebermiş, ikisi aynımı acaba?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkanert - 01 Şubat 2011, 10:27:37
İyi günler aradaşlar . Öncelikle ben yeni başladım pic öğrenmeye ve sizin sayenizde ilerlemeye çalışıyorum. Benim bir sorum olacak
Önce PORTB.2 nin 1 olması (2 SN)  sonra  PortB.0 ve Port B.1 aynı anda 1 olmasını  bu koşul sağlanırsa PortA.1 in high Olmasını nasıl yazarım acaba :P Walla Çok uğraştım ama yazamadım .. Bir yol gösterirseniz çok sevinirim...Şimdiden Teşekürler 
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 01 Şubat 2011, 10:59:47
Tarif ederken kendin sorunun cevabını veriyorsun aslında;
Önce PortB.2 =1 olmuşmu ona bakacağız.

IF PORTB.2=1 then  'portB.2=1 olmuş ise bu satırdan sonraki komutlar işlev görecek değilse hespi atlanacak demektir
  pause 2000  'burada 2 sn bekliyoruz 2sn=2000 ms demektir
  IF  PortB.0=1 and PortB.1=1 then  'bu pinlerin her ikiside 1 olmuş ise devam
     PORTA.1=1
  else
    PORTA.1=0
  ENDIF
ENDIF

Hepsi bu kadar.
Tamamen mantık sırası. Komutlarda çok basit üstelik. Anlaşılmayacak bir şey yok sanırım.
Tabiiki bu komutlar çalışır ancak bir kötü tarafı var. Şayet bu yapılanları yaparken başka işlerinde yapılması gerekiyor ise program,
PAUSE 2000 komutunda  2sn müddetle kilitlenecek ve başka işe bakamayacaktır. Bunu aşmanın yolu tabiiki ya kesme metodu ile bir saat sistemi kullanmak ve siz diğer işlerinize bakarken saatinde bir yandan saymasını sağlamak yada harici bir saat kaynağı kullanmak olur.
Ancak bu iş anlattığım kadar kolay değil biraz karmaşık elbette. Bu işi ancak programcılıkta iyi bir seviyeye geldikten sonra kıvırabilirsiniz.
Şimdilik kafanızınbir köşesinde yer alsın ve ileride buna kafa yorarsınız.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: erkanert - 01 Şubat 2011, 11:30:20
Öncelikle cevap için çok ama  çok teşekür ederim... Bu kadar hızlı cevaplamanız inanılmaz. Bu bilgi Çok işime yaradı Tekrar Teşekkürler...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: bolanka - 04 Şubat 2011, 23:05:36
Sevgili Ete ilk dersi bitirdim şimdi ve yazmadan edemedim. Harika bir anlatım olmuş. Çok teşekkür ederim. İnanın para verip aldığım kitaptan hiçbir şey anlamadım ama senin anlatımınla herşey net. Teşekkür ederim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: microlight - 10 Şubat 2011, 18:01:30
ETE hocam 6.dersdeki KESM-TMR0 projenize bir kaç kod ekledim, eklediğim kodlar  isteğim gibi programı çalıştırdı. LCD yi iptal ederek aynı yazdığım programı çalıştıramıyorum. senin yazdığın LCD ile ilgili kodlarını sildim ama  program çalışmadı. yardımcı olabilirmisin

bu programda LCD yi nasıl iptal ederim. LCD yi kullanmak istemiyorum. programım içeriği, çalar saata benzer bir uygulama. kodları ekleyeceğim ama şu an için mümkün değil. eve döndüğüm zaman ekleyebilirim
kolay gelsin
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: eistain_54 - 16 Şubat 2011, 23:34:53
DEFINE OSC 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BIT 4
DEFINE LCD_LINES 2
DEFINE  HSER_RCSTA 90h   
DEFINE  HSER_TXSTA 24h   
DEFINE  HSER_BAUD  2400 
DEFINE  HSER_SPBRG 207 
DEFINE  HSER_CLROERR 1   
SYMBOL  GIE  =INTCON.7   
SYMBOL  PEIE =INTCON.6   
OPTION_REG.7=0
ADCON1=7
PEIE=1
KARAKTER VAR WORD
low portb.1
LCDOUT $FE,1
lcdout "muhammet"

BASLA:
HSERIN [KARAKTER]
LCDOUT $FE,$C0,"GELEN VERI:",#KARAKTER
GOTO BASLA
END

Abi kodu yazıyorum ama ekranda çıkan sadece 255 değeri oluyor.Normalde beklentim klavyeden girdiğim karakterlerin ekranda gözükmesi.Ama nerde hata yapıyorum bilmiyorum?Devre şeması aşağıda
(http://img263.imageshack.us/img263/9647/seriportsorunu.jpg)

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 17 Şubat 2011, 08:01:47
Microlight,

Bir programdan LCD nin çıkartılması için önce programınbaşında yer alan LCD ye ait define komutlarını kaldırman gerekiyor.
Sonra program içinde yer alan bütün LCDOUT ile başlayan komutlarıda kaldırman gerekiyor. Hepsi bu kadar.
Tabiiki LCD programın görsel olarak çalıştığının bir ispatıdır. Onu kaldırınca programın çalıştığını ancak bağladığın led vs. gibi elemanlar aracılığı ile anlayabilirsin.  ANladığımkadarı ile programda yalnızca TMR0 kesmesi kullanmak istiyorsun. O halde kendi programına bu kesmeyi ilave etsen daha uygun olmazmı.?
Bütün yapacağın iş;
- Option registerini TMR0 için ayarlayacaksın. Bölücü değerini buradan yarlayacaksın.
- INTCON registerini ise yine TMR0 sayacı için ayarlayıp global kesmeleri açacaksın.
- Kesme başlığı altında bir alt program yaratıp orada yapacaklarını belirleyecek ve sonunda TMR0 kesme bayrağını sıfırlayıp kesmeden çıkacaksın
hepsi bu.
Bana kalırsa programın çalışınca ne ile çalıştığını belli edecek ona kafa yormalısın.



@Eistain_54,
Bildiğimiz PC klavyesinden bahsediyor isen bu kadarcık kod ile o sistemin çalışmasını bekleme lütfen. Klavye sistemi senin bildiğinden çok daha karmaşık çalışır. Bir ara uğraşmış idim.  PC tarafından klavyede herhangi bir tuşa basmanın bir kodu ve tuşu bırakmanın ayrı bir kodu vardır.
Bunun yanında combine tuşlar ise ayrı kod alırlar. Epeyce karmaşık bir konudur ve bu kadar basit kodlarla klavye bilgisi LCD ye verilemez.
Çok merak ediyorsan klavye okuma aşağıdaki gibi bir programdır, Bu program MHK isimli arkadaş tarafından yazılmıştır. Bende üzerinde biraz değişiklik yaparak klave deneme programı haline getirdim.
@ DEVICE pic16F877A 
@ DEVICE pic16F877A, WDT_OFF
@ DEVICE pic16F877A, PWRT_ON
@ DEVICE pic16F877A, PROTECT_OFF
@ DEVICE pic16F877A, HS_OSC
DEFINE OSC  20
TRISB=0

DEFINE LCD_DREG     PORTB       'LCD DATA BACAKLARI PORTB'DE BAĞLI
DEFINE LCD_DBIT     0           'LCD DATA BACAKLARI PORTB.0 DAN BAŞLIYOR
DEFINE LCD_RSREG    PORTB       'LCD RS PINI PORTB'YE BAGLI
DEFINE LCD_RSBIT    4           'LCD RS PINI PORTB.4'E BAGLI
DEFINE LCD_EREG     PORTB       'LCD ENABLE PINI PORTB'YE BAGLI
DEFINE LCD_EBIT     5           'LCD ENABLE PINI PORTB.5'E BAGLI
DEFINE LCD_BITS     4           'LCD 4 BIT HABERLESIYOR
DEFINE LCD_LINES    2           'LCD 2*16
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us


ADCON1 = 7                  ' PORTA ve  E dijital giris çikis olarak ayarla

TRISA = %00111111              ' A portunu giris olarak tanimla
TRISC = %00000000            ' B portunu giris olarak tanimla
TRISB = %00000000
TRISD = %00000000            ' D portunu giris olarak tanimla
PORTC=0:portc=0:portd=0

CLKPIN   var     PORTC.6        ' Klavye clock pin PORTC.0 olarak tanimla
DATAPIN  var     PORTC.7       ' Klavye Data pin PORTC.1 olarak tanimla

'************** Degisken tip tanimlama bloklari *********
klavyedeg  var   byte
dvm01 var byte
dvm02 var byte
dvm03 var byte
dvm04 var byte
dvm05 var byte
deg var BYTE
satir var byte
kodcozdeg var byte
harf var byte
parity var bit
bitsay var byte
parbit var byte
txdeg var byte
rx_byte var byte
LEDs var byte
rx_ok var byte

'**************** degisken baslangiç degerleri ***********
klavyedeg=0
dvm01=0
dvm02=0
dvm03=0
dvm04=0
dvm05=0
kodcozdeg=0
deg=0
satir=0
harf=1
txdeg=0
rx_byte=0
LEDs=0
bitsay=0
rx_ok=0

gosub ekransil                   ' LCD ekran temizleme alt programina git.
lcdout $Fe,2,"PC AT Klavye"
lcdout $Fe,$C0,"Deneme programi"
pause 300
'********* LCD TÜRKÇE KARAKTER OLUSTURMA **************
LCDOUT $FE,$40,$0E,$00,$0E,$11,$11,$0F,$01,$0E
LCDOUT $FE,$48,$00,$0E,$11,$10,$11,$0E,$04,$08
LCDOUT $FE,$50,$00,$0A,$00,$11,$11,$11,$0E,$00
LCDOUT $FE,$58,$00,$0F,$10,$0E,$01,$1E,$04,$00
LCDOUT $FE,$60,$00,$00,$0C,$04,$04,$04,$0E,$00
LCDOUT $FE,$68,$0A,$00,$0E,$11,$11,$11,$0E,$00

pause 1000
gosub ekransil
LEDs =0               
txdeg=$ED             ' PC AT klavye caps num ve scrlock ledlerini söndür.
GOSUB TX_hazir
GOSUB tx_gonder
           
'AAAAAAAAAAAAAAAAAAAAAAA-------  Ana Program ------AAAAAAAAAAAAAAAAA

anaprogram:
          rx_byte =0
          gosub RX_klavye
          if rx_ok=0 then anaprogram
          rx_ok=0

          IF rx_byte=$12 or rx_byte=$59 THEN M4 ' Eger shift tusuna basilmissa M4 e git   
 
          if rx_byte=$F0 then dvm02=1:goto anaprogram ' Eger klavye tusu birakilma kodu olan F0 gelmisse
          if rx_byte=$E0 then dvm05=1:goto anaprogram ' Eger klavye tusu birakilma kodu olan E0 gelmisse

          if dvm02=1 then dvm02=0:goto anaprogram     ' Eger klavye tusu birakildiginda tus tekrarini önler

          IF rx_byte = $FA THEN                   ' Klavye caps num ve scrlock ledlerini yakmaya hazir 
            GOSUB TX_hazir
            txdeg=LEDs
            GOSUB ledcaps
            rx_byte =0
          ENDIF

          IF rx_byte = $12 THEN                   ' Eger shift tusuna basilmissa if blogu içindekileri yap
M4:
             LEDs = LEDs | %00000001          ' scroll lock LED'i 1 ile OR islemi yaparak 1' le
             IF dvm02 = 1 THEN                 
               LEDs =LEDS ^ %00000001         ' Scroll lock LED'i değille
               dvm02=0
             ENDIF 
             txdeg=$ED
             GOSUB TX_hazir
             GOSUB tx_gonder
             GOTO anaprogram
          ENDIF       

    IF rx_byte = $58 THEN                   ' Eger shift caps lock basilmissa if blogu içindekileri yap
       LEDs = LEDs ^ %00000100           ' Caps ledini değilleyerek her basista yanmasi yada
       txdeg=$ED                         ' sönmesini saglar
       GOSUB TX_hazir
       GOSUB tx_gonder
       goto anaprogram
    ENDIF 

      IF LEDs = 0 THEN                    ' caps = 0, shift = 0
         harf=1                             ' ( Caps ve Shift basilmamissa normal durum)
         gosub kodcoz
         GOTO anaprogram
      ENDIF

      IF LEDs = 1 THEN                    ' caps = 0, shift = 1
         harf=2                             ' Normal durumda klavyede shift tusuna basilma islemi
         gosub kodcoz
         GOTO anaprogram
      ENDIF       

      IF LEDs = 4 THEN                       ' Caps = 1, shift = 0
         harf=3
         gosub kodcoz
         GOTO anaprogram
      ENDIF

      harf=4
      gosub kodcoz
      goto anaprogram

'*************** KLAVYE OKUMA ******************************
RX_klavye:
          gosub clock
          if deg=1 then RX_klavye

          if deg<10 then
            klavyedeg=klavyedeg>>1
            klavyedeg.7=DATAPIN               
          endif       
       
          if deg>10 then deg=0:rx_byte=klavyedeg:rx_ok=1:return
          GOTO RX_klavye
          return
'******************** CLOCK ************************

      if CLKPIN=1 then dvm01=0:goto clock
      if dvm01=1 then clock
     
      if CLKPIN=0 then
        deg=deg+1
        dvm01=1
      endif
      return
'************* Seri bilgi gönderme alt programi ********

tx_gonder:
           gosub clock           
           if deg<9 then
              datapin=txdeg.0
              txdeg=txdeg>>1
           endif       
           
           if deg=9 then datapin=1
           
           if deg=10 then
             INPUT CLKPIN                ' Clock ve
             INPUT DATAPIN               ' data giris tanimlandi
           endif
   
           if deg=11 then deg=0:return              ' 11. bite ulasildiysa geri dön

           goto tx_gonder
           return
'*******************************************************
ledcaps:
'parity bit hesaplama: Gönderilen 1 ler çift ise parity=1, tek ise parity=0 olacak
        gosub clock

        if deg<9 then
           datapin=txdeg.0
           txdeg=txdeg>>1
        endif       
       
        if deg=9 then
           datapin=parity
        endif

        if deg=10 then
           TRISC = %11000000
        endif
   
        if deg=11 then deg=0:return

        goto ledcaps
        return
'*******************************************************

      parbit=LEDs
      for deg=0 to 2
        if parbit.0=1 then bitsay=bitsay+1    ' Parity bit hesaplama için gönderilecek 
        parbit=parbit>>1                       ' bilgideki 1 lerin sayisi bitsay degiskeninde saklanir.
      next                                         
     
      parity=0
      if bitsay//2=0 then parity=1                  ' Eger bitsay çift ise parity=1
      bitsay=0:parbit=0                             ' değilse parity=0 olarak hesaplanir.
      deg=0
      OUTPUT CLKPIN
      OUTPUT DATAPIN
      clkpin=0:pauseus 80
      datapin=0:pauseus 20
      INPUT CLKPIN   
      return
'****************** KOD COZME ******************************
kodcoz:

        if rx_byte=$66 then                       ' ESC tusunun kodu , eger bu tusa basilmissa
          kodcozdeg=" ":satir=satir-1             ' LCD ekran temizlenir.
          if satir>15 then satir=0          ' 2x16 LCD ekranda 16.satira gelindiginde ekran
          gosub lcdgoster                   ' temizlenir ve satir basi yapilir.
          return
        endif

        if rx_byte=$0E then kodcozdeg=34:goto gec02 ' OE kodu " karakterini olusturmak için kullanilir.
        if rx_byte=$54 then kodcozdeg=0:goto gec02  ' Türkçe G karakteri
        if rx_byte=$49 then kodcozdeg=1:goto gec02  ' Türkçe Ç karakteri
        if rx_byte=$5B then kodcozdeg=2:goto gec02  ' Türkçe Ü karakteri
        if rx_byte=$4C then kodcozdeg=3:goto gec02  ' Türkçe S karakteri
        if rx_byte=$41 then kodcozdeg=5:goto gec02  ' Türkçe ö karakteri
'if rx_byte=$54 then kodcozdeg=64:goto gec02' @ karakteri

' Keypad / tusunun aktif yapilmasi için kullanildi.
        if dvm05=1 THEN
          if rx_byte=$4A then dvm05=0:kodcozdeg="/":goto gec02
        endif
' Bakspace tus kodu, bu tusa basildiginda yazilan son karakter silinir.
        if rx_byte=$76 then satir=0:kodcozdeg=" ":gosub ekransil:gosub lcdgoster:return

' Klavyede kullanilmayacak tuslarin ekranda kodlarinin görüntülenmesini engeller.
        if rx_byte>126 or rx_byte<20 then return

' Keypad tuslarinin kullanimi ile ilgili kodlari çözmek için kullanilir.
        if rx_byte>104 THEN harf=5

gec01:
       gosub harfbul             
gec02:                     
       if satir>15 then satir=0:gosub ekransil
       gosub lcdgoster
       satir=satir+1
       rx_byte=0
       return

'**************************** HARF ÇÖZME **********************
         if harf=1 then                                                                             
'************************************************************************************************************
           LOOKUP rx_byte-21,["q1   zsaw2  cxde43   vftr5  nbhgy6   mju78   k o09   .l p*=  i  -       ,   <"],kodcozdeg
'Türkçe i karakteri
           if rx_byte=$43 then kodcozdeg=4
         endif

         if harf=2 then                                                                             
'************************************************************************************************************
           LOOKUP rx_byte-21,["Q!   ZSAW'  CXDE+^   VFTR%  NBHGY&   MJU/(   KIO=)   :L P?=  I  _       ;   >"],kodcozdeg
         endif

         if harf=3 then                                                                             
'************************************************************************************************************
           LOOKUP rx_byte-21,["Q1   ZSAW2  CXDE43   VFTR5  NBHGY6   MJU78   KIO09   .L P*=  I  -       ,   <"],kodcozdeg
         endif

         if harf=4 then                                                                             
'************************************************************************************************************
           LOOKUP rx_byte-21,["q!   zsaw'  cxde+^   vftr%  nbhgy&   mju/(   k o=)   :l p?=  i  _       ;   >"],kodcozdeg
         endif


         if harf=5 then                                                                             
'*****************************************************
           LOOKUP rx_byte-105,["1 47   0,2568   +3-*9"],kodcozdeg
         endif
         return

'*************** LCD GÖSTERME ****************************
lcdgoster:
           lcdout $FE,2,"Kod=",hex2 rx_byte," Satir=",dec2 satir
           lcdout $FE,$C0+satir ,kodcozdeg'," "
           return
'*************** EKRAN TEMIZLEME ALT PROGRAMI ************
ekransil:
          lcdout $FE,1
          return

End


>Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: eistain_54 - 17 Şubat 2011, 18:24:04
Anladım.Ancak pc klavyeden gelen veriyi kullanmak gerçekten kolay bir iş değilmiş bunu gördüm. :)Şimdi ikinci bir konu daha var.Seri porttan pice bir takım veri gönderilecek.Yani baya takım.Cümlecik gibi.İçinde bazı bilgiler olacak.Örnek bi cümle yapısı ;

          Har,Yol,Hız,Der
Başında da "GELEN" diye bir işaret verisi var.Şimdi benim sormak istediğim burda bir de uyandırma sinyali varmış.Nedir bu "Uyandırma Sinyali"?
Ne için kullanılır nasıl kullanılır falan?Birde ben bu verileri hserin ile alıp bir tek değişken içine mi saklayabilirim yoksa aynı anda çok değişkene atabilirmiyim?Şöyle;
           enable
           kesme:
           HSERIN 300,devam [("GELEN"),değişken1,değişken2....]
           devam:
           resume

falan gibi bişey.Burda "GELEN" adlı başlık içinde yukarıdaki gibi bir veri paketi var.Bu paket içindeki verileri üstteki kodda olduğu gibi sırayla değişken1,değişken2... içine alabilirmiyim.Daha açık olursak "Har" adlı veriyi değişken1 içine "Yol" adlı veriyi değişken2 içine "Hız" adlı veriyi değişken3 içine "Der" adlı veriyi değişken4 içine ayrı ayrı kesme alt programında Hserin ile yapabilirmiyim?Yoksa başk bir yöntemi varmıdır?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 17 Şubat 2011, 19:33:28
Seri haberleşmede en önemli konu senkron tutturmadır. Bu ne anlama geliyor dersen.
Bir veri yolluyorsun. Yollanan veri birim zamanda belirli sayıda bit bilgisi şeklinde yollanıyor.
Bu nedenle yollayan veriyi yolladığı zamanda alacak olan almak için hazır bekliyor olması lazımki gönderilen veri eksiksiz olarak alınabilsin.
Şimdi bir verici düşün. Aynen şu şekilde çalışıyor;
BASLA:
Hız,zaman,adet vs yolla
pause 100
goto BASLA
şimdi bu komutlara bakarsan bir takım bilgiler yollanıyor sonra 100ms bekleniyor ve yeniden yollanıyor.

Şimdi aynı veriyi alan sisteme bakarsak,

BASLA:
Verial
pause 100
Goto basla
Şimdi her iki programda da pause 100 komutu var. Normal şartlarda veri yollama süresi 1-3 ms arasında bir zaman alır.
Verici yolladığı zaman alıcı pause komutunu işliyorsa ne olacak? tabiiki gelecek bilgiyi alamayacaktır. Neden çünki o anda başka işle meşguldür.
Peki pause komutlarını kaldıralım he iki  taraftan. Bu işlem verilerin yollanma ve alınma ihtimalini biraz daha artıracaktır.
Ama veri alacak olan program hemen almaya başlasa direk yollanan veriden başlayacaktır.
Hele birde USART kesmesi kullanırsanız. İlk veri biti ulaştığı zaman kesme oluşacak ve ilk byte güme gidecektir. Peki ne yapmak lazım?
O halde yollanan bilgi paketininbaşına belirli bazı ön bilgi eklenirse o bilgiler USART ı uyandırmış olur ve program kesme kısmına atlar ve ardından gelen asıl bilgi alınarak veri kaybı önlenmiş olur. İşte bu önden yollanan bilgiye uyandırma sinyali adı verilir. Formatı da;
5 byte $AA bilgisi ardından 5 byte $FF bilgisi ardından 5 byte $00 bilgisi şeklinde yollanır. Bu formattaki bilgiye preambl + uyandırma sinyali adı verilmektedir. Bu bilgi usart'a ulaştığında veya aradan alıcı devreye ulaştığında peşinden gelen işaretçi aranarak uyandırma ardındaki asıl veriye ulaşılmış olacaktır.
USART uyandırma sinyali ile kesmeyi oluşturur ve kesme kısmında da işaretçi sorgulaması ile ardındna gelen alınarak veri kaybı önlenmiş olur.

Toparlarsak, Yollanan bilginin eksiksiz alınabilmesi için senkron tutturulması çok önemlidir. Bu nedenle alıcı program çok zaman alan işlerle oyalandırılmamalıdır. Verici aralıklı olarak veri yollayabilir. Ancak alıcı daha sıklıkla gelen veriye bakmalı ve mümkünse USART kesmesi kullanılmalıdır. Kesme kullanılınca da veri başında mutlaka uyandırma sinyali yer almalıdır. Böylece USART erken uyandırılarak kesme oluşturulup gelen veri eksiksiz alınacaktır.
Yollanan bilgi 8 er bitlik birden fazla değişken halinde yollanabilir. Alıcı ise gelen bilgi sırasını bilerek ona uygun değişkenlerle gelenleri alabilir.
Yani ne kadar bilgi gelecek ise o kadar değişken adedi kullanmak gerekir. Bu nedenle yazdıkların doğrudur (degisken1,degisken2....degiskenx  gibi).

Ete


Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: eistain_54 - 17 Şubat 2011, 22:00:19
Hocam çok teşekkür ederim.Buraya kadar tamam.Şimdi uyandırma sinyalinin formatını da verdiniz ama onu cümlecikler ile aynı bloktamı gönderecez.Yani;
   $AA,$FF,$00,("GELEN")har,YOL,HIZ,DER
Gibi birşeymi olacak yoksa?Aslında sanki bunun alıcı tarafında çok önemi yokmuş gibi?Çünkü zaten bize lazım olan değerler orada değil.Biz alıcı tarafındaki usart kesmesi içinde direkt olarak başlık kontrolünün ardından değişkenlere eşitleme işlemini başlatabiliriz sanırım?
HSERIN 10,DEVAM,[("GELEN"),değişken1,değişken2,değişken3,değişken4] : DEVAM :resume
gibi bişey.Yani uyandırma sinyalinin alıcı tarafında dikkat edilmesi gereken birşey yok öylemi?Doğru anlamışmiyim? Teşekkürler...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 17 Şubat 2011, 22:23:26
Yollama formatı,

       HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
       HSEROUT ["G","E","L","E","N",HAR,YOL;HIZ;DER]

şeklinde olacaktır. REP$AA\5  komutunun işlevi şöyledir. RE=REPEAT anlamına gelir  komuttan sonra gelen $AA bilgisini \5 komut parametresi ile verilen adet kadar işletir. Yani $AA bilgisini 5 defa yollar.

USART kesmesi açmak için programın başına aşağıdaki kodları eklemen gerekiyor. Bunlar kesme registerlerini set ederek kesmeyi aktif hale getireceklerdir.
DEFINE OSC 4
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically 

INTCON=%11000000

ON INTERRUPT GOTO INT
 
SYMBOL GIE  =INTCON.7   'genel interruptları açıyor
SYMBOL PEIE =INTCON.6   'peripheralinterruptları açıyor
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit

RCIE=1
PEIE=1
GIE=1


Sonra programon kesme kısmıda aşağıdaki şekilde olabilir;

DISABLE
INT:
    GIE=0
    hSerIn , [WAIT("GELEN"),HAR,YOL;HIZ;DER] 
    TEMP=RCREG
    GIE=1
    Resume
    enable
end

Burada önemli olan kesme bayrağının RCREG registerinin okunması ile silindiğidir.
Bu işide TEMP=RCREG  komutu yapmaktadır.
Umarım artık ekisk bir şey kalmamıştır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: eistain_54 - 17 Şubat 2011, 23:26:51
Gerçekten biiti gibi.Sadece son bir soru bu konuya dair.Sizin verdiğiniz ikinci kodda yani;
hSerIn , [WAIT("GELEN"),HAR,YOL;HIZ;DER] Seriden GELEN başlıklı dosya gelecek onu bekle gelen verileri sırayla "HAR,YOL,HIZ,DER" değişkenlerine kaydet mi yoksa GELEN başlıklı dosyayı bekle gelen veriler şu veriler...Nerde kullanacaksan kullan anlamına mı geliyor?Ya çok uzattım biliyorum ama son sorum.(bu konuyla ilgili) TEŞEKKÜRLER.Çok yardımcı oldunuz ÇOK SAOLUN....
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 18 Şubat 2011, 08:34:15
Sorun için vermiş olduğun iki yanıt da doğru. Birincisi, GELEN işaretçisi ni bekle ve ardından gelen verileri alıp değişkenlere yerleştir.
SOnra onları nerede kullanırsan kullan. Bu sana kalmış bir iş. Burada dikkatini çekeyim. "Gelen"  işaretçisi peşine 5 adet değişken ismi koyar ve gelen veride 4 adet byte dan oluşur ise sıkıntı yaşarsın. Senkron bozulur. Zira veri4 adet byte dır ve sen 5 adet beklemiş olursun 5. byte beklenirken program orada muhtemelen takılıp kalır.
Ama gelen veri 5 adet byte ve sen yalnızca 4 değişken ismi yazmış ise gelen 4 adet alınır ve beşinci ise bırakılır ve bir yerde atlanmış olur. Bunda sorun yok. Ama doğru kullanım kaç adet veri geliyorsa o kadar değişkenle bunların alınmasıdır.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: eistain_54 - 18 Şubat 2011, 13:07:00
Yani alıcı kısmında gelen verileri aynı isimde kaydedicilere ekliyoruz.Tercih bizim farklı isimde kaydedici de kullanılabilir mi?Şimdi hemen denemeye koyuluyorum o halde.Yardımlarınız için teşekkür ederim...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: microlight - 18 Şubat 2011, 21:53:09
ete derslerindeki  seri iletişim uygulamasını biraz  değiştirmek istiyorum.  verici lamba  alıcı ldr  olacak. 
diğer  formlarda arkadaşlara aynı  soruyu  sordum, onlar  bu uygulamanın 628 ile olmayacağını  söylediler.
bu uygulamayı 16f628 de  neden yapamıyorum. 628 in  AN pinleri  anolog değil mi ?  sorun  nedir ki   AN  pinlerinden  ldr girişi olmuyor.
AN pinleri 628 de nasıl anolog olarak kullanılır.

hocam çalışmalarınızda  başarılar

not:  ETE derslerini 12 ye kadar okudum  torik  olarak,  çok az  uygulama  yaptım.

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 19 Şubat 2011, 00:37:11
16F628 de ANALOG giriş yoktur, comparator vardır.
her AN yazan giriş analog giriş olmuyor

onun yerine analog girişi olan başka birşey kullanabilirsiniz mesela 16F88 gibi.

direnç okumanın başka yollarıda var olmazmı
ama en doğrusu 16F88 gibi bir işlemci ile yola devam etmek
POT komutuna bakılabilir örnek olarak.

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: firtina - 20 Şubat 2011, 22:21:07
Dostlar ben bir şey danışacağım
Servo motoru önce sola sonra sağa, durdurulana kadar döndüren bir program yazmaya çalışıyorum.

devre şeması:
[IMG]http://img145.imageshack.us/img145/666/servodeneme.png[/img] (http://img145.imageshack.us/i/servodeneme.png/)

kondanstörler arasındaki eleman 4MHz'lik kristaldir

16f628a çipi kullamak amacı ile hazırladığım program alttaki gibi
b0 var byte
b2 var byte
b0 = 100
b2 = 1
basla:
pulsout 2, 150
pause 20
b2 = b2 + 1
if b2 > 100 then sol
goto basla
sol:
pulsout 2, b0
pause 20
b0 = b0 + 1
if b0 > 199 then sag
goto sol
sag:
pulsout 2, b0
pause 20
b0 = b0 - 1
if b0 < 101 then sag
goto sag

ama -20 derece dönüp sağa dönüyor ve duruyor.
Öneriniz nedir?



Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: bircan - 27 Şubat 2011, 18:54:51
mrb ete hoca bende sizin baslatiginiz sayenizde ogrendigimiz pic basic i ogreniyorum. geldigim asama olarak suan 5. derse gelmis durumundayim fakat bu derslen ilgili olarak biraz sikinti yasiyorum. bunlardan birincisi:ADC kismindaki sayisal hesaplama boyutu ikincisi ise uygulama olarak orneklerin kisitli olmasindan kaynakli. bu konuda sizin bu konuya yonelik hem anlatim hemde uygulama olarak onereceginiz yontem veya kaynak var mi?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 27 Şubat 2011, 22:15:54
Fırtına,
Servo motorlar puls ile konum alan motorlardır.  Piyasa motorları genelde 50-200 us arasındaki pulsları kabul eder.
Denemeni simulasyon programındamı yapıyorsun yokse gerçek motorlamı yapıyorsun.?
Şayet gerçek motorla yapıyor isen puls aralığını öğrenmen gerekiyor. 0,5-2ms şeklkinde veriliyor bu aralık. Seninki nedir.?

Ona göre öneride bulunacağım.


Bircan,

Derlerdeki örnekler bence yeterli . Bir çok kişi bunlardan öğrendi . Senin takıldığın yer neresidir yada öğrenmek istediğin nedir? Daha fazla detay verirsen yardımcı olabilirim.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: firtina - 28 Şubat 2011, 18:29:04
Simulatör programında test ediyorum.Benim yazdığım koddaki puls değeri pulsout komutunun mikrosaniye x 10 komutundan dolayı 1,0 ve 2,0 milisaniye arasında gidip geliyor, ama servo motordaki oynama dalgalarla orantılı değil.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 28 Şubat 2011, 19:58:37
Fırtına,

Aşağıdaki örnekleri bir incele bakalım .
Simulasyondaki motorlar 500us - 2000us arası palslarla çalışır.
Pulsout süresi 1250 us  (pulsout değeri 125) olursa motor orta noktada durur.
Pulsout süresi 2000 us (pulsout değeri 200) olursa motor sola döner
Pulsout süresi   500 us (pulsout değeri 50) olusa motor sağa döner
500us lik puls ile motor maksimum sağ noktasına gelir. 2000us lik puls ile motor maksimum sol noktasına gelir. Aradaki değelerde motoru sağ ile sol arasında gezdirir. Orta nokta için 1250us puls verilmesi gerekir.

http://www.upload.gen.tr/d.php/www/1e0wqhxs/SERVO_ETE.rar.html

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sorridente - 01 Mayıs 2011, 01:43:32
İyi geceler bnm de bir sorum olacaktı.PıcBasic dilini bilmiyorum ve Elimde klavyeden girilen sayıya kadar sayan bir program var bu programı girilen sayıdan sıfıra doğru saymasını sağlamak için programda hangi kodlarda değişiklik yapmalıyım.
YATAY_A VAR PORTB.4
YATAY_B VAR PORTB.5
YATAY_C VAR PORTB.6
YATAY_D VAR PORTB.7
DIKEY_1 VAR PORTB.1
DIKEY_2 VAR PORTB.2
DIKEY_3 VAR PORTB.3

DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 1
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 0


ZAMAN VAR WORD
TUS VAR WORD
'-------------------------------------------------------------

TRISB=%0001110
TRISA=%00000000
OPTION_REG.7=0

'-------------------------------------------------------------

RESET :
TUS=0
ZAMAN=0
YATAY_A=1
YATAY_b=1
YATAY_c=1
YATAY_d=1
LCDOUT $FE,1, "SAYIYI GIRINIZ"
GOTO BASLA

SAYDIR:
LCDOUT $FE,1, "ZAMAN=", #ZAMAN
If DIKEY_1=0 Then
GOTO RESET
While DIKEY_1=0
Wend
Endif
IF ZAMAN=TUS+1 THEN
GOTO RESET
LCDOUT $FE,1, "SAYMA TAMAMLANDI"
ELSE
PAUSE 1000
ZAMAN=ZAMAN+1
GOTO SAYDIR
ENDIF
RETURN

EKRAN:
Lcdout $FE,1, "GIRILEN SAYI= ",#tus
pause 50
RETURN
'------------------------------------------------------------

BASLA:

YATAY_A=0
PAUSE 50
If DIKEY_1=0 THEN
Tus=1
GOSUB EKRAN
While DIKEY_1=0
Wend
Endif

If DIKEY_2=0 Then
Tus=2
PAUSE 50
GOSUB EKRAN
While DIKEY_2=0
Wend
Endif

If DIKEY_3=0 Then
Tus=3
PAUSE 50
GOSUB EKRAN
While DIKEY_3=0
Wend
Endif

YATAY_A =1
YATAY_B =0

If DIKEY_1=0 Then
Tus=4
PAUSE 50
GOSUB EKRAN
While DIKEY_1=0
Wend
Endif

If DIKEY_2=0 Then
Tus=5
PAUSE 50
GOSUB EKRAN
While DIKEY_2=0
Wend
Endif

If DIKEY_3=0 Then
Tus=6
PAUSE 50
GOSUB EKRAN
While DIKEY_3=0
Wend
Endif

YATAY_B=1
YATAY_C=0

If DIKEY_1=0 Then
Tus=7
PAUSE 50
GOSUB EKRAN
While DIKEY_1=0
Wend
Endif

If DIKEY_2=0 Then
Tus=8
PAUSE 50
GOSUB EKRAN
While DIKEY_2=0
Wend
Endif

If DIKEY_3=0 Then
Tus=9
PAUSE 50
GOSUB EKRAN
While DIKEY_3=0
Wend
Endif
YATAY_C=1
YATAY_D=0

If DIKEY_1=0 Then
PAUSE 50
GOTO RESET
While DIKEY_1=0
Wend
Endif

If DIKEY_2=0 Then
Tus=0
PAUSE 50
GOSUB EKRAN
While DIKEY_2=0
Wend
Endif

If DIKEY_3=0 Then
PAUSE 50
GOSUB SAYDIR
While DIKEY_3=0
Wend
Endif
YATAY_D =1
pause 50
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 01 Mayıs 2011, 08:23:39
Aşağıdaki kısmı yazdığım şekilde değiştir. Bu hali ile sayıdan itibaren sıfır da dahil olmak üzere sayar. Şayet sıfırda kalmasını istersen
"IF ZAMAN=255 THEN"   satırını   "IF ZAMAN=0 THEN " olarak değiştir.
Programda bazı kusurlar var.  Birincisi GOSUB ile gidilen yerden yeniden goto ile dönülüyorki bu stack taşmasına sebep olur. Program bir müddet sonra kitlenir yada abuk subuk çalışmaya sebep olur.
İkincisi tuş tarama sonunda her hangi bir yönlendirme komutu koyulmamış buda bir eksiklik bence.


SAYDIR:
          ZAMAN=TUS
SAYBIR:         
          LCDOUT $FE,1, "ZAMAN=", #ZAMAN
          If DIKEY_1=0 Then
            GOTO RESET
            While DIKEY_1=0 : Wend
          Endif
          IF ZAMAN=255 THEN
            GOTO RESET
            LCDOUT $FE,1, "SAYMA TAMAMLANDI"
          ELSE
            PAUSE 1000
            ZAMAN=ZAMAN-1
          GOTO SAYBIR
          ENDIF
          RETURN


Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 01 Mayıs 2011, 12:26:35
merhaba;

UART kesmesini tam olarak anlatırmısınız, bazı sayfalardan bakıyorum ama tam bahsedilmedigi için ne işe yaradıgını tam bilmiyorum.


uart kesmesinden benim anladıgım şu;

rx ve tx pin özelligi olan piclerde uart kesmesini kullandıgımızda örneğin; seri data alacaksak bu kesme altında bekleyerek picin normal döngüsünü mesgul etmemiş oluruz.  bu mudur ?

bu özelligi bilmedigim için yapmıs oldugum bir saat devrede RF kitinden gelecek olan seri bilgi ile saat ayarlayacaktım fakat seri bilgi beklerken bu sefer saat programı çalısmıyordu çünkü program seri bilgi alma komutunda takılıp kalıyor, nezaman bir bilgi gelse 1 kez döngü oluyor tekrar orada takılı kalıyordu. bende baska bir picte rf den seri datayı alıp 4 bitlik paralel çıkıs yapıp, saat devresindeki pic e  paralel olark yapmıştım.

bu şekilde yapılacak projelerde uart kesmesını nasıl kullanmalıyım yani, hem istenilen program sürekli çalısacak hemde seri bilgi geldigi zaman alınacak.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 01 Mayıs 2011, 13:56:54
USART kesmesi demek istedin sanırım. Universal Serial Port anlamına gelmekte olup geri planda takip edilen bir işlemdir.
Tahminin doğru, Dışarıdan ön tanımlı RX pinine geçerli bir sinyal geldiği zaman Pic hemen kesme oluşturup programın gelen bilginin alınmasını sağlar. Böylece sen RX pininden bilgi geliyormu diye sürekli bakmak zorunda kalmazsın. Aynı şekilde pic in kendi registerlerini kullanarak da TX pinine verdiğin bilgiyide dışarıya yollama işinide yapar. Ancak yollama için bir kesme gerekmediğinden genelde yalnızca RX için kesme kullanılır.

Bir USART kesmeini aktif edebilmek için Önce Global Kesmeler (INTCON.7) aktif edilir. Daha sonra peripheral Kesmelerde açılrı (INTCON.6)
Daha sonra USART receive Kesmesi (PIE1.5) aktif hale getirilir.
Bu işlemler Usart kesmesini açar. Tabiiki Basic de program yazılıyor ise bir de ON INTERRUPT GOTO KESME şeklinde bir satır daha ilave edilmesi gerekir.

Kesme kısmında ise ;
Gelen Bilgi Hesrin komutu ile alınır. varsa işaretçi önce beklenir ardından gelen bilgiler alınır. Örnek vermek gerekir ise;
HSerIn , [WAIT("TMR"),zaman,GUC]     şeklinde olabilir.
Bazen istenmeyen sinyaller kesmenin açılmasına veya bir başka vericiden gelen sinyaller de kesmenin aktif olmasına sebep olur.
Bu durumda Hserin komutunda program en azından 65535 ms beklemek zorunda kalır. Halbuki bizim istediğimiz bir kaç ms istenen bilgi gelmez ise yada gelen bizim istediğimiz değil ise oradan çıkılmasıdır. Bu nedenle komuta bir timeout (zamanaşımı) süresi ile gidilecek etiket adı ilave edilir.
HSerIn ,5,ATLA, [WAIT("TMR"),zaman,GUC] 
Burada 5 rakamı en fazla 5 ms gelen bilgi beklenecek anlamınadır. Gelmez ise ATla isimli etikete gidilecektir.
Bir diğer önemli konu ise Kesme bayrağının sıfırlanması olayıdır. Kesme bayrağı yalnızca okunabilir bir bayraktır ve ancak RCREG registerinin bir başka değişkene eşitlenmesi halinde bayrak sıfırlanır.
Bu nedenle kesme kısmında gelen bilgi alındıktan sonra ;
TEMP=RCREG  şeklinde bir satır ilave edilir.
Bu satırdan sonra  kesmeden çıkılabilir. Gerekirse yukarıda anlattığım Atla isimli etiket bu satırdanöncesine yazılabilir. Yani,
ATLA:
TEMP=RCREG
Resume
Enable
şeklinde kesme sona erdirilir.
Hepsi bu kadar umarım anlaşılmıştır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Andromeda - 01 Mayıs 2011, 14:34:03
ete  güzel anlatmış...
bende bir ara uğraşmıştım.
benim 1 ms bile  beklemeye tahammülüm olmadığı için alıcı modülüne
bilgi geldiğini anlamak için asm ile bir register kontrolu yapmıştım..
ama nasıl yapmıştım hatırlamıyorum :)
bu kontrol birkaç mikrosaniyede bitiyordu...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 01 Mayıs 2011, 19:39:05
ete hocam çok teşekkür ederim usart kesmesi anlaşıldı kısa zamanda uygulamasını yaparak daha da net anlayacagım.

usart kesmesini kullandıgımız zaman tmr0,b0,b4-b7 kesmelerinide kullanabiliyormuyuz aynı program içinde ?

varsa usart ile ilgili RF li bir örnek program gönderebilirmisiniz ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 01 Mayıs 2011, 19:45:47
Bütün kesmeler birlikte kullanılabilir. Her kesme oluştuğunda program tek bir yere yönelmeli Oda KESME isimli etiket.
Burada kimin kesmeyi oluşturduğuna bakıp ona göre işlem yapılmalıdır. Kimin kesme yarattığını anlamak için kesme bayraklarına bakmak gerekir.

Örnek programa pek gerek yok öyle değilmi. Yukarıda ne yapman gerektiğini açıkladım. Uygula ve örneğini kendin yarat istersen.
Yapamazsan devreye girelim ne dersin.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 01 Mayıs 2011, 23:31:05
tamam çok teşekkür ederim destekleriniz için .malzemeleri toplayıp devreyi yapıyım aksi durumda tekrar dönerim, saygılar ....
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 12:30:14
selam,

ETE hocam,  sitenden buldugum bir programı deneme amaçlı düzenledim ve programı derlerken TEMP=RCREG kısmında hata verdı (  ERROR Line 86: Syntax error. (RFAL.pbp) )   şeklinde.

usart ayarlarını bilmedigim için siteden aldıgım bir programın ayarları ile aynı.




@ DEVICE PIC16F877A                                                     
@ DEVICE PIC16F877A, WDT_OFF       
@ DEVICE PIC16F877A, PWRT_ON             
@ DEVICE PIC16F877A, PROTECT_OFF                     


DEFINE  HSER_RCSTA 90h 
DEFINE  HSER_TXSTA 24h   
DEFINE  HSER_BAUD  1200 
DEFINE  HSER_SPBRG 207 
DEFINE  HSER_CLROERR 1   
SYMBOL  GIE  =INTCON.7 
SYMBOL  PEIE =INTCON.6 
SYMBOL  RCIE =PIE1.5   
SYMBOL  RCIF =PIR1.5
ON INTERRUPT GOTO KESME
OPTION_REG.7=0
ADCON1=7
RCIE=1
PEIE=1
GIE=1


TRISA=%00000000
TRISB=%00000100
TRISC=%00000000
TRISD=%00000000
TRISE=%000

OPTION_REG.7=1
VERI VAR BYTE
PAUSE 500

PORTB=0
PORTA=0
PORTC=0
PORTD=0
PORTE=0

 
ANADONGU:


IF VERI=100 THEN
HIGH PORTB.1
PAUSE 500
LOW PORTB.1
PAUSE 500
HIGH PORTB.1
PAUSE 500
LOW PORTB.1
PAUSE 500
HIGH PORTB.1
PAUSE 500
LOW PORTB.1
PAUSE 500

ENDIF

VERI=0

GOTO ANADONGU

DISABLE
KESME:
GIE=0
HSerIn ,5,ATLA, [WAIT("DATA"),VERI]



ATLA:
TEMP=RCREG
GIE=1
Resume
enable
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 09 Mayıs 2011, 12:55:32
Değişken tanımlamalarında ;
Temp Var Byte şeklinde Temp değişkenini tanımlaman gerekemzmi sence?
O hata değişkenin tanımlanmaması nedeni ile verilmiş.

Usart ayarlarını bilmiyorum demişsin ama yukarıdaki mesajlarımıda okumamışsın anlaşılan. Ayarları sana verdim zaten.
Alıntı YapBir USART kesmeini aktif edebilmek için Önce Global Kesmeler (INTCON.7) aktif edilir. Daha sonra peripheral Kesmelerde açılır (INTCON.6)
Daha sonra USART receive Kesmesi (PIE1.5) aktif hale getirilir.
Bu işlemler Usart kesmesini açar. Tabiiki Basic de program yazılıyor ise bir de ON INTERRUPT GOTO KESME şeklinde bir satır daha ilave edilmesi gerekir.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 13:59:25
programı diger konulardan aldıgım için degişken olacagını tahmin edemedim.
TEMP VAR BYTE  olarak tanımladım, temp içeriği ne olacak ?

programda yazılış yerleri ile sizin anlatıgınızın arasında bir baglantı kuramadıgımdan sorum. örnegin kesme içerisindede  gie=1 gie=0 kullanılmıs, bunların nerede kullanılacagını bilmemem önemli değilmi?  define olarak çagrılan kodların karsılarında HSER_BAUD  1200  , HSER_SPBRG 207   gibi tanımlamalrda degişkenler öenmli değilmi.

define HSER_BAUD  1200

kullanmışım ama data gönderdigim programda SEROUT2 PORTB.5,396  kullanmısım buradaki baud ayarları farklı değilmi?  define HSER_BAUD  1200  burdaki 1200 neye göre yazılıyor?

bunların ayarlarının nasıl olacagını sormustum hocam !!!

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 09 Mayıs 2011, 14:27:48
Emrah,

Define tanımlamaları elbette önemli. Ancak orada herhangi bir değişken kullanılmıyor. Onlar pic in register isimleridir.
Define tanımlamaları için en güzeli  "PicMultiCalc.Exe" isimli programı kullanmaktır. İnternette ararsan bulabilirsin.
Programın USART butonuna tıklayınca  sana osc frekansını , haberleşme hızını zoruyor ve bunları girincede hesabı yapıp bulduklarını hem ekrana hemde bir yere yapıştırabilmen için clipboard a kopyalıyor.

Diğer bilgilere gelince programa bakınca ;
SYMBOL  GIE  =INTCON.7
SYMBOL  PEIE =INTCON.6
SYMBOL  RCIE =PIE1.5   
SYMBOL  RCIF =PIR1.5
atamalarını görebiliyorsundur. Burada GIE nin aslında INTCON.7 olduğunu hemen anlaman gerekir.
PEIE ninde INTCON.6 olduğunu anlaman gerekir.

Sonuçta o program USART kesmesi için bir örnek. Haberleşme hızları benim ayarladığım şekilde değil. Nerden aldın bilemiyorum programı ama doğru ayarlar aşağıdadır;
1200 Baud için
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 51  ' 1200 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

2400 Baud için
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

4800 Baud için
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 12  ' 4800 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

9600 Baud için
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Bu programı amacına uygun düzenleyerek kullanabilirsin. Yinede anlamadığın kısımlar var ise yalnızca o kısımları sorarsan açıklarım. Soruları çok genel sorunca konu dağılıyor.

Ete


Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 15:15:55
uygulamadan önce programı simulasyonda deniyorum fakat olmuyor.
alıcı ve verici programını veriyorum birde siz inceleyin.
define ayarlarını dediginiz programda 1200 baud a göre ayarladım.

verici:

@ DEVICE PIC16F628A                                                     
@ DEVICE PIC16F628A, WDT_OFF       
@ DEVICE PIC16F628A, PWRT_ON             
@ DEVICE PIC16F628A, PROTECT_OFF         
@ DEVICE PIC16F628A, MCLR_OFF             
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT

CMCON = 07    ;PORTA Dijital
INCLUDE "modedefs.bas"
OPTION_REG.7 = 1   ;PORTB Pull-UP lar aktif
TRISB = %00000001     ' BUTON PORTB0, DATA PORTB5
TRISA = %00000000
VERI VAR BYTE

PAUSE 500

PORTB=0
PORTA=0
VERI=100
ANADONGU:

       IF PORTB.0=1 THEN
       SEROUT2 PORTB.5,1200,[REP$AA\5,REP$00\5,REP$FF\5]  ;Preamble + Sencron Gönderimi   
       SEROUT2 PORTB.5,1200, ["D","A","T","A",dec VERI] 
     
       SEROUT2 PORTB.5,1200,[REP$AA\5,REP$00\5,REP$FF\5]  ;Preamble + Sencron Gönderimi   
       SEROUT2 PORTB.5,1200, ["D","A","T","A",dec VERI]
        ENDIF
       
       PAUSE 10
     
       GOTO ANADONGU

alıcı :

@ DEVICE PIC16F877A                                                     
@ DEVICE PIC16F877A, WDT_OFF       
@ DEVICE PIC16F877A, PWRT_ON             
@ DEVICE PIC16F877A, PROTECT_OFF                     


'DEFINE  HSER_RCSTA 90h 
'DEFINE  HSER_TXSTA 24h   
'DEFINE  HSER_BAUD  396 
'DEFINE  HSER_SPBRG 207 
'DEFINE  HSER_CLROERR 1 

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 51  ' 1200 Baud @ 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically




 
SYMBOL  GIE  =INTCON.7 
SYMBOL  PEIE =INTCON.6 
SYMBOL  RCIE =PIE1.5   
SYMBOL  RCIF =PIR1.5
ON INTERRUPT GOTO KESME
OPTION_REG.7=0
ADCON1=7
RCIE=1
PEIE=1
GIE=1


TRISA=%00000000
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%000

OPTION_REG.7=1
VERI VAR BYTE
TEMP VAR BYTE
PAUSE 500

PORTB=0
PORTA=0
PORTC=0
PORTD=0
PORTE=0
VERI=0

 
ANADONGU:


   

IF VERI=100 then
HIGH PORTB.2
else
LOW PORTB.2
ENDIF

HIGH PORTB.1
PAUSE 500
LOW PORTB.1
PAUSE 500
HIGH PORTB.1
PAUSE 500
LOW PORTB.1
PAUSE 500
HIGH PORTB.1
PAUSE 500
LOW PORTB.1
PAUSE 500



GOTO ANADONGU

DISABLE
KESME:
GIE=0
HSerIn ,3,ATLA, [WAIT("DATA"),VERI]




ATLA:
TEMP=RCREG
GIE=1
Resume
enable
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 09 Mayıs 2011, 15:28:44
Alıcı kısmına bir bak ;
Alıcı RF modülden çıkan sinyalin Pic'e girişinde bir giriş pini gerektirir.
Peki nerede senin giriş pinin.
Programa bir bak istersen hiç bir tane TRIS register ayarı yok. Bunları düşünmen gerekir. Öyle değilmi.
USART kullandığın zaman standart USART pinlerini kullanman gerekir. Bunlar 16F877A da;
TX= PortC.6
RX= PortC.7

Bu durumda PORTC.7 nin mutlaka giriş olarak ayarlanması gerekir. TRISC=%10000000 şeklinde
Diğer Tris registerlerinide yazsan iyi olur.

Simulasyon için, Vericide TX pini PortB.5 gözüküyor. Bu pin ALıcıda PortC.7 ye bağlanacaktır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 16:05:56
evet oraları ayarlamayı unutmusm. fakat halen calıstırmadım simulasyonda. size simulasyon ve kodları gönderiyorum hocam, buseferki sorunu bulamıyorum. bilmedigim yerlermı var halen?

http://hotfile.com/dl/117237543/fb7194a/RF.rar.html
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 09 Mayıs 2011, 18:12:11
Yine bazı eksikler var ama asıl önemlisi, 1200 Baud un bu işe an azından isisde uygun olmaması.
Bu nedenle hızı 2400 Baud'a yükselttim.
Kesme kullanılanbir programda pause komutu kullanılamaz. Zira pause süresi dolana kadar kesme oluşsada program komutu bitirinceye kadar kesme etiketine gidemez. Bu nedenle pause yerine pauseus kullanmak ve bu komut da da süreyi 5 us den fazla yapmamak gerekir.
Bu dediklerimi uyguladığım ve amacına uygun olarak yapmaya çalıştığım program aşağıdaki linktedir.

http://dl.dropbox.com/u/25364674/RF_ete.rar

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 18:30:00
ete hocam yardımlarınız için çok teşekkür ederim.

simulasyonda data yoluna baglı olan şey ne içindir? olmazsa olmazmı ?

benm program yapmak istedigim şu idi fakat yaptıgınıuz biraz farklı olmus

alıcı devresindeki kırmızı led ana döngüde sürekli yanıp söneceti ve data geldigi zaman usart kesmesi olusup yeşil led yanacaktı.

amacım; ana döngü meşgul olmadan ( kırmızı led sürekli yanıp sönerken) seri bilgi geldiginde yeşil ledin yanması.

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 09 Mayıs 2011, 18:37:40
Onun adı Virtual Terminal dir. Seri portun çalışıp çalışmadığını oradan gözlemleyebilirsin.
Ona sağ tıkla ve açılan pencerede Baud Rate karşısına 2400 yazıver.
Daha sonra programı çalışıtır ve yukarıda Debug menüsünü açıver.
Açılan pencerede altta yer alan seçeneklerden 2 numarada yer alan "Watch window" a tıkla.
Aynı şekilde 5 numarada yer alan Virtual Terminale de tıkla. Böylece bunlara ait aletler akrana gelecektir.
Butona bastığın zaman Virtual terminalde gönderilenleri görebilirsin.
Gerçek devrede bu alet tabiiki olmayacaktır. Yalnızca simulasyonda yardımcı olan ekipmandır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 18:50:02
sayenizde bunuda ögrendim hocam teşekkürler.

şöyle bir sorun oluyor ;
kırmızı led hızlı yanıp sönerken data göndermeye basılı tuttugumda kırmızı ledin yanıp sönmesi yavaşlıyor,bu simulasyondan dolayımı?

birde programda, data geldigi zaman yaptıracagımız işi kesme alt programı içerisinde yaptırabilirmiyiz ?

şu şekilde

ANADONGU:

PORTB.1=1
GOSUB GECIKME
PORTB.1=0
GOSUB GECIKME



GOTO ANADONGU

GECIKME:
        FOR I=0 TO 255
           PAUSEUS 5
        NEXT
        RETURN   
'-----------------------------------------------------------------
DISABLE
KESME:
GIE=0
HSerIn ,5,ATLA, [WAIT("DATA"),gelen]

IF gelen=100 then
portb.2=1
else
portb.2=0
endif

TEMP=RCREG


ATLA:

GIE=1
Resume
enable


Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 09 Mayıs 2011, 18:53:11
yavaşlama simulasyondan dolayı.
Diğer konuyu dene istersen. Orada yapacağın işin süresi uzun olmamalı. Uzun olursa veri kaçırırsın.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 09 Mayıs 2011, 18:56:08
herşey için tekrar teşekkür ederim hocam, iyi çalışmalar ...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 10 Mayıs 2011, 10:41:53
ete hocam sizin gönderdiginiz programda 16f877a için

adcon1=7 kullanmıssınız burayı anladım fakat cmcon=7 ne için?  bu komut 16f628a da copmaratör pinleri iptali için degilmi ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 10 Mayıs 2011, 10:45:33
16F877 de komparatör yoktur ama 16F877A da komparatör vardır.!!!!!!!!!!!!!!!!!!!

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 10 Mayıs 2011, 14:31:56
hocam dünkü projeyi uygulamak şimd nasp oldu fakat sorun var.

simulasyondaki gibi kesme olustugu zaman, ana menudeki yanıp sönen ledin flas hızı düşüyor.ve  100 bilgisi geldiginde diger ledin yanması gerekirken yanmıyor.

birde  verici programıda data gönderirken baud 396 olarak yazmışız? 2400 olması gerekmezmi? alıcı programında baud 2400 olarak ayarlı. verici programında  2400 yaptıgımda simulasyondada çalışmıyor.

YOLLA:
       SEROUT2 PORTB.5,396,[REP$AA\5,REP$00\5,REP$FF\5]  ;Preamble + Sencron Gönderimi   
       SEROUT2 PORTB.5,396, ["D","A","T","A",VERI] 
       RETURN
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 10 Mayıs 2011, 17:18:15
2400 Baud un karşılığı 396 dır. Lütfen MCS de komut üzerine kursörü getirip F1 tuşuna basın. Ekrana o komutla ilgili açıklamalar gelecektir. Oradan görebilirsiniz.
O programda flash led kullanmak çok mantıklı değil aslında. Zira ledleri flash yaptırırken bilgi alma kısmında aksamalar olabilir.
Flash işinide timer kesmesi kullanarak yapmak mümkün tabiiki ama iş epeyce uzayacak.
Benim amacım sana çalışanbir USART kesmesi göstermekdi onuda yaptım. Diğer isteklerini kendin geliştirmek durumundasın.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 10 Mayıs 2011, 20:24:22
flas led yapmak sadece bir örnekti hocam, yani amacm ana menü normal çalısırken usart kesmesi oldugunda etkilenip etilenmedigini gözlemekti. simulasyonda calıstırdıgımız komutları gercekte calıstıramadım. aceba board ustunde yanlıslıkmı yaptım dedim usart kesmesi olmadan normal seri datalar  gönderdiğimde onları alabiliyorum. nyse yarın tekrar ugrasacam. teşekkürler ...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 17 Haziran 2011, 23:23:56
merhaba,

timer0 kesmesi hakknda bir yerde takıldım.

ete hocamızın ders notlarında pwm konusuna bakıyordum. timer0 ile yapılan pwm programında  şurası aklıma takıldı!

PORTA=0:portb=0
TRISB=%00000000   '
TRISA=%00000000   '
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                               
@ DEVICE pic16F628, WDT_OFF                 'Watch Dog timer kapalı
@ DEVICE pic16F628, PWRT_ON                'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF          'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_off               'MCLR pini kullanılmıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
'-------------------------------------------------------------------------
ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10001000   'Pull up dirençleri İPTAL- Bölme oranı 1/1
INTCON=%10100000  'Kesmeler aktif ve TMR0 kesmesi aktif

TMR0=28

CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'----------------------------------------------------------------------------

'-----------------------------------------------------------------------------
CLEAR  'tüm değişkenler sıfırlandı
'PAUSE 200

'-----------------------------------------------------------------------------

BASLA:

GOTO BASLA

DISABLE
KESME:
      PORTA.0=1-PORTA.0
      @ nop
      @ nop
      TMR0=28
      INTCON.2=0        'TMR0 Kesme bayrağı sıfırlanıyor
      RESUME
      ENABLE
     
END

timer0 = 28 yapmakla ne yapılmıs oluyor ?   timer0 kesmesinde ayarlanan presicalra degeri ile kullanılan kristala baglı olarak belli bir usaniye de kesme olusmuyormu? bu timer0= 28 yada baska bir rakam yazmakla ne degişiyor?


Birde 3 çıkışlı pwm programında, baslarda     timer0=6 yapılmış, kesme içerisindeki timer0= 254 yapılmıs  buda baska daha baska bir olaymı ???

cevaplar için şimdiden teşekkkürler ...
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ilhan_mkp - 18 Haziran 2011, 00:00:04
tmr0 timeri 8bitlik bu da demek oluyor tmr0 ençok 255 değeri alabilir
yani 255 değerine ulaştığında kesme bayrağı set olur
sen tmr0 içine 28 değeri attığında 28 den 255 doğru sayar ve farklı bir zaman diliminde kesme olur
256-28=228 yani tmr0 her taşmada 0 yapılırsa 256 makina saykılında taşma olur 28 yaparsan 228 makina saykılında taşma olur


proton dersleri bölüm 2 ayrıntılı anlatım var

https://320volt.com/proton-plus-ile-pic-programlama-bolum-2/


alttaki bölümü incemen iyi olur bu tabi benim görüşüm


Yukarda Kullanılan TMR0 ile yapılan kesmenin zamanı 500 milisaniyedir. Gelin isterseniz bunu beraber hesaplayalım.

proton formul 1

Yukardaki Çözümde PIC in komut işleme süresinin (Makine Saykılı) 4Mhz lik Osilatör ile, 1 Mhz Olduğu Hesaplanıyor. Bu hesapla 1 Makine Saykılının süresi proton formul 2 formüle edersek 1uS olarak hesaplarız.

Yukardaki işlemden Sonra şimdi gelelim "Tmr0 ın zaman taşmasının" nezaman oluşacağına. Dikkat ettiyseniz Programın Başında "TMR0=6" ataması yapılmış bu atamayla Tmr0 sayıcısının "6" sayısından başlaması sağlanmıştır.

Böylece Tmr0 ın 250 adım sayması sağlanmıştır(256-6). Ayrıca OPTION_REG = %00000011 ayarlaması ile 1/16 oranı belirlenmiştir. Buradan bizim çıkaracağımız anlam şudur; her 16 makine saykılında Tmr0 sayıcısı 1 artsın.

Burada her 16uS de bir Tmr0 "1" Artacaktır. Ön ayar ile 250 ye Kadar saydırdığımız Tmr0 Zaman =250 * 16= 4000 us` lik zaman biriminde kesmeye girer. Sonuç Olarak Aşağıdaki Formül karşımıza çıkar.

formul3

If SAYI=125 Then
Toggle LED
SAYI=0
EndIf

Programda geçen yandaki komut satırı ile bu kesmenin her 125 defa oluşmasında LED ile tanımlanan PortD.0 numaralı çıkışı durum değiştirir. Aşağıdaki formülle bu durum değiştirme süresi 500mS olarak ayarlandığını görebilirsiniz.

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 18 Haziran 2011, 11:24:06
cevap için teşekkürler, şimdi daha net anlaşıldı
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Aziz Arslan - 03 Eylül 2011, 16:05:57
Merhaba.
''deneme'' isimli bir değişkenin içeriğini bir arttırma komutunu satırını ve portb.0 bitini çıkış yapmak için gereken komut satırını söyliyebilirmisiniz ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: t2 - 03 Eylül 2011, 16:19:45
''deneme'' isimli bir değişkenin içeriğini bir arttırma komutu:
deneme = deneme+1
portb.0 bitini çıkış yapmak:
low portb.0
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: fryrmnd - 03 Eylül 2011, 17:30:57
yalınz dikkat edin
low portb.0
ifadesi ile b0 pini low a çekilmiş oluyor.bunu istemezseniz program başında TRISB=0 kullanabilirsiniz. Tabi bu şekilde de tüm b portu çıkış olur. 
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emekli - 03 Eylül 2011, 19:01:11
ete  hocam ingilizca 0 olduğundan rapidshare  de dosya acamıyorum üçretli olduğu içinmi aceba
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 10 Ekim 2011, 01:53:10
Timer ile birlikte değişen bir değişken üretebiliyor muyuz acaba?
256 sayışta bir artmasın da her sayışta bir artsın.
Bunun en kolay yolu kesmenin sonuna tmr0=255 eklemek sanırım.Ancak bu sefer de kesmeye giriş çıkışta zaman kaybetmiş oluyoruz sanırım.Bu yüzden de bire bir sayış imkansız galiba
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 10 Ekim 2011, 07:35:32
@Aziz Arslan,
PortB.0 pinini çıkış yapacak komut,     Output Portb.0  şeklindedir.

@Emekli,
Rapid de dosya açmak terimi sanki Rapid'e bir dosyayı upload edeceksiniz anlamını çağrıştırıyor. İçimdenbir ses Rapid den dosya yüklemek istediğinizi söylüyor.  Hangi dosyayı yükleyecekseniz adresi verinne yapacağınızı söyleyeyim. İllaki İngilizce bilmek gerekmiyor. Yaşnızca bir iki kelime öğrenmeniz dosyayı yüklemeniz için yeterli.

@Pea,
Timerlar gibi seri değer artırımı yapabilen bir değişken üretmek zor. Yapabilirsiniz ama bir Timer gibi sayamaz. Sebebi ise şu, Gerek Timer0 ve gerekese Timer1 sayaçları işlemcinin osilatöründen puls alarak sayma yapabilir. Sizin kullanacağınız değişkende bu kadar hızlı sayabilmeyi sağlayacak bir özellik yok maalesef. Timer değeri her artışta kendi değişkeninizi artırmaya çalışsanız yazdığınız komut satırlarının yarattığı gecikmeler nedeni ile paralel değişim sağlayamazsınız.  Size çok hızlı bir sayım gerekmiyor ise enkolay yolu en kısa aralıklı bir Tmr0 kesmesi oluşturup kesme oluştuğunda sayacınızın değerini bir artırmak olabilir. Bu ise ortalam 100 çevrimde bir değer artırmak şeklinde yorumlanabilir. Çalışma frekansını artırırsanız süre dahada kısalacaktır. Biliyorsunuz 18F serisi 48Mhz de PLL yardımı ile çalışabilmektedir. Bu frekansta istediğinize yakın bir değer elde etmeniz mümün. Bu ihtiyacın nerden kaynaklandığını pek anlamadım ama ihtiyacın sebebini söylerseniz belki başka bir çözüm bulunabilir.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 10 Ekim 2011, 18:10:00
@ete
Cevabınız için teşekkür ederim :)
Aslında ihtiyaçtan öte merak ettim.Visual Basic biliyorum , arada sırada aklım oraya gidiyor.VB'te timer'a değişken atama vardı da.

Klasik PWM ile RGB led sürme uygulaması yapmak/öğrenmekle uğraşıyorum.12f675'in dahili osilatörünü kullanıyorum ve 15Hz'e ulaşabiliyorum.
Ana programı yarıda kesmeyecek şekilde timer'ı kısalttım.Kesme'de de sayaç ve if döngüleri var(sizin derslerinizdeki rgb pwm döngüsü).Sanırım bu döngüler çok fazla saykıl gerektiriyor.Assembly dosyasını açıp satırları saydım , 50 satır civarı çıktı.Timer'ı da 100 saykıl civarına ayarladım.
4Mhz/4(dahili osilatör) / 100(%100 duty için) / [50(kesme içi) + 100(timer)] = 66.7Hz oluyor.
Prescaler'da aldatmaca var demişsiniz , o bölümü tam anlamadım ama 1/2 bölme olsa bile 33Hz olur.Ben ise 15Hz çıkış alıyorum.

Assembly'deki komutları mı yanlış sayıyorum yoksa fazladan bölen bir şey daha mı var?
Bir de harici osilatör dışında mantıklı bir hızlandırma elde edemem sanırım , doğru mudur?

Teşekkürler
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 10 Ekim 2011, 22:47:41
Bana kalırsa 12F675 ile aynı kılıfa sahip olan ve piyasada bulunabilen 12F683 kullan. Bu işlemcide HPWM modülü bulunmaktadır. Kullanımı gayet kolaydır ve rahat edersin. Tmerlar ile uğraşmadan istediğin frekansta (min 245 Hz max 100Khz ) PWM sinyalini ilgili pinden çıkartırsın.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 10 Ekim 2011, 23:29:47
12f683 benim de listemdeydi ancak tek kanal pwm olduğu için çok çekici gelmemişti.
Bana gereken 3 kanalı bu tek pwm'den de-multiplexer entegreleriyle mi elde ederim?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 10 Ekim 2011, 23:44:44
3 kanal gereken yerde tek kanal paylaşımlı kullanılamaz. En azından R-G-B nin farklı duty değerleri olması gerekir.
Bu durumda ya 3 adet HPWM çıkışıolan bir işlemci kullanacaksın yada kesme yolu ile bu sinyalleri elde etmeye çalışacaksın demektir. Başka çare yok.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 10 Ekim 2011, 23:54:01
Siz önerince bir yolu var sanmıştım , tüh.
De-mux ile duty'lerini 1/3 oranında azaltmış olacağımı fark ettim.Hatta ilk denememde tecrübe de etmistim :D
Çözünürlüğümü 100'den 32'ye indirerek 45hz'lik bir sinyal elde etme kararı aldım.
Yardımınız için çok tesekkur ederim
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 11 Ekim 2011, 23:50:28
Yine ben  :-\
Alttaki kodu , RGB hesap bölümü kesme içinde , ana döngü içinde , if then döngüsüyle olacak şekilde de denedim.Hepsinde de 12ms gibi olması gereken periyot 250ms'lere çıktı.
Hesaplama bölümünde bir hata var sanırım ama ne olduğunu bulamadım.
Program fark edildiği üzere PWM ile RGB Led kontrolü.Analog girişten okunan değer değişkene yazılıyor , bu değişkene düşen aralıktaki hesaba göre de renk üretiliyor.

@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF

DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

TRISIO = %000001    'GP0/AN0 input , gerisi output
CMCON = 7           
ADCON0=%10000001  'Vdd referans , AN0 analog kanalı , A/DC bitik , modül çalışıyor
ANSEL= %00110001  'RC osilatör clock , AN0 analog giriş
INTCON=%10100000   'interrupt etkin , timer kesmesi etkin
OPTION_REG =%00000000             ' timer osilatörü dahili

define ADC_SAMPLEUS 20
DEFINE   ADC_BITS   10
DEFINE   ADC_CLOCK   3

deger var word
R var byte
red var byte
G var byte
green var byte
B var byte
blue var byte
led0 var gpio.1       'led0=GP1
led1 var gpio.2       'led1=GP2
led2 VAR gpio.4

GPIO = 0
R=0 : G=0 : B=0
red=0 : green=0 : blue=0
Pause 50

on interrupt goto kesme

dongu:

adcin 0 , deger        'deger değişkenine AN0'dan gelen değeri ata
goto dongu

disable
kesme:

select case deger
case is >767                                   'mor-beyaz
    R=32
    deger=deger/2
    G=deger-256 : G=G/8
    B=32
case is >639        'pembiş mor
    R=deger-513 : R=R/8
    G=deger-640  : G=G/8
    B=deger-513   : B=B/8
case is >511         'mavi pembişimsi 128
    R=deger-512 : R=R/8
    G=0
    B=767-deger : B=B/8
case is >383     'yesil-mavi aralığı 128
    R=0
    G=511-deger : G=G/8
    B=deger-384 : B=B/4
case is >255           'sarı-yesil aralığı 128
    R=383-deger  : R=R/4
    G=511-deger  : G=G/8
    B=0   
case is > 0     'kırmızı-sarı aralığı 256
    R = 32
    G = deger/8
    B = 0
end select

red=red+1
if (led0=1 and red=R) or (led0=0 and red=32-R) then
led0=1-led0
red=0
endif

green=green+1           
if (led1=1 and green=G) or (led1=0 and green=32-G) then
led1=1-led1
green=0
endif

blue=blue+1
if (led2=1 and blue=B) or (led2=0 and blue=32-B) then
led2=1-led2
blue=0
endif

TMR0=255
intcon.2=0
resume
enable
end
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 11 Ekim 2011, 23:52:51
Her bir komutun icra edilmesi için bir zaman gerektiğini hesaba katmıyorsun.
Kesme kısmına çok fazla kod yüklemişsin. Kesme zamanında oluşsa bile kesmede program çok zaman kaybediyor. Sebebi odur.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 12 Ekim 2011, 00:29:54
Kesme'ye neden hepsini koydum ben de bilmiyorum.Oysa ki düzgün bir sinyal çıkarmayacağını biliyorum da.Son çare olarak denemişim dalgınlıkla  :-\
Kodun normal halinde ADC ve ADC'ye bağlı değişen duty süreleri ana döngü içerisindeydi.
Kesme içinde ise sadece şu kısım var :

red=red+1
if (led0=1 and red=R) or (led0=0 and red=32-R) then
led0=1-led0
red=0
endif

green=green+1           
if (led1=1 and green=G) or (led1=0 and green=32-G) then
led1=1-led1
green=0
endif

blue=blue+1
if (led2=1 and blue=B) or (led2=0 and blue=32-B) then
led2=1-led2
blue=0
endif

TMR0=150
intcon.2=0
resume
enable
end


Bu haliyle de ya yine bir hesapta hata var ya da Case Select döngüsünün ortasında kesme oluştuğu için sorun çıkıyor.
Ancak şöyle bir durum var ki ; Proteus'ta gözüken Duty değerleri benim istediklerimle pek alakalı değil.4Hz'lik sinyal almam da büyük olasılıkla bir hesap hatasını belirtiyor diye düşünüyorum
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ekim 2011, 07:58:51
Programında hala hatalar görüyorum. Özellikle değişken değerlerinde,
R-G-B değerlerine iyice bir bak. Bu değerler Byte cinsinde olup 255 değerini aşamaz.
Ama sen ne yapmışsın? Değer-513 gibi hesaplar yazmışsın. Deger madem Pot 'dan okunacak alacağı değer 0-1023 arasında değişir.
Bu hesap sonucu 255 dan genelde büyük çıkar. Ayrıca Deger<513 olunca hesap sonucu eksi çıkar ve sistem sapıtır.
Bunların tedbirlerinin alınması gerek. Bana kalırsa PWM da % ile çalışmaya bak. R?100 olunca maksimum kırmızı rengi, %50 oluncada yarı kırmızı rengi olsun. Faydasını görürsün. SOnra diğer renkelerede aynı şekilde orantılı olarak 0-100 sınırı içinde renk değerlerini verirsin. Bu şekilde hem matematik daha hızlı yapılır hemde aşma taşma olma ihtimali sıfıra düşer.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 12 Ekim 2011, 11:36:06
R-G-B değişkenlerim 255'i aşmıyor ki.
Deger-513 yaptığım yerde deger değişkeninin 639'dan büyük olması ön koşulu var.Yani R=640-513=127 olacak.

Yoksa mikroişlemcinin çalışma mantığı şu şekilde mi ; R önce 640'a eşitleniyor , sonra 513 çıkarılıyor.Böyleyse taşma olur haklısınız.

Diğer bir olasılıkla da Select Case'in düşündüğüm mantıkta çalışmaması.Uygun aralık bulunduğunda diğer karşılaştırmaların yapılmadığını biliyorum.Yani ADC'den okunan 900 diyelim , ilk karşılaştırmadaki(>767) işlemleri yapıp Select Case'ten çıkması gerekiyor.Yoksa bu da mı böyle değil?

Önerileriniz için teşekkür ederim ama çözünürlüğü 100 yerine 32 yapmamın nedeni dahili osilatör kullanmak istemem.100 yapınca 14Hz'lik sinyal alıyorum ve göz algılıyor.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ekim 2011, 11:53:16
Select Case komutu istediğin gibi çalışır. Ancak yinede mantık hataları olduğunu düşünüyorum. Beraberce inceleyelim;
select case deger
case is >767                                   'mor-beyaz
    R=32
    deger=deger/2
    G=deger-256 : G=G/8
    B=32
case is >639        'pembiş mor
    R=deger-513 : R=R/8
    G=deger-640  : G=G/8
    B=deger-513   : B=B/8
case is >511         'mavi pembişimsi 128
    R=deger-512 : R=R/8
    G=0
    B=767-deger : B=B/8
case is >383     'yesil-mavi aralığı 128
    R=0
    G=511-deger : G=G/8
    B=deger-384 : B=B/4
case is >255           'sarı-yesil aralığı 128
    R=383-deger  : R=R/4
    G=511-deger  : G=G/8
    B=0   
case is > 0     'kırmızı-sarı aralığı 256
    R = 32
    G = deger/8
    B = 0
end select

Öncelikle hemen belirteyim Case is... şeklinde bir kullanım görmedim ve açıklamalarda da böyle bir kullanım şekli yok.
Şayet çalışıyorsa diyecek lafım yok ama doğru kullanım şekli;
Case Deger>767 şeklindedir. Her neyse gelelim mantık hatalarına;
İlk Case seçeneğin Deger değişkeninin 767 den büyük olma durumu Yani Deger>767 ise; R-G-B ye değerler atamışsın.
Program bu satırları icra eder ve hemen alt satıra geçer. Orada;
Case Deger>639  şartı yer alıyor. Diyelimki Senin Deger değişkeninin aldığı değer 830 olsun.
Bu değeri ilk Case karşılaştırmasına uyuyor ve buna bağlı olarak RGB değikenleri değer alır. Program Alt satıra geldiğinde ise 830>639 olduğundan bu sefer ikinci şarta da uyar ve RGB değerleri burada değişir ve yeni değerler alırlar.
Anlayacağın aşağı indikçe deger değişkeni şartları karşıladığı için sürekli değeri değişecek ve en son uyan kimse ona uygun olarak değer alacaktır.
Buradaki hata Case sorgulamasının yerlerinin yanlış olmasıdır.
Yada sorgulama mantığının yanlış olmasıdır.
Şayet Deger değişkeninin aldığı değere bağlı olarka bir iş yapmak istiyorsan aralık vermek zorundasın. Örnek vermek gerekir ise
Case deger>512 and Deger<639  gibi bir şey verirsen yalnızca bu aralıktaki değer için RGB değişkenleri set edilir. Aksi halde karmakarışık bir durum ortaya çıkmaktadır.
Yada şöyle yapman gerekir.
Case deger<255
......
GOTO CIK
Case deger<512
...
Goto CIK
şeklinde devam eder. CIK etiketi ise END SELEC komutunun olduğu satır olacaktır. Böylece yalnızca ilgili satırlar çalışacak program diğerlerine bulaşmayacaktır.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 12 Ekim 2011, 11:59:19
Select Case düşündüğüm gibi çalışmıyormuş , bunu öğrenmiş olduk :)
MicroCode Studio'nun help bölümünde IS kullanıldığı yazıyor , o yüzden böyle yaptım.
The variable used in all of the comparisons is specified in the SELECT CASE statement. Each CASE is followed by the statements to be executed if the CASE is true. IS may be used to specify a comparison other than equal to. If none of the CASEs are true, the statements under the optional CASE ELSE statement are executed. An END SELECT closes the SELECT CASE.

PBP'da "Elseif" komutu var mı acaba?Bazı yerlerde var , bazı yerlerde yok deniyor.Select Case yerine if-elseif döngüsü yapmıştım , Microcode Studio hata vermemişti.

Ekleme : Select Case'i düzeltip denedim.Yine hala aynı sorun var.Kesme'deki hesaplar yanlış ama neden?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ekim 2011, 12:19:26
Derlerken hata vermiyor ama doğru derlediğinide sanmıyorum. Sen yinede dediğim şekilde kullanmaya bak.
MCS de komut üzerine gelip F1 tuşuna basarsan komut açıklaması ekrana gelir. EN hızlı bu şekilde formatları öğrenebilirsin.

Basic de IF THEN ELSE var ancak ELSEIF komutu yok. Yok derken kullanım formatı farklı Şöyle kullanabilirsin.
IF DEGER>239 THEN
   R=23
ELSE
  IF B=47 THEN R=75
ENDIF
Burada Deger 239 dan büyük değil ise ELSE satırından sonrakiler değerlendirilir.

Case kısmını düzelttim hala hata var diyorsun. Kodu göreyim.!!

Hatanı kolayca görebilmen için değişken değerlerini takip etmende yarar var. Muhtemelen isis de çalışıyorsun.
Değişkenlere değişken adresi olareak 56 dan başlayarak byte lar için tek adres word leri için çift adres ver.
Mesela,
Deger var word 56
R        var byte  58
G        var byte 59
sonra bu adresleri İsis de kullanarak değişkenlerin programın çalışması esnasında aldığı değerleri izleyebilirsin.
Muhtemelen hesap hatasınıda bu yolla bulabilirsin. İsis de yapman gereken şey;
Pause tuşuna basarak programı çalıştır. Yukarıda yer alan Debug menüsüne tıkla ve açılan pencerede aşağıda yer alan Watch Window seçeneğini seç. Ekrana bir bilgi penceresi açılacaktır. Üzerine sağ tıkla ve açılan pencerede "Add Items by Address " seçeneğini seç.
Açılan pencerede Name kısmına değişken adını gir altındaki address kısmınada verdiğin adresi yaz. Birden fazla değişken adını aynı şekilde ilave et. Programı çalıştırdığında bu değişkenlerin aldıkları değerleri artık izleyebilirsin. Değeri çok hızlı değişen değişkenleri isis yetiştiremediği için yazmayabilir.
Kolay Gelsin
Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 12 Ekim 2011, 19:24:28
Isis'teki debug'ın nasıl olduğunu merak ediyordum , çok iyi oldu teşekkürler.
Kodda pek değişiklik olmadığı için forum dolmasın diye koymamıştım :) Kodun son hali şöyle :
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF

DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

TRISIO = %000001    'GP0/AN0 input , gerisi output
CMCON = 7           
ADCON0=%10000001  'Vdd referans , AN0 analog kanalı , A/DC bitik , modül çalışıyor
ANSEL= %00110001  'RC osilatör clock , AN0 analog giriş
INTCON=%10100000   'interrupt etkin , timer kesmesi etkin
OPTION_REG =%00000000             ' timer osilatörü dahili

define ADC_SAMPLEUS 20
DEFINE   ADC_BITS   10
DEFINE   ADC_CLOCK   3

deger var word 56
R var byte    58
red var byte    59
G var byte        60
green var byte      61
B var byte            62
blue var byte           63
led0 var gpio.1       'led0=GP1
led1 var gpio.2       'led1=GP2
led2 VAR gpio.4

GPIO = %010110
R=0 : G=0 : B=0
red=0 : green=0 : blue=0
Pause 50

on interrupt goto kesme

dongu:

adcin 0 , deger        'deger değişkenine AN0'dan gelen değeri ata

select case deger
case deger >767                                   'mor-beyaz
    R=32
    G=deger/16 : G=G-32
    B=32
case deger >639 and deger <768       'pembiş mor
    R=deger-513 : R=R/8
    G=deger-640  : G=G/8
    B=deger-513   : B=B/8
case deger >511 and deger <640         'mavi pembişimsi 128
    R=deger-512 : R=R/8
    G=0
    B=767-deger : B=B/8
case deger >383 and deger <512    'yesil-mavi aralığı 128
    R=0
    G=511-deger : G=G/8
    B=deger-384 : B=B/4
case deger >255 and deger <384           'sarı-yesil aralığı 128
    R=383-deger  : R=R/4
    G=511-deger  : G=G/8
    B=0   
case deger < 256     'kırmızı-sarı aralığı 256
    R = 32
    G = deger/8
    B = 0
end select

goto dongu

disable
kesme:

red=red+1
if (led0=1 and red=R) or (led0=0 and red=32-R) then
led0=1-led0
red=0
endif

green=green+1           
if (led1=1 and green=G) or (led1=0 and green=32-G) then
led1=1-led1
green=0
endif

blue=blue+1
if (led2=1 and blue=B) or (led2=0 and blue=32-B) then
led2=1-led2
blue=0
endif

TMR0=150
intcon.2=0
resume
enable
end


Isis'teki debug sonucunda R ve B değişkenlerinin 32'de sabit kaldığını , G değişkeninin yazılan işleme girdiğini ancak X ve X-32 gibi değerler aldığını gördüm.Yani Select Case döngüsünün ilk adımı olan >767 durumunda takılma var , daha ileri gitmiyor.
Bir de kesme içerisindeki red , green , blue değişkenleri negatif değerler de dahil olmak üzere sürekli değişiyor.Negatife gitmesinin mantığını ve nasıl engelleneceğini çözemedim.

Ekleme : kesme içerisindeki değişkenler,  if ifadesine girerken 0'a eşit olamayacağı için taşmaya neden oluyor.Düzgün bir yöntem düşünmeye çalışıyorum , daha bulamadım.
Ekleme2: Duty değerlerine 1 ekleyerek kısmen çözüm bulmuş oldum.Tabi bu şekilde asla %0 Duty'ye ulaşamayacağım ama hiç çalışmamasından iyidir ::)
Select Case'te ise sürekli ilk duruma giriş devam ediyor.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ekim 2011, 22:46:04
Kod da bu sefer bir hata göremedim. Her şey mantıklı gözüküyor. Tabiiki program mantığına henüz %100 hakim değilim.
Aslında bana dosyalarıda yollasan simulasyonda bende baksam. Belki bir şey yakalarım diye düşünüyorum.
Bu arada PBP da eksi sayı yoktur. Sayılar işaretsizdirler. Eksi çıkacak bir işlemde sonuç şöyle hesaplanır.
A=12-45 diye bir hesap işleminde 12 sayısında 45 çıkartılırken 12 den geriye 45 basamak gidilir. 13. basamakta sayı sıfırlanır. ve sonuçta A=223 olur. (45-12=33 A=256-33=223)
Bu nedenle aritmetikişlemlerine dikkat etmek gerekiyor.Şayet büyükten küçük sayıyı çıkartırsanız sorun yok ama küçük sayıdan büyük sayı çıkartırsanız sonuç beklediğiniz gibi çıkmaz.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 12 Ekim 2011, 22:53:26
Select case gerektiği gibi çalışmadığı için küçükten büyüğü çıkartma sorunu oluyor.
Birkaç gündür bu program takıntım oldu.Okuldan verilen ödevleri yapmaz oldum sırf bu yüzden ::)
Dosyaları hemen yolluyorum , ilginiz için çok teşekkür ederim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 13 Ekim 2011, 20:25:02
Sanırım Select Case ifadesinin ortasında timer'dan kesme geldiği için sorun çıkıyordu ve değişkenler ait olduğu aralıklardaki değerleri almıyordu.
Ben de Select Case'den önce bir if sorgusu koydum , okunan değerde değişim yoksa boşuna select case'e girmiyor.Böylece Isis simülasyonu doğru çalışmaya başladı.
Ancak devreye yerleştirince analog giriş sadece 0V ya da 5V olunca doğru çalışıyor.Bunların dışındaki değerlerde led'ler 'titriyor' , örneğin mor renk almam gerekirken pembe-mor-beyaz arası gidip geliyor.
Bu da sanırım potansın az da olsa oynaması durumunda ölçüm değiştiği için tekrar o select case sorununun başlamasına neden oluyor.

Ufacık bir devrede amma sorunla karşılaştım yahu :/

Kodun son hali bu arada :
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF

DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

TRISIO = %000001    'GP0/AN0 input , gerisi output
CMCON = 7           
ADCON0=%10000001  'Vdd referans , AN0 analog kanalı , A/DC bitik , modül çalışıyor
ANSEL= %00110001  'RC osilatör clock , AN0 analog giriş
INTCON=%10100000   'interrupt etkin , timer kesmesi etkin
OPTION_REG =%00000000             ' timer osilatörü dahili

define ADC_SAMPLEUS 50
DEFINE   ADC_BITS   10
DEFINE   ADC_CLOCK   3

deger var word 56
degerkontrol var word
R var byte    58
red var byte    59
G var byte        60
green var byte      61
B var byte            62
blue var byte           63
led0 var gpio.1       'led0=GP1
led1 var gpio.2       'led1=GP2
led2 VAR gpio.4

GPIO = %010110
R=0 : G=0 : B=0
red=0 : green=0 : blue=0
Pause 50

on interrupt goto kesme

dongu:

adcin 0 , deger        'deger değişkenine AN0'dan gelen değeri ata
if deger=degerkontrol then
goto cik
else
select case deger 
case is < 256     'kırmızı-sarı aralığı 256
    R = 33
    G = deger/8 : G=G+1
    B = 1 : goto cik
case is <384           'sarı-yesil aralığı 128
    R=383-deger  : R=R/4 : R=R+1
    G=511-deger  : G=G/8 : G=G+1
    B=1 : goto cik
case is <512    'yesil-mavi aralığı 128
    R=1
    G=511-deger : G=G/8 : G=G+1
    B=deger-384 : B=B/4  : B=B+1 : goto cik
case is <640         'mavi pembemsi 128
    R=deger-512 : R=R/8 : R=R+1
    G=1
    B=767-deger : B=B/8 : B=B+1 : goto cik
case is <768       'pembe mor
    R=deger-513 : R=R/8 : R=R+1
    G=deger-640  : G=G/8 : G=G+1
    B=deger-513   : B=B/8 : B=B+1 : goto cik
case is <1024                                   'mor-beyaz
    R=33
    G=deger/16 : G=G-31
    B=33 : Goto cik
Cik:
degerkontrol = deger
end select
endif

goto dongu

disable
kesme:

red=red+1
if red=R and led0=1 then
    led0=0
    else
        if red=34 and led0=0 then
        led0=1
        red=0
        endif
endif

green=green+1           
if green=G and led1=1 then
    led1=0
    else
        if green=34 and led1=0 then
        led1=1
        green=0
        endif
endif

blue = blue+1
if blue=B and led2=1 then
    led2=0
    else
        if blue=34 and led2=0 then
        led2=1
        blue=0
        endif
endif

TMR0=100
intcon.2=0
resume
enable
end
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 13 Ekim 2011, 20:34:08
İf sorgusunu şöyle değiştir.
if deger=degerkontrol then
goto Dongu
else
select case deger 
....

Ayrıca bütün register değerlerini 8 bit üzerinden ver. Yani  TRISIO = %000001  yerine TRISIO = %00000001 ,
GPIO = %010110  yerine GPIO = %00010110  şeklinde vermelisin.
Bunlar hata değil kusur. Aynı kapıya çıkıyor ama elin böyle alışsın .
Başka bir hata göremiyorum.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 13 Ekim 2011, 20:44:55
Port 6 giriş çıkışa sahip olduğu için 6bit olarak yapmıştım.Artık 8 bit olarak yaparım.Ama farkı olur mu diye merak etmiyor da değilim.
Dediğiniz if sorgusu daha doğru oldu , haklısınız.
Bir de derlerken şu uyarıyı veriyor , bu nedir acaba?Gereğinden yüksek değer verdiğim bir şey de göremiyorum.
"Warning[202] ~~.mac 109 : Arguement out of range.Least sigificant bits used."
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 13 Ekim 2011, 21:03:57
Hata mesajını anlamadım. İlk defa görüyorum bu mesajı.
Çözersem bildiririm.

Ete

Edit: Şimdi derledim sorunsuz derlendi. Sen MPASM de derliyorsun sanırım. Makinan 64 herhalde.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 13 Ekim 2011, 21:22:04
Evet 64 bit makinede mpasm ile derliyorum.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: pea - 02 Kasım 2011, 00:56:27
Sorunum 470k ohm'luk kalitesiz trimpottan kaynaklanıyormuş , datasheet'i iyice okuyunca anladım.
Önerilen kaynak empedansı ve ADC Acquisition Time denklemlerini okuyunca anladım ki sürekli ve sorunlu ADC oluyordu , bu da çıkışı bozuyordu.
5k ohm pot takınca geçti.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 16:43:32
ete hocam pwm derslerinizden kesmetmr0 programında ledler yanıp sönme yapıyor. bu sorunu nasıl aşabilirm?

programı 16f877 içine yükledim board üzerine kurdum devreyi ve 1 tane rgb led bagladım, led yanıp sönme yaparak oluşan rengi gösteriyor. pic osilatörünü 20mhz rezanatör  baglayıpta denedim yine aynı deişen birşey olmuyor.

devreye 6 adet buton bagladım herbir kanalı artırıp azaltmak için ve bu degerleri görebilmek için lcd ekran koydum. fakat butonlarla ayarlama yaparken sanki kırmızıyı ayarlerken yeşilide ayarlıyomusm gibi  yeşil renkte etkilenito yada mavi led etkileniyor. program şöyle;



TRISA=0
TRISB=%11111111
TRISC=0
TRISD=0
TRISE=0

porta=0
portb=0
portc=0
portd=0
porte=0



DEFINE LCD_DREG PORTD 'LCD data port
DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTD 'LCD register select port
DEFINE LCD_RSBIT 3 'LCD register select bit
DEFINE LCD_EREG PORTD 'LCD enable port
DEFINE LCD_EBIT 2 'LCD enable bit
DEFINE LCD_LINES 2 'Number lines on LCD


DEFINE OSC 20

@ DEVICE pic16F877                                                   
@ DEVICE pic16F877, WDT_OFF                 
@ DEVICE pic16F877, PWRT_ON                
@ DEVICE pic16F877, PROTECT_OFF         
@ DEVICE pic16F877, HS_OSC

ON INTERRUPT GoTo KESME   
OPTION_REG=%10001000      
INTCON=%10100000

ADCON1=7

DUTY_A VAR BYTE
DUTY_B VAR BYTE
DUTY_C VAR BYTE
LEDA VAR BYTE
LEDB VAR BYTE
LEDC VAR BYTE
I VAR BYTE

PAUSE 100
LCDOUT $FE,1


   DUTY_A=80
   DUTY_B=30
   DUTY_C=10



BASLA:


LCDOUT $FE,$80,"R =",DEC3 DUTY_A
LCDOUT $FE,$88,"G =",DEC3 DUTY_B
LCDOUT $FE,$C0,"B =",DEC3 DUTY_C


IF PORTB.0=0 THEN DUTY_a=DUTY_a+1:GOSUB BEKLE
IF PORTB.1=0 THEN DUTY_a=DUTY_A-1:GOSUB BEKLE

IF PORTB.2=0 THEN DUTY_B=DUTY_B+1:GOSUB BEKLE
IF PORTB.3=0 THEN DUTY_B=DUTY_B-1:GOSUB BEKLE

IF PORTB.4=0 THEN DUTY_C=DUTY_C+1:GOSUB BEKLE
IF PORTB.5=0 THEN DUTY_C=DUTY_C-1:GOSUB BEKLE

IF DUTY_A=100 THEN DUTY_A=0
IF DUTY_B=100 THEN DUTY_B=0
IF DUTY_C=100 THEN DUTY_C=0

IF DUTY_A=255 THEN DUTY_A=99
IF DUTY_B=255 THEN DUTY_B=99
IF DUTY_C=255 THEN DUTY_C=99


GOTO BASLA

BEKLE:
FOR I=0 TO 100
PAUSE 1
NEXT I
RETURN


DISABLE
KESME:
      LEDA=LEDA+1
      IF (PORTC.1=1 AND LEDA=DUTY_A) OR (PORTC.1=0 AND LEDA=100-DUTY_A) THEN
         PORTC.1=1-PORTC.1
         LEDA=0
      ENDIF
             
     
      LEDB=LEDB+1
      IF (PORTC.2=1 AND LEDB=DUTY_B) OR (PORTC.2=0 AND LEDB=100-DUTY_B) THEN
         PORTC.2=1-PORTC.2
         LEDB=0
      ENDIF
     
      LEDC=LEDC+1
       IF (PORTC.3=1 AND LEDC=DUTY_C) OR (PORTC.3=0 AND LEDC=100-DUTY_C) THEN
         PORTC.3=1-PORTC.3
         LEDC=0     
      ENDIF
         
      TMR0=254
      INTCON.2=0       
      RESUME
      ENABLE
     
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 05 Ocak 2012, 16:52:59
ADCON1=%10000100
komutu yerine

ADCON1=7

yaz bakalım ne olacak

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 17:47:00
wdt açik gozukuyor ama programında hc wdt sıfırlama goremiyorum
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 17:49:25
 hocam yukardaki mesajda programın son halını ekledim.

dediginzi adcon1=7 yi yazdım düzelmeler fakat yukardaki programa gore 2. ve 3. çıkışlerdan sabit sinyal çıkıyor? lcd ekrandan    DUTY_B,
   DUTY_C değişkenlerinin deiştigini gözlemliyorum fakat çıkışta sabit bir frekans var?  DUTY_A değişkenini butonlarla deiştirdigim zman kırmızı ledde  ışık şiddetinde artma ve azalma var fakat gözle görülebilen kırpısmalar oluyor!
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 17:50:15
Alıntı yapılan: justice_for_all - 05 Ocak 2012, 17:47:00
wdt açik gozukuyor ama programında hc wdt sıfırlama goremiyorum

hocam neden bahsettinizi anlamadım? neyi nerede sıfırlamam gerekiyor ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 17:59:43
yani dmk ıstdgm cwp yazmadan once wdt=on seklindeydi msjı yazdıktan snra duzelmissiniz wdt kapalıyken sorun yok ama wdt acık olunca wdt suresi dolmadan wdt sıfırlamanız gerekmektedir yoksa devre kendini resetleyecektir
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 18:01:45
wdt nerede sıfrlanması gerekir ? bunu hakkında bir bilgim yoktu. ayarları baska programdan aldım için dogru kodu buldum.  hocam bunu acık olması ne işimze yarar?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 18:12:17
hocam diyelimki wdt acık we 18 ms ye ayarlı wdt saymaya bslar 18ms ye gelince devre kendini resetler bunu engellemek icin wdt sıfırlanır pic basıcte kodu bilmiyorum (ccs de restart_wdt() die bir fonksiyon var) kullanma amacı ise programda istenmeyen kilitlenmeleri gidermek  mesela program biyerde takıldı diyelim wdt sıfırlanmadgı icin bu takılma 18 ms surmusse devre kendini resetler
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 18:39:31
cevap için teşekkür ederim hocam.

  yukardaki programla elde ettigm pwm sinyali ile rgb ledi çalıştırdım fakat gözün algılayabilecegi şekilde kırpışma oluyor bunu nasıl halledebilirm? aslında olmamamsı gerekir diye biliyorum ve pic osilatörüde 20MHZ. programda yanlış olan biryermi varki?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 18:47:50
timer la yapılan pwmler oyle oluyor bunun sebebi timer kesmesi olusmasıuzun suruyo olabilir veya timer kesme rutinindeki programlar fazla we islemesi uzun suruyo olabilir
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 19:02:01
hocam rgb ledli saat tasarladım son işlem olarak saati süren picten istenilen reng bilgisini gönderebilecegim bir rgb sürücüsü yapmak yaklaşık 240 adet rgb led çalışacak. önerebileceginiz baska devre varmıdır? pic ile kontrol edebilecegim. yada en yaygın 3 pwm çıkışlı pic hangisidir 16F yada 18F serisinden?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 19:29:08
16f777
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 05 Ocak 2012, 19:32:55
EmrahGS,

Programına yeniden bakmanı istiyorum.
Özellikle GOSUB BEKLE isimli komutla gidilen BEKLE gecikmesine bir bak istersen.
0 dan 100'e kadar döngü kurmuşsun ama araya PAUSE 1 koymuşsun. Diğer taraftan programın kesme kısmına bakarsak TMR0'a 254 değerini vererek çıkıyorsun. Bu şu anlama geliyor TMR= 254 den itibaren sayacak 255 olacak ve değer 0 olunca yeniden kesme oluşacak. Peki bu ne kadar sürer sence komutların bir gecikmesi olmasa topu topu 2 komut çevrimi yani 2 us lik bir sürede kesme olmasını hedeflemişsin. Teorik olarak mümkün ama pratikte böyle bir şey olması mümkün değil maalesef.
Üstelik Pause 1 gibi bir komut program içinde kullanmış isen. Bu komuta sıra gelince program orada 1000us bekleyecek daha sonra kesme oluştuğu için kesme etiketine gidecek.
Sen 2 us de kesme yaratmak istiyorsan bence o döngüye gecikme komutu bile koyma. Döngü adedini artır ama gecikmeyi oradan kaldır.
Programda çok fazla IF komutu var. Bunların hepsi epeyce bir komut gecikmesi yaratacağını unutma.
Bir trick vereyim; trick, butonların pulldown çalışması halinde geçerli yalnız.
IF PORTB.0=0 THEN DUTY_a=DUTY_a+1:GOSUB BEKLE  satırı yerine
DUTY_a=DUTY_A+PORTB.0 :GOSUB BEKLE şeklinde yaz bakalım ne olacak. Butona basılmış ise PORTB.0=1 olacağı için toplama sonucu Duty_A değeri bir artar. Ama butona basılmamış ise değer sürekli sıfır ekleneceği için değer değişmeyecektir.
BU mantığı diğer satırlarada uygularsan programında belirli bir hızlanma olacaktır.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 20:26:52
ete hocam açıklamaların için teşekkür ederim. birkaç sorum olacak.

kesme konusnu detaylı bilmiyorum ve ilk kez pwm ile ugraşıyorum. sizin pwm ders anlatımınız olan projede kesme kısmındada  254 yazılmış.  bunu bu şekilde yazdıgımızda dediginiz gibi 2us lik zaman. sizin projede ne amaçla böyledir hocam?  benim programda 254 yerine 0 mı yazmalıyım ? pwm frekansı içinmi bu böyledir? 

gecikme kısmında 10 pauseus gibi gecikme yapsam olurmu peki? iç içe iki döngü yapıpta? kesmeye bu beklemede etki yaparmı?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 20:39:03
230 yazarak dene bakalım beklemeyi kaldır tamamen nedeni ise timer a fazla dgr yuklersen programın surekli kesme icinde dolanır diger islemleri yapamaz buyuzdn timera diger islemleri yapabilmesi icin timer degerini dusurmelisin
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 20:52:44
hocam beklemeyi kaldırırsam butona bastıgım zaman duty degerini nasıl artıracam?   16f777 ile 3 çıkış pwm programı varmıdır hocam? yada 16f877 ile yapılmıs 2 çıkışlı hpwm uygulamasına aynı komutlarla 3.  çıkış için uyarlasam olurmu regesterleri aynımıdır?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: justice_for_all - 05 Ocak 2012, 21:02:11
buton varsa bekleme olmalı ozaman timer degerini dgstrip denedinizmi ben 10f200 ile yaptm hc kıprasma olmuyo hocam
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 05 Ocak 2012, 21:07:48
yarın deneyecegim, malzemeler iş yerinde. hocam cevaplar için teşekkür ederim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 05 Ocak 2012, 22:34:42
Bekleme olmayacak demedimki. Döngüde bir beklemedir.
FOR X=0 to 100 yerine FORX=0 to 500 yada daha afzlasını yazın benzer süreleri yakalayabilirsiniz.
Ama arada ciddi bir fark olur. Birinde kesme oluştuğu anda 1000us sonra kesmeye gider program birine belkide 1us sonra gider.
Bu nedenle kritik durumlarda döngü ile gecikme yaratacaksanız döngüyü uzatın ama araya gecikme koymayın. Koyarsanızda en fazla 1us ile 5us arası bir değer koyun.

HPWM ile ilgili bir soru sormuşsun. Tek HPWM çıkışı olan ile iki veya 3 çıkışı olan aynı şekilde kontrol edilir.
Bunun örneği derslerde mevcut.
Tek olanda CCP1CON  iki olan CCP1CON ve CCP2CON , 3 çıkış olanda CCP1CON ve CCP2CON ve CCP3CON regsiterleri kullanılmaktadır.

CCPxCON.2=1:CCPxCON.3=1    (x yerine 1 -2 veya 3 gelecektir) komutu ile HPWM kanallarını aktif edersin.
Duty değerini aşağaki şekilde registerin diğer birimlerine yerleştirirsin.
      CCPxCON.4=Duty.0
      CCPxCON.5=Duty.1
      CCPRxL=Duty>>2
Hespi bu.
Tabiiki Duty değeri işlemci frekansına, ve PWM frekansına göre değişir.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 09:55:05
Alıntı yapılan: ete - 05 Ocak 2012, 19:32:55

Bir trick vereyim; trick, butonların pulldown çalışması halinde geçerli yalnız.
IF PORTB.0=0 THEN DUTY_a=DUTY_a+1:GOSUB BEKLE  satırı yerine
DUTY_a=DUTY_A+PORTB.0 :GOSUB BEKLE şeklinde yaz bakalım ne olacak. Butona basılmış ise PORTB.0=1 olacağı için toplama sonucu Duty_A değeri bir artar. Ama butona basılmamış ise değer sürekli sıfır ekleneceği için değer değişmeyecektir.
BU mantığı diğer satırlarada uygularsan programında belirli bir hızlanma olacaktır.

Ete

hocam burada bahsettiğiniz  DUTY_a=DUTY_A+PORTB.0 :GOSUB BEKLE  komutunu her buton için yaptıgım zaman, butonlara basılmadıgı zaman bile her buton satırında eşitlemeden sonra bekle döngusunue gidiyor.

DUTY_A=DUTY_A+PORTB.0:gosub BEKLE
DUTY_A=DUTY_A-PORTB.1:gosub BEKLE

DUTY_B=DUTY_B+PORTB.2:gosub BEKLE
DUTY_B=DUTY_B+PORTB.3:gosub BEKLE

DUTY_C=DUTY_C+PORTB.4:gosub BEKLE
DUTY_C=DUTY_C+PORTB.5:gosub BEKLE

şeklinde.

ıf komutları var iken ve tmr 230 yaptıgmda kırpıma dahda fazlalaştı?  ıf komutlarını hepsini kaldırdıgmda kırpısma olmuyor!
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 09:57:51
Bekle komutlarının tamamını kaldır ve o satırların sonuna bir tane GOSUB BEKLE yaz. Olur sanırım.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 10:25:49
hocam bekle dongusunu kısa yaptım bu şekildede oldu. if komutlarını ve  lcd ye yazdrma komutlarını ana dönguden kaldırdım sadece sizn dediginiz buton artırma satrlarını ekledım. kırpılma olmuyor bu şekilde. tmr degerine 230 da yukledım 200 de yukledım bi değişim göremedim.  tmr içine ne yuklemeliyim ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 10:39:39
Ledlerin parlaklığını artıran ve kırpışma yapmamasını sağlayan en yüksek değeri yazmalısın.
Yada Kesme kısmından TMR0=xxx komutunu tamamen sil bakalım ne olacak. Sorun yok ise silik kalsın.
Burada önemli olan ledlere uygun bir PWM frekansını vermektir.Bunuda TMR0 sayacı sağlayacak elbette.
Frekans aralığı 100-500 Hz dolayındadır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 10:51:39
TMR0 a 254,230,180,0 gibi degerler denedim hepsindede aynı, yani kırpısma yok if komutlarını kaldırdımdan bri bir değişim göremedim, görememde heralde. en son dedgnız gibi tmr0 komutunu kaldırdım yine birşey belli olmuyor.

hepsini denerkende ufak bi sorun oluyor sadece. smulasyonda da yaparken bu görünüyor. butonla basılı tutarak braz artırmaya başladıgımda belli bir noktada frekans kayması oluyor sanki. onoktadan gecerken simulsayonda osiloskopta bakıyorum  sabit bir şekilde duty artarken veya azaltırken o noktadan gecince  o pwm sinyaliileri yada geriye atlıyomuş gibi oluyor. boarda denedigmdede aynısı oluyor rgb ledde gözlemlerken sanki o kanaldan bi anlık kesinti oluyo
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 10:57:04
O oluşum bence doğal. Butona bastıkça Duty değeri artıyor. Bir kısıtlama yok. Sonuçta arta arta 255 ve ardından birden 0 oluyor. İşte bu noktada duty registeri bir maksimum bir minimum değer uygulamak zorunda kalıyor. Olay budur.
Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 11:09:59
hocam 99 değerinden sonra led maksimum şekilde yanıyor 99 ile 255 arası kanal çıkışı dogrudan +5volt oluyor osiloskopta duz çizgı oluyor +5 seviyesinde. bu olay bu aralıkta normalmı hocam ? dedigm olay 1 ile 99 degerleri arasında  oluyor.  osiloskopta baktıgımda anlık  faz kayması diyebilirm
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 11:14:53
O zaman max duty değeri 100 (%100 gibi) kullanıyorsundur ve bu olayda 99 dan sonra meydana geliyordur.
PWM %100 duty değerini pek sevmez. O nedenle 1 den aşağıya düşmesin 99 dan yukarıya çıkmasın şeklinde komut koyarsan bu sorun oluşmaz.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 11:25:26
Bende if komutları ile  şunu eklemiştim zaten

'IF DUTY_A=100 THEN DUTY_A=1
'IF DUTY_B=100 THEN DUTY_B=1
'IF DUTY_C=100 THEN DUTY_C=1

'IF DUTY_A=255 THEN DUTY_A=99
'IF DUTY_B=255 THEN DUTY_B=99
'IF DUTY_C=255 THEN DUTY_C=99

bu seferde bunlar olunca kırpşmalar baslıyor malesef.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 11:33:39
Aslında programın tamamını görmeden sürekli burada tartışıyor ve akıl veriyoruz ama yanlış yapıyoruz sanırım.
O nedenle programı buraya koyarsan daha uygun olacak herhalde. Amacın nedir onuda açıklarsan sevinirim.
Normal şartlarda duty değerinin 100'ü aşmaması gerekmezmi o zaman yazdığın;

'IF DUTY_A=255 THEN DUTY_A=99
'IF DUTY_B=255 THEN DUTY_B=99
'IF DUTY_C=255 THEN DUTY_C=99
komutlar tümden yanlış oluyor. Ama aşıyor ise o zaman o kararsızlığın 255 dolaylarında gözükmesi gerekirdi.
Anlayacağın programın tamamını görmek lazım artık.
Ben olsam şöyle yazardım.

'IF DUTY_A=100 THEN DUTY_A=1
'IF DUTY_B=100 THEN DUTY_B=1
'IF DUTY_C=100 THEN DUTY_C=1
Çünki bildiğim kadarı ile yalnızca artırma tuşları var. O halde eksiltme olmayacağına göre butona bastıkça artacak. Nereye kadar?, 100 oluncaya kadar 100 olunca yeniden 1 den başlatmak en mantıklısı olurdu.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 11:42:56
hocam artırmada var azaltmada var toplam 6 adet tuş var. programım şu şekilde;

kesme programı sizin derslerde verdiginiz program hocam.




TRISA=0
TRISB=%11111111
TRISC=0
TRISD=0
TRISE=0

porta=0
portb=0
portc=0
portd=0
porte=0



DEFINE LCD_DREG PORTD 'LCD data port
DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTD 'LCD register select port
DEFINE LCD_RSBIT 3 'LCD register select bit
DEFINE LCD_EREG PORTD 'LCD enable port
DEFINE LCD_EBIT 2 'LCD enable bit
DEFINE LCD_LINES 2 'Number lines on LCD


DEFINE OSC 20

@ DEVICE pic16F877                                                   
@ DEVICE pic16F877, WDT_OFF                 
@ DEVICE pic16F877, PWRT_ON                
@ DEVICE pic16F877, PROTECT_OFF         
@ DEVICE pic16F877, HS_OSC

ON INTERRUPT GoTo KESME   
OPTION_REG=%10001000      
INTCON=%10100000

ADCON1=7

DUTY_A VAR BYTE
DUTY_B VAR BYTE
DUTY_C VAR BYTE
LEDA VAR BYTE
LEDB VAR BYTE
LEDC VAR BYTE
I VAR WORD
X VAR BYTE

PAUSE 100
LCDOUT $FE,1

   DUTY_A=1
   DUTY_B=1
   DUTY_C=1



BASLA:

'LCDOUT $FE,$80,"R =",DEC3 DUTY_A
'LCDOUT $FE,$88,"G =",DEC3 DUTY_B
'LCDOUT $FE,$C0,"B =",DEC3 DUTY_C

DUTY_A=DUTY_A+PORTB.0
DUTY_A=DUTY_A-PORTB.1

DUTY_B=DUTY_B+PORTB.2
DUTY_B=DUTY_B-PORTB.3

DUTY_C=DUTY_C+PORTB.4
DUTY_C=DUTY_C-PORTB.5

FOR I=0 TO 1000

'FOR X=0 TO 2

'NEXT X

NEXT I
I=0



IF DUTY_A=100 THEN DUTY_A=1
IF DUTY_B=100 THEN DUTY_B=1
IF DUTY_C=100 THEN DUTY_C=1

IF DUTY_A=255 THEN DUTY_A=99
IF DUTY_B=255 THEN DUTY_B=99
IF DUTY_C=255 THEN DUTY_C=99

GOTO BASLA







DISABLE
KESME:
      LEDA=LEDA+1
      IF (PORTC.1=1 AND LEDA=DUTY_A) OR (PORTC.1=0 AND LEDA=100-DUTY_A) THEN
         PORTC.1=1-PORTC.1
         LEDA=0
      ENDIF
             
     
      LEDB=LEDB+1
      IF (PORTC.2=1 AND LEDB=DUTY_B) OR (PORTC.2=0 AND LEDB=100-DUTY_B) THEN
         PORTC.2=1-PORTC.2
         LEDB=0
      ENDIF
     
      LEDC=LEDC+1
       IF (PORTC.3=1 AND LEDC=DUTY_C) OR (PORTC.3=0 AND LEDC=100-DUTY_C) THEN
         PORTC.3=1-PORTC.3
         LEDC=0     
      ENDIF
         
      TMR0=230
      INTCON.2=0       
      RESUME
      ENABLE
     
END





bu yaptıgım sürücüye baska picten bilgi gelcek zaten, benm düşümcem buton yerine diger picin pinlerini buton yerine baglayarak picten sinyal göndermekti.  seri data göndermeyi  bu işin içine soksamda , bekleme , butonlar ve 1-99 arası if şartlarını kaldırıp duty degerlerine seri data göndererek değiştirsem yapılabilirmi?   yani pwm için yazdıgım programın ana menusune  SERIN komutu kullanabilirmiyimki? bu komut data geldiginde çalısıyor gelmediğinde data beklemesi yapıyor. bu bekleme kesmeyi etkilermi

yazacagım komut şu;

DISABLE

SERIN Pin,Mode,{Timeout,Label,}{[Qual...],}

ENABLE

kullanılabilirmi?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 12:37:39
seri iletişimi denedim fakat olmadı. bu şekilde yapılamazmı?


pwm sinyali ürettigim pic 16f877 ve 20 mhz de çalısıyor.
ana menusunde şu programı kullandım

BASLA:

DISABLE
SerIn2 PORTC.7,1200,[DUTY_A,DUTY_B,DUTY_C]
ENABLE

GOTO BASLA


bilgiyi gönderdigim pic ise 4 mhz ile calısan 16f628a ;

programı;

BASLA:

A=30
B=40
C=55

    IF PORTB.1=1 THEN
    SEROUT2 PORTB.0,1200, [A,B,C] 
    ENDIF
   
    GOTO BASLA
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 12:54:53
O şekilde senkron tutmayacağı için çalışmaz. En iyisi USART kesmesi kullanmaktır.
Şimdilik Seri iletişimi bir kenara koy istersen Ona sonra bakarız.
Aşağıdaki kodu bir denermisin devrende;
BASLA:

DUTY_A=DUTY_A+PORTB.0
DUTY_A=DUTY_A-PORTB.1

DUTY_B=DUTY_B+PORTB.2
DUTY_B=DUTY_B-PORTB.3

DUTY_C=DUTY_C+PORTB.4
DUTY_C=DUTY_C-PORTB.5

FOR I=0 TO 15:NEXT I

GOTO BASLA

DISABLE
KESME:
      FOR X=0 TO 255
      IF x<=DUTY_A THEN
         PORTC.1=1
      ELSE
         PORTC.1=0
      ENDIF     

      IF x<=DUTY_b THEN
         PORTC.2=1
      ELSE
         PORTC.2=0
      ENDIF
     
      IF x<=DUTY_c THEN
         PORTC.3=1
      ELSE
         PORTC.3=0
      ENDIF       
      NEXT

      INTCON.2=0       
      RESUME
      ENABLE
     
END


Tuşların çalışma süresi hızlı gelirse döngü miktarını  15 den 20 ye  hatta 16 -17 -18 şeklinde artırırsan daha hassas sonuç elde edersin.
Bu şekilde PWM frekansı yaklaşık 550 Khz dolayına yükselecek. Bu ise kesinlikle kırpışma falan olmamasını sağlaması lazım.
Ancak parlaklıkla ilgili sorun çıkabilir . Olursa frekansı düşürmek gerekecek O zamanda Kesme içindeki döngü arasına ;
Pauseus 5 gibi bir komut koyman yeterli olacaktır.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 13:45:39
tek kelimeyle harika... tam istedigm gibi oldu hocam cok teşekkür ederim. 

pwm sürücü kısmını 16f628A ile yapacagımdan,  USART kesmesi bu picte yok diye biliyorum?


yapacagım saat devresinde 16f877a kullanacagım. ledleri sürebilmek içinde 16f628A kullanacagım. eger bu ikisi arasında seri iletişimi yapamazsam butonların girişine, 16f877 den 6 adet pic cıkartıp 16f628 pin girişlerine baglayacagım, buda hem sıkıntılı hem gereksiz olur dıye dusunuyorum. USART ı bu şekilde kullanmak mumkunmu hocam? daha önce de USART ile hiç ilgilenmedim
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 14:08:00
Harika olduğuna sevindim. Daha da harika olabilir unutma.
Mevcut program çok kısa aralıkle kesme yaratıyor. Kesme süresini her 4 küsur ms de bir seviyesine çıkartırsan sonuç dahada harika olacaktır.
Bu ise sana USART üzerinden bilgi alma imkanı da sağlayacaktır.

Kesme süresi değişikliği için yalnızca option registerinin değerini değiştirmen yeterli olacaktır. Registere aşağıdaki değeri verirsen yaklaşık her 4,1 ms de bir kesme oluşacaktır.
OPTION_REG=%10000011  şeklinde .
Bu durumda buton kontrolü hızlanacak. Bu nedenle döngü sayısını 50 ye çıkart bence.
Ayrıca kesme kısmında pauseus kullanmış isen onuda sil.

Bu program ile dışarıdan seri bilgide almak istiyorsan USART kesemsini açman ve Kesme kısmında ufak bir ayarlama yapman gerekecek.
Öncelikle belirteyim 16F628 ve 628A da USART portu vardır kesme oluşturabilirsin.

USART kesmesini aktif etmek için sırası ile;
- INTCON.6 biti "1" yapılacak
- PIE1.5 biti "1" yapılacaktır.

Kesme Kısmında ise iki adet ayrı kesme kaynağı oluştuğu için ayrım yapmak zorundasın. Bunun için oluşan kesmenin hangisi olduğunu anlaman ve ona göre işlem yapman gerekiyor. Burada temel veri kesme bayraklarıdır.
Şayet TMR0 bayrağı set edilmiş ise TMR0 kesmesi oluşmuştur. O halde şu anda ne yapılıyorsa aynı işleri yapıp kesmeden çıkması gerekir.
Şayet USART kesmesi oluşmuş ise PIR1.5 biti set ediliecektir. Bu durumda USART dan gelen bilgiler alınmalıdır. Bu kesme bayrağı direk sıfırlanmaz. Ancak RCREG registerini okursan yada bir başka değişkene aktarırsan bayrak otomatik sıfırlanacaktır.
Şimdi Kesme kısmını bu açıklamalara göre düzenleyelim;

DISABLE
KESME:
IF PIR1.5=1 then VERIAL
FOR X=0 TO 255
      IF x<=DUTY_A THEN
         PORTC.1=1
      ELSE
         PORTC.1=0
      ENDIF     

      IF x<=DUTY_b THEN
         PORTC.2=1
      ELSE
         PORTC.2=0
      ENDIF
     
      IF x<=DUTY_c THEN
         PORTC.3=1
      ELSE
         PORTC.3=0
      ENDIF   
'      pauseus 5   
      NEXT
      INTCON.2=0       
      GOTO CIK

VERIAL:
HESERIN 3,CIK, [WAIT("GS"),DUTY_A,DUTY_B,DUTY_C]
TEMP=RCREG

CIK:
       RESUME
       ENABLE


20 Mhz de çalıştığına göre sorunsuzca 9600 baud da haberleşme yapabilirsin.
628 den bilgi yollarken
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]

HSEROUT ["G","S",DUTY_A,DUTY_B,DUTY_C]  şeklinde yollaman gerekiyor.
Ayrıca her iki programın başına ;
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 129 ' 9600 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

komutlarını eklemeyi de unutma.
Hepsi bu kadar.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 14:22:24
hocam dediginiz OPTION_REG=%10000011  değişikligini yaptım donguyü 50 de denedim ve 200 de denedim butonlar çok hızlı renk değişimide hızlı oluyor?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 14:23:40
Döngüyü 255'e kadar çıkartabilirsin.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 14:39:24
255 degerinde ilk programa gore hızlı. hocam haberlesmeyı yapablrsem buna gerek kalmayacak.


programda regester ayarları şöyle yapılı, fakat PIE1 regesterinide burayamı ekleyecegim?

ON INTERRUPT GoTo KESME   
OPTION_REG=%10000011      
INTCON=%11100000
PIE1.5=1   ----------------    şeklindemi?


bilgiyi 877 den gönderecegim HSER kullandıgım zaman portc.7 pininden alacagım demi?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 14:53:20
Evet. Aynen öyle.  PortC de TX yazılı olan pinden gönderme yapacak diğerinde RX yazılı pinden gelen bilgiyi alacaksın.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 15:06:04
hocam anlatılan herseyi yaptım yada yaptım sanıyorum . kafam allak bullak oldu. zahmet olmazsa gönderdigm linkteki dosyalar bir göz atarsanız nerede hatam var. simulasyonda denedim ama veri gitmiyor.

http://www.dosya.tc/server9/bLoIe5/RGB_full.rar.html
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 15:08:03
628 için yazılan programda WDT on konumunda hocam!
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Ocak 2012, 15:33:09
Sorun 628 de RX pinini giriş olarak ayarlamamak. Ancak sistemin kuruluş biçiminide sevdiğimi söyleyemem.
Bu nedenle programları biraz değiştirdim.

Önce 877'yi vereyim;
TRISA=0
TRISB=%11111111
TRISC=%11000000
TRISD=0
TRISE=0

porta=0
portb=0
portc=0
portd=0
porte=0


DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 129 ' 9600 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

DEFINE LCD_DREG PORTD 'LCD data port
DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTD 'LCD register select port
DEFINE LCD_RSBIT 3 'LCD register select bit
DEFINE LCD_EREG PORTD 'LCD enable port
DEFINE LCD_EBIT 2 'LCD enable bit
DEFINE LCD_LINES 2 'Number lines on LCD

DEFINE OSC 20

@ DEVICE pic16F877                                                   
@ DEVICE pic16F877, WDT_OFF             
@ DEVICE pic16F877, PWRT_ON             
@ DEVICE pic16F877, PROTECT_OFF         
@ DEVICE pic16F877, HS_OSC

ADCON1=7

DUTY_A VAR BYTE
DUTY_B VAR BYTE
DUTY_C VAR BYTE
LEDA VAR BYTE
LEDB VAR BYTE
LEDC VAR BYTE
I VAR WORD
TOP VAR WORD
X VAR BYTE

PAUSE 100
LCDOUT $FE,1

   DUTY_A=1
   DUTY_B=1
   DUTY_C=1



BASLA:

LCDOUT $FE,$80,"R =",DEC3 DUTY_A
LCDOUT $FE,$88,"G =",DEC3 DUTY_B
LCDOUT $FE,$C0,"B =",DEC3 DUTY_C



DUTY_A=DUTY_A+PORTB.0
DUTY_A=DUTY_A-PORTB.1

DUTY_B=DUTY_B+PORTB.2
DUTY_B=DUTY_B-PORTB.3

DUTY_C=DUTY_C+PORTB.4
DUTY_C=DUTY_C-PORTB.5

I=DUTY_A+DUTY_B+DUTY_C

IF I=TOP THEN BASLA

HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]

HSEROUT ["G","S",DUTY_A,DUTY_B,DUTY_C]

TOP=I

GOTO BASLA
     
END


Şimdi de 628'i vereyim;
PORTA=0
PORTB=0     
TRISB=%00000010         
TRISA=%00000000 
'-----------------------------------------------------------------
@ DEVICE pic16F628A                      'işlemci 16F628                               
@ DEVICE pic16F628A, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628A, HS_OSC
'-----------------------------------------------------------------
DEFINE OSC 20

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 129 ' 9600 Baud @ 20MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

ON INTERRUPT GoTo KESME   

INTCON=%11000000
PIE1.5=1

CMCON=7 

'ADCON1=7

DUTY_A VAR BYTE
DUTY_B VAR BYTE
DUTY_C VAR BYTE
LEDA VAR BYTE
LEDB VAR BYTE
LEDC VAR BYTE

TEMP var byte

I VAR BYTE
X VAR BYTE

PAUSE 200
LCDOUT $FE,1

   DUTY_A=1
   DUTY_B=1
   DUTY_C=1



BASLA:

FOR X=0 TO 255
      IF x<=DUTY_A THEN
         PORTA.1=1
      ELSE
         PORTA.1=0
      ENDIF     

      IF x<=DUTY_b THEN
         PORTA.0=1
      ELSE
         PORTA.0=0
      ENDIF
     
      IF x<=DUTY_c THEN
         PORTA.2=1
      ELSE
         PORTA.2=0
      ENDIF   
   
      NEXT

'FOR I=0 TO 10:NEXT I

GOTO BASLA

DISABLE
KESME:

HSERIN 3,CIK, [WAIT("GS"),DUTY_A,DUTY_B,DUTY_C]
TEMP=RCREG

CIK:
       RESUME
       ENABLE


Dene bakalım. Artık bu yazışmaya bir son veriyorum. Gerisini kendin halletmeye bak . Zaten her şey çalışıyor. Belki ufak tefek süre ayarlamaları gerekebilir onlarıda yaparsın.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Ocak 2012, 15:47:19
Tamam hocam çalışıyor. herşey için teşekkür ederim....
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Ocak 2012, 11:55:40
merhaba hocam;

12f675 picini ilk defa kullanacagım, pici denemek için söyle bir program birleştirdim.

@ device  pic12F675, intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off

DEFINE OSCCAL_1K 1
DEFINE ADC_BITS 4
DEFINE ADC_SAMPLEUS 50
DEGER VAR BYTE
DEGER2 VAR BYTE
CMCON=7
ANSEL=%00110001
TRISIO=1




BASLA:
PAUSE 1500
ADCIN 0,DEGER
DEVAM:
PAUSE 1000
ADCIN 0,DEGER2
IF DEGER2<DEGER THEN HIGH GPIO.1
GOTO DEVAM
END



fakat bu programda GP5 portu sürekli 1 konumuda kalıyor.

bu picle esas yapacagım iş 1 adet onolog girşi ve 5 adet röle kontrolü olacak hocam. yardımlarınızı bekliyorum
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ocak 2012, 12:23:43
Emrah,
GP5 pininin süreki 1 de kalması açılışta o pinin o değeri almasındandır. Başla satırından evvel ;
GPIO=0  komutunu koyarsan bu sorun giderilmiş olacaktır.
Programındaki komutlar doğru ancak neden 4 bitlik bir ADC okuması yapıyorsun anlamadım doğrusu.
Programa bakılırsa GPIO.0 pini Analog olarak kullanılacak. Diğer pinler ise röle çıkışı yapılacak. Doğru kodlar şöyle olmalı;

Ete


@ device  pic12F675, intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off
DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

DEFINE OSC 4

DEFINE ADC_BITS 8    ' ADCIN resolution  (Bits)
DEFINE ADC_SAMPLEUS 10 ' ADC sampling time (uSec)
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00000001
WPU=0  'pullup direnci açık değil

DEGER VAR BYTE
DEGER2 VAR BYTE
PAUSE 200  'açılış gecikmesi mutlaka verilmelidir.
GPIO=0

BASLA:
PAUSE 1500
ADCIN 0,DEGER
DEVAM:
PAUSE 10
ADCIN 0,DEGER2
IF DEGER2<DEGER THEN HIGH GPIO.1
GOTO  BASLA
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Ocak 2012, 12:54:33
hocam program alını idi. dedğim gibi bu pice hiç program yazmadım daha once ama şimdi böyle bir iş için gerekli. program için sagolun hocam. 
picteki tockı pinleri ile  röleyi nasıl kontrol edebilirm? pul up direncmi koymlaıyım röleyi kontrol eden transistörn beyzine? yoksa gerilim bölücü direnc şeklindemi? bu direnç degereleri ne olmalı?

iyi çalısmalar hocam..
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ocak 2012, 13:10:04
1 adet seri 1K direnç ve peşine 1 adet BC547 koy. Rölenin bir ucunu BC547 nin Collector ucuna diğer ucunu +5V ta bağla. Transistörün Emitter ucunuda GND ye bağla olsun bitsin. Röle bobin uçları arasına 1N4001 diyot bağlamayı ihmal etme.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Ocak 2012, 13:41:34
hocam programda gelen analog sinyali karsılastırıp cıkış almak istedim fakat olmadı.

analog girişe pot ile 0-5V gönderiyorum , yazılmsal olara belli bir degerin üstünde çıkıs vermesi gerekmezmi?

@ device  pic12F675, intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off
DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

DEFINE OSC 4

DEFINE ADC_BITS 8    ' ADCIN resolution  (Bits)
DEFINE ADC_SAMPLEUS 10 ' ADC sampling time (uSec)
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00000001
WPU=0  'pullup direnci açık değil

DEGER VAR BYTE
DEGER2 VAR BYTE
PAUSE 200  'açılış gecikmesi mutlaka verilmelidir.
GPIO=0

BASLA:

ADCIN 0,DEGER
IF DEGER>50 THEN
GPIO.1=1
ELSE
GPIO.1=0
ENDIF


GOTO  BASLA
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Ocak 2012, 14:05:48
ADCON0=%10000000 regesterinin 7. bitini 0 yaptım calıstı hocam. yardımlarınız için teşekkür ederim
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ocak 2012, 15:08:35
Evet,
O bit sıfır olmalı. 10 bit olunca 1 yapılıyor.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Ocak 2012, 15:37:11
hocam GPIO.3 pin yani MCLR in oldugu pini sürekli 0 konumda. bunu nasıl acacagız? config de mclr off şeklinde ayarlı

programın son hali,

@ DEVICE pic12F675                                                   
@ DEVICE pic12F675, WDT_OFF           
@ DEVICE pic12F675, PWRT_ON           
@ DEVICE pic12F675, PROTECT_OFF       
@ DEVICE pic12F675, MCLR_off           
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT 


DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

DEFINE OSC 4

DEFINE ADC_BITS 10    ' ADCIN resolution  (Bits)
DEFINE ADC_SAMPLEUS 3 ' ADC sampling time (uSec)
CMCON = 7
ANSEL = %00010001
ADCON0=%10000000
GPIO=0
TRISIO=%00000001
WPU=0  'pullup direnci açık değil




DEGER VAR WORD

PAUSE 200  'açılış gecikmesi mutlaka verilmelidir.
GPIO=0

BASLA:


ADCIN 0,DEGER
IF DEGER>50 THEN
GPIO.1=1
ELSE
GPIO.1=0
ENDIF

IF DEGER>200 THEN
GPIO.2=1
ELSE
GPIO.2=0
ENDIF

IF DEGER>350 THEN
GPIO.3=1
ELSE
GPIO.3=0
ENDIF

IF DEGER>450 THEN
GPIO.4=1
ELSE
GPIO.4=0
ENDIF

IF DEGER>550 THEN
GPIO.5=1
ELSE
GPIO.5=0
ENDIF


GOTO  BASLA
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Ocak 2012, 19:20:18
Bütün MCLR pinleri şayet seçimli ise (off yapılabilenler) yalnızca giriş olarak kullanılabilir. Çıkış olarak kullanılamaz.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ALPHA - 23 Şubat 2012, 15:24:41
https://rapidshare.com/files/180994746/PBP.zip | 0.00 MB
LING GOCUK ARKADASLAR
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 27 Şubat 2012, 11:17:15
merhaba ete hocam,
bilgisayar ile haberleşme denemesi yapıyorum fakat microcode terminalinden gönderdigim sayıları LCD ekranda baska deger olark görüyorum.

örnegin;  terminalden 10 gönderiyorum LCD ekranda hex karşılıgı 31 degeri, desimal karsılıgı 49 görüyorum. ilgili program şu şekilde,

TRISA=0
TRISB=%00010000
TRISC=%10000000
TRISD=0
TRISE=0

porta=0
portb=0
portc=0
portd=0
porte=0
'-------------------------------------------------------------------------------

@ DEVICE pic16F877                                                   
@ DEVICE pic16F877, WDT_OFF             
@ DEVICE pic16F877, PWRT_ON             
@ DEVICE pic16F877, PROTECT_OFF         
@ DEVICE pic16F877, XT_OSC


INCLUDE "modedefs.bas"

define osc 4
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

'-------------------------------------------------------------------------------
DEFINE LCD_DREG PORTD 'LCD data port
DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTD 'LCD register select port
DEFINE LCD_RSBIT 3 'LCD register select bit
DEFINE LCD_EREG PORTD 'LCD enable port
DEFINE LCD_EBIT 2 'LCD enable bit
DEFINE LCD_LINES 2 'Number lines on LCD

'-------------------------------------------------------------------------------
ADCON1=7
'CMCON=7
'-------------------------------------------------------------------------------

VERI VAR BYTE
HAM  VAR BYTE
'-------------------------------------------------------------------------------

LCDOut $FE,1
pause 200       
'-------------------------------------------------------------------------------


BASLA:

HSerIn 300,basla,[WAIT("E"),VERI]

                 
LCDOUT $FE,$80,"HEX: ",hex2 VERI,"  DEC: ",dec2 VERI

PAUSE 1000

GOTO BASLA
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 27 Şubat 2012, 11:32:51
Hyper terminalde bastığın her tuş hemen çıkışa yönlendirilir. Sen 10 yollamak için önce "1" tuşuna ve sonra "0" tuşlarına basarken ilk basılan "1" tuşunun karşılığı hemen çıkışa yönlendirilip sana sana $31 (yani 49 olarak)  ulaşıyor.
Normal şartlarde Hyper terminalden el ile rakam girdiğin için bunları tek rakam halinde birleştirmen zor.
Bu durumda programında değişiklik yaparak gelenleri tek tek değerlendirecek bir sistem düşünmelisin.
Mesela 10 sayısı için önce 49 sonra 48 alacağını hesaba katmalısın.
Bu gelenleri iki değişkende tutarsan ve A=49 ve B=48 olduğunu varsayarsak;
A=A-48 ve B=B-48 şeklinde iki eşitlik kullanırsan rakamların gerçek değerlerine ulaşırsın.
Bunlarıda SAYI=a*10+B şeklinde 10 sayısına çevirebilirsin.

Bilgi yollama işini hyper terminal yerine başka bir ünteden yaparsan istediğin rakamı tabiiki yollayabilirsin. Ama hyperterminalde sistem budur.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 27 Şubat 2012, 11:42:48
 cevap icin sagolun hocam.  şöyle bir değişiklik yaptım oldu sanırım;

HSerIn 500,basla,[WAIT("E"),dec VERI]

gelen verinin başına DEC ekledim ve gönderdigim sayı LCD de görünüyor.

iletişim hızını 2400 de kullanıyorum fakat bunu 9600 de kullanmam gerekiyor. sitede 9600 ve 4MHZ için define ayarları arıyorum bulamadım hocam.  9600 baud için ayarlar varmı hocam sızde?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 27 Şubat 2012, 11:52:57
9600 baud için ayarlar şöyle;
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Hem bu ayar değerlerini hemde başka hesaplamaları yapabilmen için bir basit program var.
Adı "PicMultiCalc"
İnternette ararsan kolyalıkla bulabilirsin. Son versiyonunu (1.3.1) bulmaya çalış. ELinin altında bulunsun.
Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 27 Şubat 2012, 12:01:19
teşekkürler hocam iyi çalısmalar
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Mart 2012, 13:22:50
Erol hocam USART kesmesinde bir sorun yaşıyorum.

RF ile saat bilgisi gönderiyorum gönderici kısımda sorun yok eminim.
fakat saat kısmında sorun var usart ile bilgi alımı yapmaya calıstım gelen bilgiyi displaylere dogrudan yazdırıyım dedim yine görüntü 00:00 şeklinde.  usart ı yanlısmı kullnıyorum yardımcı olabilirmisiniz?

RF den sadece saat ayarı için gönderiyorum dakika ve saati fakat. ilk denemede gelen veriyi okumak için dogrudan displaylere gönderiyorum hiçbir sonuç alamıyorum. ds1302 den okuma yaptıgım zaman saatim sorunsuz çalısıyoror. sorunum USART kesmesinde aceba nerede yanlış yapıyorum?

saygılar....

PORTA=0:PORTB=0   
TRISB=%10000010       
TRISA=%11000000 
'-----------------------------------------------------------------
@ DEVICE pic16F628A                      'işlemci 16F628                               
@ DEVICE pic16F628A, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
DEFINE OSC 4


DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

'-------------------------------------------------------------------------
ON INTERRUPT GoTo KESME   
OPTION_REG=%10000101   
INTCON=%11000000 
PIE1.5=1
TMR0=0
CMCON=7 
.
.
.
.
.

DISABLE
KESME:

HSERIN 3,CIK,[WAIT("YSMIN"),E[0],E[1],E[3],E[4]]
'SERIN2 PORTB.1,3,CIK, [WAIT("YSMIN"),E[0],E[1],E[3],E[4]]
E[0]=E[0]-16
E[1]=E[1]-32
E[3]=E[3]-48
E[4]=E[4]-64

E[0]=E[0]*10
E[1]=E[0] + E[1]
E[3]=E[3]*10
E[4]=E[3] + E[4]


OKU=RCREG   
CIK:     
         RESUME
         ENABLE
                 
         
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Mart 2012, 13:37:45
Usart kesmesinin açılmasında problem yok.
Muhtemel problemler aşağıdakiler olabilir.
1. HSERIN 3,CIK, şeklinde kullanılan komutta yer alan 3 ms lik değer o kadar bilginin alınması için yeterli değildir. Bu nedenle 3 sayısını en azında önce bir 10 yap sonra haberleşme sağlandıktan sonra yavaş yavaş düşür. Bir yerde kesilecektir zaten. Kesildiği değerin bir fazlasını hatta 2-3 fazlasını vererek bu kısmı geç.

2. Genelde dizi değişkenleri ile işlem yapılınca sorun çıkmaktadır. Bu nedenle dizi değişkenleri yerine sabit değişken kullan. Hesapları yap ve sonunda diziye eşitle. Örnek;

HSERIN 10,CIK,[WAIT("YSMIN"), ESIFIR ,EBIR, EUC, EDORT]
ESIFIR=ESIFIR-16:ESIFIR=ESIFIR*10:E[0]=ESIFIR
EBIR=EBIR-32:E[1]=ESIFIR+EBIR
EUC=EUC-48:EUC=E3*10:E[3]=EUC
EDORT=EDORT-64:EDORT=EUC+EDORT:E[4]=EDORT

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Mart 2012, 14:25:46
10  ile 5 arasına kadar bekleme sürelerini değiştirdim 00:00 olmuyor v bu seferde sıcaklık için kulandıgım santgrad işareti çıkıyor 3 digitte son digitte dakikanın birler basamagı geliyor hocam. yazdıgm saatt programında sorun vardır dıye sizin saat programını ekledim sonuc yine aynı  son denedigm program şu şekilde ;

dizilerin ve bekleme süresinin hatalı oldugunu  sızın dedıgınıze gore yaptıktan sonra farketıım.

daha önce kesmeyi kaldrdım data alımını ana dönguye koydugumda saat ve dakıka dogru şekılde geliyordu fakat anadongude oldugu için saat takılıp kalıyodu. gelen datalarla ilgili problemim yok.

PORTA=0:PORTB=0   
TRISB=%10000010       
TRISA=%11000000 
'-----------------------------------------------------------------
@ DEVICE pic16F628A                      'işlemci 16F628                               
@ DEVICE pic16F628A, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
DEFINE OSC 4


DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

'-------------------------------------------------------------------------
ON INTERRUPT GoTo KESME   
OPTION_REG=%10000101   
INTCON=%11000000 
PIE1.5=1
TMR0=0
CMCON=7 
'----------------------------------------------------------------------------
Comm_Pin    VAR PortB.0     ' One-wire Data-Pin "DQ" PortB.0 da
Busy        VAR BIT         ' Busy Status-Bit
POZ         VAR BIT
Z           VAR BIT
W           VAR BIT
U           VAR BIT
T           VAR BIT
GOR         VAR BYTE
HAM         VAR WORD        ' Sensör HAM okuma değeri
ISI         VAR WORD        ' Hesaplanmış ISI değeri
Float       VAR WORD        ' Holds remainder for + temp C display
X           VAR WORD 
Y           VAR BYTE 
SAYI        VAR BYTE   
SIGN_BITI   VAR HAM.Bit11   '   +/- sıcaklık İşaret biti,  1 = olursa eksi sıcaklık
NEGAT_ISI   CON 1           ' Negatif_Cold = 1
Deg         CON 223         ' ° işareti
SIGN        VAR BYTE        '  ISI değeri için  +/-  işaret
TEMP        VAR BYTE         ' Div32 bit hesap için geçici değişken
SAYAC       VAR BYTE 80
SN          VAR BYTE
DAK         VAR BYTE
SAAT        VAR BYTE
GUN         VAR BYTE
AY          VAR BYTE
YIL         VAR BYTE
MEM         var byte '
EKRAN_ZAM   var byte '
SUM         VAR BYTE
EKRAN_ISI   VAR BYTE
ONLAR       VAR BYTE
BIRLER      VAR BYTE
ESN         VAR BYTE
OKU VAR BYTE

SAATO VAR BYTE 
SAATB VAR BYTE
DAKO VAR BYTE
DAKB VAR BYTE
'---------------------------------------------
SYMBOL  DTA=PortA.1
SYMBOL  CLK=PORTA.2
symbol  ST=PORTA.3

SYMBOL  RTC_DTA=PORTB.5
SYMBOL  RTC_CLK=PORTB.4
SYMBOL  RTC_RST=PORTB.6

symbol  SEC   =PORTA.6 
SYMBOL  ASAGI =PORTB.7
SYMBOL  YUKARI=PORTA.7
'-----------------------------------------------------------------------------
CLEAR  'tüm değişkenler sıfırlandı
EKRAN_ZAM=10  'saat EKRANDA KALMA SÜRESİ
EKRAN_ISI=5   'sıcaklık EKRANDA KALMA SÜRESİ BUNLARI DEĞİŞTİREBİLİRSİNİZ.
SUM=EKRAN_ZAM+EKRAN_ISI
IF sec=0 then ZAM_AYAR
ILK:
gosub ekran0
gosub sensoryaz
gosub sensoroku
low RTC_RST
low RTC_CLK
GOSUB GECIKME
'-----------------------------------------------------------------------------
HIGH PORTA.0
gosub ZAMAN_OKU:esn=SN
BASLA:
        GOSUB ZAMAN_OKU
        IF SAYAC=30 THEN LOW PORTA.0
       
        IF Y=SUM THEN Y=0
        IF Y>(EKRAN_ZAM) AND Y<SUM THEN
         if y=(EKRAN_ZAM+1) then GOSUB SENSOROKU
         GOSUB EKRAN1
        ENDIF
       
        if esn=sn then atla
        Y=Y+1 : ESN=SN : SAYAC=0
        IF Y<=EKRAN_ZAM THEN
           HIGH PORTA.0
           GOSUB EKRAN0
        ENDIF           
     
ATLA:  if SEC=0 THEN AYAR  'MODE TUŞUNA BASILMIŞ İSE AYAR'A GİT
       
       GOTO BASLA
'-----------------------alt programlar-------------------------------------------       
TEKRAR:
       SHIFTOUT DTA,CLK,1,[SAYI]
       RETURN
BAK_0:
       GOSUB AL
       IF Z=1 AND W=1 THEN SAYI=0 
       RETURN
BAK_1:
       GOSUB AL
       IF Z=1 AND U=1 THEN SAYI=0             
       RETURN
BAK_2:
       GOSUB AL
       IF Z=1 AND T=1 THEN SAYI=0             
       RETURN
     

EKRAN0:         
        IF SN//2=0 THEN
        HIGH PORTA.0
        ELSE
        LOW PORTA.0
        ENDIF
       
       
        X= DAKB:GOSUB BAK_1:GOSUB TEKRAR
        X= DAKO :GOSUB BAK_1:GOSUB TEKRAR
        u=0
        X= SAATB :GOSUB BAK_0:GOSUB TEKRAR
        X= SAATO:GOSUB BAK_0:GOSUB TEKRAR
        w=0
       
       
        'X= DAK DIG 0:GOSUB BAK_1:GOSUB TEKRAR
        'X= DAK DIG 1 :GOSUB BAK_1:GOSUB TEKRAR
        'u=0
        'X= SAAT DIG 0 :GOSUB BAK_0:GOSUB TEKRAR
        'X= SAAT DIG 1:GOSUB BAK_0:GOSUB TEKRAR
        'w=0
       HIGH st:PAUSEUS 2:LOW st
       RETURN
       
AL:    LOOKUP X,[123,10,103,79,30,93,125,11,127,95,23,113],SAYI :RETURN
     

EKRAN1:LOW PORTA.0
       X=11:GOSUB AL:GOSUB TEKRAR
       X=10:GOSUB AL:GOSUB TEKRAR
       
       x=(ISI DIG 0):GOSUB AL:GOSUB TEKRAR
       x=(ISI DIG 1):GOSUB AL:GOSUB TEKRAR
       HIGH st:PAUSEUS 2:LOW st
       RETURN
       
EKRAN2:IF POZ=0 THEN HIGH PORTA.0
       X= YIL DIG 0:GOSUB BAK_2:GOSUB TEKRAR
       X= YIL DIG 1:GOSUB BAK_2:GOSUB TEKRAR
       T=0
       X= AY DIG 0:GOSUB BAK_1:GOSUB TEKRAR       
       X= AY DIG 1:GOSUB BAK_1:GOSUB TEKRAR
       U=0     
       X= GUN DIG 0:GOSUB BAK_0:GOSUB TEKRAR
       X= GUN DIG 1:GOSUB BAK_0:GOSUB TEKRAR
       w=0
       HIGH st:PAUSEUS 2:LOW st   
       RETURN 
       
EKRAN_3:

        X= SN DIG 0:GOSUB BAK_1:GOSUB TEKRAR
        X= SN DIG 1 :GOSUB BAK_1:GOSUB TEKRAR
        u=0
        SAYI=0:GOSUB TEKRAR
        SAYI=SUM:GOSUB TEKRAR
        w=0
       HIGH st:PAUSEUS 2:LOW st
       RETURN           
'----------------------------------------------------- 
ZAM_AYAR:
        LOW PORTA.0:SN=0:POZ=1:SUM=6
        SN=EKRAN_ZAM:GOSUB EKRAN_3
        WHILE SEC=0:WEND
       
ZAM_BIR:
        W=1
        IF SEC=0 THEN ZAM_IKI
        IF YUKARI=0 THEN
          IF Z=0 THEN sn=SN+1
          IF SN=31 THEN SN=0       
        ENDIF             
        IF ASAGI=0 THEN
           IF Z=0 THEN SN=SN-1
           IF SN=255 THEN SN=30
        ENDIF
        Z=1-Z
        GOSUB EKRAN_3       
        GOSUB GECIKME
        GOTO ZAM_BIR
       
ZAM_IKI:
        EKRAN_ZAM=SN:SUM=91
        SN=EKRAN_ISI:GOSUB EKRAN_3
        WHILE SEC=0:WEND
       
ZAM_UC:
        W=1
        IF SEC=0 THEN ZAM_DORT
        IF YUKARI=0 THEN
          IF Z=0 THEN sn=SN+1
          IF SN=31 THEN SN=0       
        ENDIF             
        IF ASAGI=0 THEN
           IF Z=0 THEN SN=SN-1
           IF SN=255 THEN SN=30
        ENDIF
        Z=1-Z
        GOSUB EKRAN_3       
        GOSUB GECIKME
        GOTO ZAM_UC       
       
ZAM_DORT:
         EKRAN_ISI=SN
         SUM=EKRAN_ZAM+EKRAN_ISI
         Z=0:W=0:POZ=0
         GOTO ILK       
AYAR: 
       LOW PORTA.0:SN=0:POZ=1
       gosub ekran0
       WHILE SEC=0:WEND
HOUR:  W=1
       LOW PORTA.0
       IF SEC=0 THEN MINBIR
       IF YUKARI=0 THEN
          IF Z=0 THEN SAAT=SAAT+1
          IF SAAT=24 THEN SAAT=0       
        ENDIF   
        IF ASAGI=0 THEN
           IF Z=0 THEN SAAT=SAAT-1
           IF SAAT=255 THEN SAAT=23
        ENDIF
        Z=1-Z
        GOSUB EKRAN0   
        GOSUB GECIKME
        GOTO HOUR
       
MINBIR: W=0:Z=0
        GOSUB EKRAN0
        WHILE SEC=0
        WEND
       
MINUTE: U=1       
       LOW PORTA.0
       IF SEC=0 THEN ara
        IF YUKARI=0 THEN
           IF Z=0 THEN  DAK=DAK+1
           IF DAK=60 THEN DAK=0
        ENDIF
        IF ASAGI=0 THEN
           IF Z=0 THEN  DAK=DAK-1
           IF DAK=255 THEN DAK=59             
        ENDIF
        Z=Z-1
        GOSUB EKRAN0
        GOSUB GECIKME
        GOTO MINUTE
       
SECBIR: WHILE SEC=0
        WEND
        U=0
GECIKME:
        FOR X=0 TO 3500
        PAUSEUS 5
        NEXT
        RETURN
DELAY:
        FOR X=0 TO 1900
        PAUSEUS 10
        NEXT
        RETURN     

ARA:    W=0:u=0:T=0:Z=0
        GOSUB FLASH
        Gosub EKRAN0
        HIGH PORTA.0
        WHILE SEC=0 
        wend
        MEM=SN:GOSUB TERSCEVIR:SN=SAYI
        MEM=DAK:GOSUB TERSCEVIR:DAK=SAYI
        MEM=SAAT:GOSUB TERSCEVIR:SAAT=SAYI
        MEM=GUN:GOSUB TERSCEVIR:GUN=SAYI
        MEM=AY:GOSUB TERSCEVIR:AY=SAYI
        MEM=YIL:GOSUB TERSCEVIR:YIL=SAYI
        GOSUB ZAMAN_YAZ
        GOSUB ZAMAN_OKU
        y=0:POZ=0
        goto BASLA
       
FLASH:
      TOGGLE PORTA.0:GOSUB DELAY:TOGGLE PORTA.0:GOSUB DELAY
      TOGGLE PORTA.0:GOSUB DELAY:TOGGLE PORTA.0:GOSUB DELAY
      return
'-------------------------------------------------------------------------------     
           
             
'----------------ISI SENSÖR OKUMA BÖLÜMÜ --------------------------------
SENSOROKU:
'-----------------DİKKAT İSİS'de BU SATIR AKTİF EDİLECEK----------------------
'           ham=$0200:Gosub hesapla:return 'NORMAL ÇALIŞMADA BU SATIR SİLİNECEK
'------------------------------------------------------------------------------
           OWOUT   Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
           OWIN    Comm_Pin, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla
           RETURN
           
SENSORYAZ:
          OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
          return           
             
Hesapla:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-" 
       temp=($ffff-ham+1)*625
       ISI  = DIV32 10
       GOTO GEC   
    endif
    TEMP = 625 * (HAM+1)        '
    ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC:
    FLOAT = (ISI //1000)/100
    ISI=ISI/1000
    RETURN             

ZAMAN_OKU:
         high RTC_RST:OUTPUT rtc_dta
         shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
         SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM]  'OKU
         MEM=SN:GOSUB CEVIR:SN=SAYI
         MEM=DAK:GOSUB CEVIR:DAK=SAYI
         MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
         MEM=GUN:GOSUB CEVIR:GUN=SAYI
         MEM=AY:GOSUB CEVIR:AY=SAYI
         MEM=YIL:GOSUB CEVIR:YIL=SAYI
         low RTC_RST
         return

ZAMAN_YAZ:
     
         high  RTC_RST:OUTPUT RTC_DTA
         SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açıldı
         low RTC_RST:PAUSEUS 10
         high RTC_RST         
         SHIFTOUT  RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, 0, YIL, 128]  'YAZ
         low RTC_RST
         PAUSEUS 10
         return
               
CEVIR:
         ONLAR=MEM & %01110000
         ONLAR=ONLAR>>4
         BIRLER=MEM & %00001111
         SAYI=ONLAR*10+BIRLER
         RETURN 

TERSCEVIR:               
         ONLAR=MEM DIG 1
         ONLAR=ONLAR<<4
         BIRLER=MEM DIG 0
         SAYI=ONLAR+BIRLER
         RETURN
         
DISABLE
KESME:

HSERIN 10,CIK,[WAIT("YSMIN"),SAATO,SAATB,DAKO,DAKB]
'SERIN2 PORTB.3,3,CIK, [WAIT("YSMIN"),E[0],E[1],E[3],E[4]]
SAATO=SAATO-16
SAATB=SAATB-32
DAKO=DAKO-48
DAKB=DAKB-64

SAATO=SAATO*10
SAATB=SAATO + SAATB
DAKO=DAKO*10
DAKB=DAKO + DAKB

OKU=RCREG   
CIK:     
         RESUME
         ENABLE
                 
         
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Mart 2012, 14:45:56
Yani sorun çözülmüş gözüküyor. Öyle değilmi?

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Mart 2012, 15:24:14
hocam serı bilgi alımını anadongu içinde yaptıgım zaman ve dogrudan dısplaylarda göster dedigim zaman gösteriyordu fakat serin komutu ana dongude oldugu için saatı cok kasıyordu hatta donuyordu. bunun için USART kesmesını kullandım faka buseferde gelen verileri ekranda göremıyorum malesef sorunum bu hocam.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Mart 2012, 15:39:24
Simulasyon dahil dosyaları ekle yada yolla bakayım.
Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Mart 2012, 15:54:07
hocam linktecalısmalarım mevcut. kısaca bahsedıyım.

bilgisayardan alınan saat blgisi rf üzerinden saat kısmına gitmektedir.
saat devresindeki buzzer yerine rf alıcı modül takılı.


Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 06 Mart 2012, 15:57:06
Verdiğin link zararlı bir site. Truva atı yükleniyor sürekli. Bu nedenle oradan yükleme yapamam.
Ya bir başka yere yükle yada etepic.com'a üye isen oraya gir konu aç ve ekinde dosyayı siteye yükle.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 06 Mart 2012, 16:36:26
etepic.com a taşıdım konuyu hocam
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Mart 2012, 15:11:40
merhaba hocam,

pic basivte değişkenleri tanımlarken yanına yazdıgınız sayılar ne içindir hocam?

DATA VAR BYTE 59      gibi
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 12 Mart 2012, 15:29:07
Değişken tanımlamasınıon yanına yazdığın rakam onun yerleştirileceği adresi belirler.
56 dedinmi o değişken pic in hafızasındaki 56 nolu adrese yerleşir.
Bu şekilde değişkenlere istediğin adresi verebilirsen onları İsis simulasyonunda izleme imkanına kavuşursun.
Bunun için İsisde pause tuşu ile simualsyonu başlatır ve yuklarıda bulunan debug menüsünden "watch window " u seçersin.
- Ekrana küçük bir pencere açılır. Üzrinde sağ tıklarsın.
- Açılan pencerede  "Add Items by Address" seçeneğini seçersin
- Yine bir pencere açılır. Orada yer alan "Name" kısmına değişken adını yazarsın, "Address" kısmına da verdiğin rakamı yazarsın
   Sonra alt kısma atlarsın ve değişken tipini soldan (Data Type) seçersin.  Değişken formatınıda sağdan (Display Format) seçersin.
   Hangi formatı seçersen değişken değerini o formatta izlersin.
Bu tanımlamayı yaptıktan sonra programı normal başlatabilirsin artık. Kaydınıda almayı unutma.
Böylece program çalışırken o değişken veya değişkenlerin program içinde aldığı değerleri izleyebilirsin.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: emrah - 12 Mart 2012, 16:04:36
teşekkürler hocam
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: gareven - 22 Mayıs 2012, 15:25:33
arkadaşlar benim sorum çok basit

elimde lcd li bir devir sayıcı var ben burada girişime her input geldiğinde değil de 7 kez input geldiğinde sayıcının bir artmasını istiyorum
bunun için yardım edebilir misiniz? basicten pek anlamıyorum ben.
bu arada input girişim porta.0


define lcd_dreg portb
define lcd_dbit 4
define lcd_bits 4
define lcd_rsreg portb
define lcd_rsbit 2
define lcd_ereg portb
define lcd_ebit 3
define lcd_lines 2
define lcd_commandus 2000
define lcd_dataus 40
a var word
son_deger var word
deger var word
hiz var word
hiz_dev var word
devir_sayisi var word
input porta.0
input porta.1

                   

'***********************ANA PROGRM*******************************
PAUSE 100
son_deger = 0
main:

count porta.0,1000,deger

son_deger = son_deger + deger
devir_sayisi = son_deger
hiz = deger * 60
                           
if porta.1=0 then son_deger=0
lcdout $fe,1
lcdout $fe,2
lcdout, "hiz:",dec hiz
lcdout $fe,136," dev/dk"
lcdout $fe,$c0,"dev say:",dec devir_sayisi


GoTo main
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: subram - 22 Mayıs 2012, 17:51:22
sorunun pratik çözümü PORTB.0/INT girişinde. portb.0 ı giriş olarak tanımla. kesmeyi kur. her kesme oluştuğunda alt programda kesmeleri say. kesme sayısı 7 olunca  sayıcıyı arttır.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: gareven - 22 Mayıs 2012, 20:41:26
peki bunu basicte nasıl yapıyoruz?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: subram - 22 Mayıs 2012, 20:51:21
Bu yardımı olur umarım

.....
INTCON=           %10010000
OPTION_REG=   %01000000
ON INTERRUPT GoTo Kesme

BASLA:
..
..
..
GOTO BASLA

DISABLE
KESME:
..
..
..
INTCON.1=0
ENABLE
RESUME
END

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: gareven - 22 Mayıs 2012, 22:22:14
tamam çok sağolun.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: grkn - 15 Temmuz 2013, 10:38:32
Merhabalar,yakın zamand ETE hocamızın anlatımıyla pıc basıc pro öğrenmeye başladım fakat forumda gezerken pıc basıc pro ile ilgili bazı picleri desteklemediğini belirtenler olmuş bu konuda bir fikrim olması açısından bu programlama dilini destekleyen yada desteklemeyen pic türlerini nasıl öğrenebilirim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Tagli - 15 Temmuz 2013, 13:54:02
Kendi sitesinde desteklenen cihaz listesi var:
http://pbp3.com/devicelist.html (http://pbp3.com/devicelist.html)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: grkn - 15 Temmuz 2013, 14:31:46
Cevap için çok sağol Tagli Hocam
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: cetinerdal - 28 Mart 2014, 03:48:36
Herkese iyi geceler.

Benim sorum şu acaba 16f877 de iki adet analog griş kullanılabilir mi eğer kullanabilirsek bunu pic basic de nasıl yazıyoruz ve kullanıyoruz... kolay gelsin
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Enfalx - 12 Temmuz 2014, 15:14:12
Pull up nasıl yapabilirim?Düğmeye basınca led yansın tekrar basınca sönsün istiyorum.Baktım ama anlamadım.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: 0nur - 09 Ekim 2014, 10:09:44
Alıntı yapılan: Enfalx - 12 Temmuz 2014, 15:14:12
Pull up nasıl yapabilirim?Düğmeye basınca led yansın tekrar basınca sönsün istiyorum.Baktım ama anlamadım.

Pull-up adındanda anlaşılacağı üzere yukarı çekili demektir. Yani normalde devreniz 5 volta bağlı butona basılınca 0 volt gidecek. Bu durumda sizin picinizin girişine sürekli 5 volt geleceğinden lojik 1 durumunu değil lojik 0 durumunu değerlendirmeniz gerekecek.

(http://s29.postimg.cc/nzh45pkhf/image.jpg) (http://postimg.cc/image/nzh45pkhf/)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: HASSAN ULKEM - 12 Aralık 2014, 21:40:52
MERHABA  ARKADAŞLAR 
ben seri iletişimde bir iki butunla iş yaptıktan sonra ör: but bas lede yansın diybut bas diyer led yansn
yapyrum oluyr ama kesme girdikten sonra butonlar işlevsiz oluyr ben hem kesme kulanmak istyrm hemde istediğim zaman butonlarla diyer işlemler yapmak istyorum yani hem kesme hem butonlar aktif oluyrmu yada nasıl olyr...
cvp vrsnz svnrm tşkrlr selam ve saygılar
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ayhani - 01 Nisan 2015, 00:46:32
Basit bir seri veri basmam gerek, pic basicte aşağıdaki kodu yazdım. Pek pic basic bilmiyorum. Fakat veri 9600 baud olması gerekirken 9621 baud çıkıyor(salee logic analyzer ile ölçüm yaptım, flowcode ile 9600 baudu yapabiliyorum). Bu normal mi?
Devrede kristal 4mhz harici, master clear 4.7k bağlı.
config _HS_OSC ve config _XT_OSC ile denedim sonuç aynı.

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 3/31/2015                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
#CONFIG
    ifdef PM_USED
        device  pic16F628A, hs_osc, wdt_off, mclr_on, lvp_off, protect_off
    else
        __config _HS_OSC & _WDT_OFF & _MCLRE_ON & _LVP_OFF & _CP_OFF
    endif
#ENDCONFIG
CMCON=7           '16F628 de komparatör pinleri iptal hepsi giriş çıkış
OPTION_REG.7=0    'Dahili pull-up lar AKTİF yapıldı
PortA=0
TrisA=%00000000
PortB=0
TrisB=%00000111

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 0.16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

basla:
pause 500
PortB.3=1
pause 200
hserout ["5","4","3","2","1","6","0"]
pause 2000
hserout ["5","4","3","2","1","6","1"]
pause 2000
PortB.3=0
goto basla
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: mustafa_cmbz - 01 Nisan 2015, 05:05:55
HS_OSC

ilk baştaki config kısmında osilatör için seçim yapmışsın ama program satırlarının başında kaç mhz kristal kullanacağını belitmemişsin.Sanırım bundan dolayı sorun yaşıyorsun.

HS_OSC

Dediğin zaman yanlış hatırlamıyorsam 4mhz üzeri kristal kullandığında yazman gerekiyor.Ve zaten 9600 için 20mhz felan kullanman daha sağlıklı olacaktır.basic'in help kısmında donanımsal seri iletişim kodlarının olduğu kısma bak orada kaç mhz kristal kullanırsan max ve min. hızları yazıyor.

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ayhani - 01 Nisan 2015, 09:01:00
Alıntı yapılan: mustafa_cmbz - 01 Nisan 2015, 05:05:55
HS_OSC

ilk baştaki config kısmında osilatör için seçim yapmışsın ama program satırlarının başında kaç mhz kristal kullanacağını belitmemişsin.Sanırım bundan dolayı sorun yaşıyorsun.

HS_OSC

Dediğin zaman yanlış hatırlamıyorsam 4mhz üzeri kristal kullandığında yazman gerekiyor.Ve zaten 9600 için 20mhz felan kullanman daha sağlıklı olacaktır.basic'in help kısmında donanımsal seri iletişim kodlarının olduğu kısma bak orada kaç mhz kristal kullanırsan max ve min. hızları yazıyor.



Aslında XT_OSC ilede denedim. Fakat kristali 20 mhz yapmak aklıma gelmemişti(Flowcode'da 4mhz yetiyordu), bunu deneyeceğim. Teşekkürler.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sifirzero - 28 Haziran 2015, 19:03:08
arkadaşlar melabs sitesinden indirdiğim pic basic programını kurdum kullandım 15 gün sonra trail versiyon olduğu için kullanamıyorum.full versiyon nasıl yapıyoruz.crack var olan rakadaşlar verebilirmi.rica etsem
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: sifirzero - 29 Haziran 2015, 07:40:20
olur kardeşim isterim trial değil dimi istersen mail atabilirisn.  serkan_cetinn@hotmail.com
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: OG - 29 Haziran 2015, 08:30:26
Alıntı yapılan: ayhani - 01 Nisan 2015, 00:46:32
Basit bir seri veri basmam gerek, pic basicte aşağıdaki kodu yazdım. Pek pic basic bilmiyorum. Fakat veri 9600 baud olması gerekirken 9621 baud çıkıyor(salee logic analyzer ile ölçüm yaptım, flowcode ile 9600 baudu yapabiliyorum). Bu normal mi?
Devrede kristal 4mhz harici, master clear 4.7k bağlı.
config _HS_OSC ve config _XT_OSC ile denedim sonuç aynı.

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 3/31/2015                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
#CONFIG
    ifdef PM_USED
        device  pic16F628A, hs_osc, wdt_off, mclr_on, lvp_off, protect_off
    else
        __config _HS_OSC & _WDT_OFF & _MCLRE_ON & _LVP_OFF & _CP_OFF
    endif
#ENDCONFIG
CMCON=7           '16F628 de komparatör pinleri iptal hepsi giriş çıkış
OPTION_REG.7=0    'Dahili pull-up lar AKTİF yapıldı
PortA=0
TrisA=%00000000
PortB=0
TrisB=%00000111

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 9600 Baud @ 0.16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

basla:
pause 500
PortB.3=1
pause 200
hserout ["5","4","3","2","1","6","0"]
pause 2000
hserout ["5","4","3","2","1","6","1"]
pause 2000
PortB.3=0
goto basla


4MHz @ 9600b çalışmada uretilen datanın hata oranı osilator sıfır hatalı çalışıyorsa 0,16%  yani o da 9600b için 15,36 baud eder
9600+15,36 = 9615,36 baud dur.
Biraz osc hatası varsa biraz da ölçüm hatası 9621 baud gibi degere ulaşmışsınızdır. Bu da 0,21875% hata demektir. Yani sonuç normal.
Seri asenkronun hatasız işlenebilmesi için hiç dikkate alınmayacak bir değer.

(http://s3.postimg.cc/qpo7ppdn7/Ekran_Al_nt_s.png) (http://postimg.cc/)
resim yüke (http://postimg.cc/index.php?lang=turkish)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: insect-yol - 21 Ocak 2016, 11:26:43
Mrb arkadaşlar aranızda 2x16 EA DOGM 162-A ekran kullanan varmı kullanımı kodları ve uygulama örneği olan varsa paylaşabilirmi teşekkürler
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 22 Şubat 2016, 23:25:42
Merhaba arkadaşlar ben 16f628i 3.3v ile çalıştırmak istiyorum ama başarılı olamadım, bunu daha önce yapan varsa yardımcı olabilirmi, yaptığım araştırmalarda  brown out detection ı kapat diyolar ama onuda denememe ramen olmadı.

deneme yaptığım program

TRISA=1
TRISB=0
'@DEVICEpic16F628
'@DEVICEpic16F628_WDT_ON
'@DEVICEpic16F628_BOD_OFF
'@DEVICEpic16F628_LVP_OFF
'@DEVICEpic16F628_PWRT_ON
'@DEVICEpic16F628_PROTECT_OFF
'@DEVICEpic16F628_MCLR_OFF
'@DEVICEpic16F628_INTRC_OSC_xt
CMCON=7
PORTB=0
PORTA=0

MAIN:
IF PORTA.1=1 THEN
GOTO BASLA
ENDIF
GOTO MAIN

BASLA:
PAUSE 300
PORTB.0=1
PAUSE 100
PORTB.0=0
PAUSE 1000

GOTO MAIN
END

Şimdiden teşekkürler
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: dursuncemal - 22 Şubat 2016, 23:56:58
yanilmiyor isem burada bir buton kontrolu yapiyorsun . IF PORTA.1=1 bu sorgunun cevabini dogru alabilmen icin port anin trisa.1 ini giris secmen lazim.  mainin ustune TRISA.1 = 1;

ayrrica a portunun 1. pininne - den 4.7 k gibi bir direnc atmalisin. var ise semanı yayinlarsan daha iyi yardimci olalim.

not:eger herhangi bir portun herhangi bir pininden veri okuyacaksan o pini giris olarak ayarlamalisin. cikis alacaksan cikis olarak ayarlamalisin.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 23 Şubat 2016, 06:48:59
Programın başında TrisA=1 diyerek PortA.0 pinini giriş yapmış oluyorsun ama sen PortA.1 pinini kullanıyorsun.
Baş tarafa ya TrisA=2 veya TrisA.1=1 veya INPUT PORTA.1 şeklinde komut eklemen gerekiyor.
Yada bu hali ile main kısmındaki kodu ,
If portA.1=1 yerine,
If portA.0=1 then şeklinde değiştirmen gerekiyor.

Başarısızlığının sebebi 3,3v değil kodun yanlış olması.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 23 Şubat 2016, 10:01:59
Arakadaşlar program entegreye yüklendiğinde 5 v verince istediğim gibi çalışıyor 3.3v a düşürünce çalışmıyor, programda sıkıntı yok.Daha önce 3.3v ile program yazıp çalıştıran yokmudur, ekstradan programa bişeylermi dahil etmemiz gerekiyor ?

Porta=1 dersek bütün a portları giriş oluyor diye biliyorum, bugünekadarki bütün denemelerimde hep böyle olmuştu, yanılıyormuyum acab ? çünki program 5v da sıkıntısız çalışıyor.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 23 Şubat 2016, 23:17:17
Tekrardan merhaba herkese
sorunu kısmen çözdüm, daha öncede bahsettiğim gibi Borrow out off yapıldığında 3.3v da çalışıyor on iken çalışmıyor, kısmı sorunum şudur:

Picbasic de borrow nasıl off ediliyor bilmiyorum ama ASM de   __CONFIG _...&_BODEN_OFF&_....  yazınca  3.3v da çalışıyor boden on iken çalışmıyor, bunu bizzat deneyerek test ettim,

Pic basic de ise BOD_OFF, BODEN_OFF, BODE_OFF,BOR_OFF hatta hepsinin ON varyasyonlarını gibi varyasyonlar denedim ama hiçbirinde sonuç alamadım, bir fikri olan varmıdır.

(Bu arada boden ın anlamı daha doğrusu brown out voltaj düşüklüğü ve eğer 4v yada 3.7 gibi değerler altına düşerse pic gerilimi otomatik resetleme yapıyor tabi BOD (brown out detect) kapalı değil ise )
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 24 Şubat 2016, 08:09:06
@reccom
öncelikle 16F628A 3.3 volt ile çalışmak istiyorsan 16LF628A versiyonunu satın almalısın
doğrusu bu, çünkü minicik bir parazit yada beslemede en ufak bir dalgalanmada işlemci reset atar.

L versiyonu 10mhz ve altında 3 volta kadar çalışır diye yazıyor datasheette ama
bu 3.3 volta çok yakın ve ara sıra sıkıntı çıkarabilir dediğim gibi.

LF versiyonu ise 4mhz ve altında 2 volta kadar çalışabilir demişler.

her iki vesiyonda 10mhz üzerinde 3.3 volt ile asla çalışmaz!!
sizin osc hızınız nedir bilmiyorum.

gelelim Brown-out reset devresini kontrol eden BOREN (BOR) registerına
yeni nesil işlemcilerde BOR reset voltajını seçebiliyorsun ama 16F628A da belli aralık içerisindeymiş bu
yazdığına göre normalde besleme 4 volt ve altına düşerse reset atar
ama bu değer 3.65 v ile 4.4 volt aralığında.. yani 4.2 volt altına düşersende reset olabilir yada 3.7 volt ve altında da.

görüldüğü üzere bor yazmacının düşük voltaj kullanımında mutlaka kapatılması lazım
bu config ayarlarında proton+ da BOREN_ON yada BOREN_OFF olarak geçiyor 16F628A için
picbasic aynı olabilir ama kesin emin değilim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 24 Şubat 2016, 11:59:04
Maxim cevap için teşekkürler öncelikle
Kullandığım kristal 4mhz , ve basit butonla led yakma ve söndürme işlemlerini asm ile 3.3v da gerçekleştirdim ama picbasic de aynı işlemleri yapamıyorum. LF serisi ile ilgili araştırma yapmıştım ama 3.3v da F serisini asm kodları ile çalıştırınca LF alma ihtiyacı duymadım, bakalım basic ilede çalıştırabilecekmiyim.

Basic de sadece borrow out u kapatmak yeteli oluyormu ve nasıl kapanıyor hala arayış içindeyim
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 24 Şubat 2016, 14:18:40
şöyle olmalı


@ DEVICE pic16F628A               
@ DEVICE pic16F628A, BOD_OFF                               
@ DEVICE pic16F628A, WDT_OFF              'Watch Dog timer kapalı
@ DEVICE pic16F628A, PWRT_ON              'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF          'Kod Koruma kapalı
@ DEVICE pic16F628A, MCLR_off            'MCLR pini kullanılmıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
CMCON=7
Define OSC 4

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 24 Şubat 2016, 14:27:59
microcode studio da yazdığımdan sizin yazdıklarınızı kabul etmedi program ,bende şu şekilde düzelttim ama sonuç hala b0 portundan çıkış alamıyorum

TRISA=%11111111
TRISB=%00000000

@ DEVICEpic16F628A               
@ DEVICEpic16F628A_BOD_OFF                               
@ DEVICEpic16F628A_WDT_OFF             
@ DEVICEpic16F628A_PWRT_ON                
@ DEVICEpic16F628A_PROTECT_OFF         
@ DEVICEpic16F628A_MCLR_OFF              
@ DEVICEpic16F628A_INTRC_OSC_NOCLKOUT   
CMCON=7
Define OSC 4
PORTB=0
PORTA=0

MAIN:
IF PORTA.1=1 THEN
GOTO BASLA
ENDIF
GOTO MAIN

BASLA:
PAUSE 100
PORTB.0=1
GOTO BASLA
END
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 24 Şubat 2016, 15:09:44
şunu hex olarak işlemcine yüklermisin
çalışmaz ise başka sorun vardır, belki işlemci bozuktur vs vs


:100000000000000000002A28A301A200FF30A20780
:10001000031CA307031C26280330A100DF30122095
:100020000628A101E83EA000A109FC30031C1B2802
:10003000A00703181828A0070000A10F18282018EF
:100040002128A01C252800002528080083138312DE
:10005000031308008301FF30831685008312850196
:10006000831686018312860107309F009F00851C3E
:100070003A283B2837286430042006143B283F28C0
:02400E00103F61
:00000001FF
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 24 Şubat 2016, 16:51:22
evet bu program çalışıyor, bu bana gönderdiğiniz config ayarları ilemi yazıldı ? buraya yazılımıda mesaj atabilirmisiniz
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 24 Şubat 2016, 17:22:31
tabi, o hex bu (proton da yazıldı)


Device = 16F628A
Config FOSC_INTOSCIO, WDTE_OFF, PWRTE_ON, MCLRE_OFF, BOREN_OFF, LVP_OFF, CPD_OFF, CP_OFF
Declare Xtal=4

TRISA=%11111111:PORTA=0
TRISB=%00000000:PORTB=0
All_Digital = TRUE
CMCON=7

MAIN:
If PORTA.1=1 Then
GoTo BASLA
EndIf
GoTo MAIN

BASLA:
DelayMS 100
PORTB.0=1
GoTo BASLA
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 24 Şubat 2016, 18:07:48
Maxim uraşların için teşekkürler ama hala bi sonuca varamadım ben zten asm ile bu işi yapmıştım basic ile neden olmuyor onu anlamaya çalışıyorum
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Maxim - 25 Şubat 2016, 08:29:29
benim kodlar çalıştığına göre demekki picbasic tarafında bir yanlışlık var
ete abiye sorarsan 1 dakikada sorunu çözer :)
http://www.etepic.com/ (http://www.etepic.com/)
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 25 Şubat 2016, 19:02:04
ete abi dediğin bir iki mesaj önce yazan ete isimli kullanıcımı ? Eğer oysa mesajından anladığım kadarı ile pek çözememiş gibi
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: F.T - 25 Şubat 2016, 20:20:53
reccom madem  ete hocanın çözemediğini anlayacak kadar zeki olduğuna eminsin  bu soruyu neden sordunki  ?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: reccom - 26 Şubat 2016, 12:06:12
Sorunu çözemediğimden dolayı burda çözüm bulmak için yazıyorum, ete isimli kullanıcının ve diğer bir üyenin önerilerinin yazdığım programda çözüm olmadıklarını belirtmiştim ve ikisindende birdaha öneri gelmeyince onlarında bir çözüm bulamadıklarını düşündüm(bulamadılar demedim )  ama tabi düşük bir ihtimalde olsa mesajları görmemişlerde olabilir. Eğer senin bir çözümün vardıysa, yazdıklarına ekleseydin çok memnun olurdum , bundan sonraki mesajlarına eklersende memnun olurum, niyetim burda kimseyi kırmak yada kötülemek değildir, sorunuma çözüm aramaktır. Senden ricam varsa bir önerin söylemen, birde zeka gibi bir olguyu basit cümleler içinde kullanmaman zira sana bişey kazandırmaz.

Soruna çözüm bulmaya çalışan kullanıcılara tekrardan teşekkür ederim.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: DİRİLİŞ_MAK - 30 Ekim 2016, 15:05:15
4511 ile display kontrolüne bakıyorum aklıma takılan bir nokta var arkadaşlar. Örnek programın kafama takılan kısmı üzerinden gideyim.  İki display ve iki 4511 var B portunun ilk dört biti 4511'lere bağlanmış sonraki iki biti ise LE uçlarına bağlanmış, kod kısmı ise şöyle
...
birler=sayi DIG 0
onlar=sayi DIG 1

PORTB=sayi1 | %11110000
LOW PORTB.5
PAUSE 1
HIGH PORTB.5
PAUSE 1
....
şeklinde devam ediyor. Burada bit or'lama işleminde neden 4,5,6,7. bitlerin tamamını 1 yapıyoruz? Benim kullandığım LE bitleri sadece 4 ve 5. bitler. Displayde mutlaka bağladığımız portun son dördü high mı olmalı her zaman? Bu kısmı detaylıca anlatabilir misiniz?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 30 Ekim 2016, 21:59:09
O örnek programın orjinali 4 digit lik idi. senin kullandığn ise 2 digitlik. Bu nedenle yalnızca 4 ve 5 nolu bitleri HIGH da tutabilirsin.

Aynı işi ;
PORTB=(PORTB % %00110000)+BIRLER şeklinde de yaptırabilirsin. Burada temel amaç Bit7-Bit4 aralığını aynen kopyalamak buna Bit0-Bit3 aralığını eklemek hepsi bu. Sen kullanırken yine PORTB=(PORTB & %00110000)+BIRLER şeklinde de kullanabilirsin.

Ete

Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: DİRİLİŞ_MAK - 01 Kasım 2016, 22:49:30
Alıntı yapılan: ete - 30 Ekim 2016, 21:59:09
O örnek programın orjinali 4 digit lik idi. senin kullandığn ise 2 digitlik. Bu nedenle yalnızca 4 ve 5 nolu bitleri HIGH da tutabilirsin.

Aynı işi ;
PORTB=(PORTB % %00110000)+BIRLER şeklinde de yaptırabilirsin. Burada temel amaç Bit7-Bit4 aralığını aynen kopyalamak buna Bit0-Bit3 aralığını eklemek hepsi bu. Sen kullanırken yine PORTB=(PORTB & %00110000)+BIRLER şeklinde de kullanabilirsin.

Ete



Anladım hocam, teşekkürler ederim. O zaman diyelim ki 8 tane tekli Display kullanacağız. B portunun ilk dört biti 4511 ile displaylere diğer dört bit LE ucuna ve açıktan kalan diğer dört display içinde A, C gibi bir herhangi bir porttan LE tetiklemesi alıyor. Böyle bir işlem gerçekleştirilebilir mi? Farklılık varsa yazmamız gereken kod ne olur?
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ete - 02 Kasım 2016, 07:17:12
8 adet tekli display söylediğin şekilde sürülür. 4 tane LE ucu B portundan diğer 4 taneside diğer çıkış olabilecek pinlerden sürülebilir.
Yazılacak kod çok farklı olmayacak. Her bir digit e ait LE ucuna yeri geldiğinde pals uygulanacak. Genel uygulama şöyle oluyor. 4511 lerin ABCD girişlerini birleştiriyoruz. Hangi digite bilgi yazılacak ise Bilgi ABCD girişlerine veriliyor ve ardından hangi digite gidecek ise ona ait LE ucuna puls uyguluuyoruz. Böylece yollanan bilgiden diğer digitler etkilenmemiş oluyorlar.
Bana kalırsa 74HC595 shift registeride incele. Bezer işleri onunlada yapabilirsin.

Ete
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: Mr.Thinking - 12 Eylül 2019, 08:36:59
if gelenbilgi=gidenbilgi then
gosub falan
else
gosub hata
endif

Anladiginiz uzere yukaridaki sorgulamada programa, bilgiler esit se falana degilse hata etiketine git gidiyor.

Bunu matematikte kullandigimiz esitdegilse isareti gibi bir isaret kullanarak
sadece
If gelenbilgi=/gidenbilgi then
gosub hata seklinde yapabilecegimiz bir yol varmi. Cunku ben falan etiketine gitmesini degil sadece hata ekranina gitmesini istiyorum.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: ilyas KAYA - 12 Eylül 2019, 09:33:17
Alıntı yapılan: elektro77 - 12 Eylül 2019, 08:36:59if gelenbilgi=gidenbilgi then
gosub falan
else
gosub hata
endif

Anladiginiz uzere yukaridaki sorgulamada programa, bilgiler esit se falana degilse hata etiketine git gidiyor.

Bunu matematikte kullandigimiz esitdegilse isareti gibi bir isaret kullanarak
sadece
If gelenbilgi=/gidenbilgi then
gosub hata seklinde yapabilecegimiz bir yol varmi. Cunku ben falan etiketine gitmesini degil sadece hata ekranina gitmesini istiyorum.

If gelenbilgi<>gidenbilgi then
Yaparsanız eşit değilse olur.
Başlık: Ynt: PIC BASIC PRO Öğreniyoruz soru cevapları
Gönderen: MC_Skywalker - 12 Eylül 2019, 12:25:00
"!=" Deneyiniz.