BU PIC ASM KODU NEDEN ÇALIŞMIYOR... YARDIMMMM

Başlatan aydertunca, 12 Aralık 2007, 17:37:34

aydertunca

SLM ARKADAŞLAR . PROJE ŞU ŞEKİLDE ÇALIŞACAK ..
PIC 16F84 ÜN RA0 PİNİNE BVAĞLI BUTONA BASINCA RB0 DAN RB7 YE KADAR BAĞLI OLAN LEDLER SAĞA SOLA KAYACAK...YANİ KARAŞİMŞEK...

EĞER RB0 PİNİNE BAĞLI BUTONA BASILIRSA KESME MEYDANA GELEREK

KESME ALT PROGRAMINA DALLANACAK VE TEM LEDLER AYNI ANDA HEPSİ 1 DEFA YANACAK SONRA HEPSİ SÖNECEK.SONRADA KALDI YERE DÖNEREK LEDLER SAĞA SOLA KAYMAYA DEVAM EDECEK .ANCAK KESME BİTTİKTEN SONRA KARAŞİMŞEK KALDIĞI YERDEN DEVAM EDECEK...

BEN ŞU KODLARI YAZDIM AMA RA0 A BAGLI BUTONA BASINCA İLK İKİ LED SIRAYLA YANIYOR VE  ORDA KALIYOR.OLAYI ÇÖZEMEDİM....
YARDIMLARINIZI BEKLİYORUM......
BENİM KODLARIM ŞU ŞEKİLDE .....

LIST P=16F84
INCLUDE "P16F84.INC"
SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
W_SAKLA EQU H'0E'
S_SAKLA EQU H'0F'
ORG H'00'
GOTO BASLA
ORG H'04'
GOTO KESME
BASLA
   BSF STATUS , 5
   MOVLW B'00000001'
   MOVWF TRISB
   MOVLW H'FF'
   MOVWF TRISA
   MOVLW B'10111111'
   MOVWF OPTION_REG
   BCF STATUS , 5
   CLRF PORTB
   BSF   INTCON , 7
   BCF INTCON , 1
   BSF INTCON , 4
BUTON
   BTFSC PORTA , 0
   GOTO BUTON
   MOVLW B'00000010'
   MOVWF PORTB
SOL
   CALL GECIKME
   RLF PORTB , 1
   BTFSS PORTB , 7
   GOTO SOL
SAG
   CALL GECIKME
   RRF PORTB , 1
   BTFSS PORTB , 1
   GOTO SAG
   GOTO SOL
GECIKME
   MOVLW H'FF'
   MOVWF SAYAC1
DONGU1
   MOVLW H'FF'
   MOVWF SAYAC2
DONGU2
   DECFSZ SAYAC2 , 1
   GOTO DONGU2
   DECFSZ SAYAC1 , 1
   GOTO DONGU1
   RETURN
KESME
   MOVWF W_SAKLA
   MOVF STATUS , 0
   MOVWF S_SAKLA
   BCF INTCON , 4   
   CALL GECIKME
   MOVLW H'FF'
   MOVWF PORTB
   CALL GECIKME
   CLRF PORTB
   BSF INTCON , 4
   BCF INTCON , 1
   MOVF S_SAKLA , 0
   MOVWF STATUS
   MOVF W_SAKLA , 0
   RETFIE
   END

Gurkan-Demirbas

Merhabalar;
Kardeş sen Pic de yenisin galiba :) öncelikle şunu belirteyim ki asm tamamen hammallık, en kısa zamanda ileri bir compiler'a geç derim sana. Ben PicBasicPro kullanıyorum ve çok memnunum; Asm tarihe karıştı artık.

Gelelim programına;

1)
BUTON
BTFSC PORTA , 0
GOTO BUTON
RA.0 pini lojik0 ise skip --> program ilk çalıştırıldığında zaten döngüyü direk geçer çünkü RA.0 pini lojik0. BTFSS kullanmalısın ki program pinin lojik0 değerini gördüğünde döngüde kalsın

2) Interrupt kullanımında bir kaide var; Interrupt service rutin'inde ilk komut (Önemliiii !..) tüm interruptların disable edilmesi(INTCON.7), böylece üst üste binebilecek interruptları engellemiş olursun ve service routin'inin son komutu tekrar genel interruptları enable etmek olmalı.

3) RB0'ın alçalan kenarında interrupt olsun istemişsin (OPTION_REG.6) tabi bu tercih meselesi ama ben hep yükselen kenarında alıyorum; Yani lojik0 dan lojik1'e çıkar çıkmaz kesme yaratılıyor. Düşen kenarı tercih edersen, koyduğun tuşa bastığın anda değil bastıktan sonra çektiğin anda kesme yaratılmış olur; senin programını değiştirmedim

4) En Önemlisini sona sakladım :) Şimdi sen ana programda direk olarak PORTB deki bilgileri sağa veya sola öteliyorsun, sonra kesme olduğunda kesme programına dallanıyor ve portB ye sırasıyla önce FFhex ve 00hex gönderiliyor. Kesme programının sonunda PortB ye 00 hex verisi gönderilmesi önemli, neden? çünkü kesme programından çıkıldığında PortB de 00hex var.
Kesme programında PortB ye enson ne atıldı? 00hex, e öyleyse ana programa döndüğünde PortB'de ne var? 00hex; e o halde 00hex verisini sağa yada sola ötelersek nooolur? 00hex değişmeeeez. Sonuç olarak PortB verisini bu gibi durumlarda bir saklayıcıda saklaman lazım, çünkü kesme programında PortB değişiyor!.....

Ben mümkün olduğunca senin programına sadık kalarak bir program yazdım; sağolasın varolasın sayende ASM ile uğraşmak zorunda kaldım (hiç sevmeme rağmen)   :=)
Bu programı simülasyonda çalıştırdım, gayet iyi çalışıyor. Simülatör programım Pic Simulator IDE V6.65 şiddetle tavsiye ediyorum arkadaşlar !...
İlk çalıştırdığımda bir bug vardı PortB nin 7inci ve 2inci pini, sırası geldiğinde 2 sefer yanıp sönüyordu. Programına sağdık kalmaya çalıştığımdan, ufak bir trick ile SAG isimli programda  BTFSS PORTB , 2 şeklinde ve SOL isimli programda da BTFSS PORTB , 6 şeklinde değiştirerek bug'ı yok ettim.
Benden bukadar, umarım yardımı olur


LIST P=16F84
INCLUDE "P16F84.INC"


SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
LEDLER   EQU H'10'
W_SAKLA EQU H'0E'
S_SAKLA EQU H'0F'

ORG H'00'
GOTO BASLA

ORG H'04'
GOTO KESME

BASLA
   BSF STATUS , 5
   MOVLW B'00000001'
   MOVWF TRISB
   MOVLW H'FF'
   MOVWF TRISA
   MOVLW B'10111111'
   MOVWF OPTION_REG
   BCF STATUS , 5
   CLRF PORTB
   BSF INTCON , 7
   BCF INTCON , 1
   BSF INTCON , 4
   BSF INTCON , 0
BUTON
   BTFSS PORTA , 0
   GOTO BUTON
   MOVLW   H'02'
   MOVWF   LEDLER
SOL
   CALL GECIKME
   MOVFW   LEDLER
   MOVWF   PORTB
   RLF LEDLER , f
   BTFSS PORTB , 6
   GOTO SOL
SAG
   CALL GECIKME
   MOVFW   LEDLER
   MOVWF   PORTB
   RRF LEDLER , f
   BTFSS PORTB , 2
   GOTO SAG
   GOTO SOL

GECIKME
   MOVLW H'FF'
   MOVWF SAYAC1
   DONGU1
   MOVLW H'FF'
   MOVWF SAYAC2
DONGU2
   DECFSZ SAYAC2 , 1
   GOTO DONGU2
   DECFSZ SAYAC1 , 1
   GOTO DONGU1
RETURN

KESME
   BCF INTCON , 7
   MOVWF W_SAKLA
   MOVF STATUS , w
   MOVWF S_SAKLA
   CALL GECIKME
   MOVLW H'FE'
   MOVWF PORTB
   CALL GECIKME
   CLRF PORTB
   MOVF S_SAKLA , w
   MOVWF STATUS
   MOVF W_SAKLA , w
   BCF INTCON , 1
   BSF INTCON , 7
   RETFIE

END

volkii

asm tarihe karışırsa, bütün derleyiciler tarih olur dostum

XX_CİHAN_XX

Alıntı yapılan: "volkii"asm tarihe karışırsa, bütün derleyiciler tarih olur dostum
@volkii,
Sanırım @Gurkan-Demirbas bu sözü kendi adına söyledi. Bu yüzden böyle düşünmemek gerekir.
Gurkan hocam eline sağlık ancak yazında düzeltilmesi gereken iki nokta var.
1-
Alıntı yapılan: "Gurkan-Demirbas"
Interrupt kullanımında bir kaide var; Interrupt service rutin'inde ilk komut (Önemliiii !..) tüm interruptların disable edilmesi(INTCON.7), böylece üst üste binebilecek interruptları engellemiş olursun ve service routin'inin son komutu tekrar genel interruptları enable etmek olmalı.
Burada intcon,gie biti zaten kesme geldiğinde otomatik(donanımsal) olarak clear edilir.Kesmeden çıkarken kullanılan RETFIE komutu ilede yine otomatik olarak bu bit set edilir.Dolayısıyla bu işlemi kesmenin girişinde ve çıkışında komutlarla yapmana gerek yoktur.Ancak kesmeye girdiğinde veya çıkarken yapılması gereken başka birşey vardır.Buda ilgili kesmenın flaginin temizlenmesidir ki bunu zaten yapmışsın.Bu nedenle bu noktada bir hata yok ancak kesme giriş-çıkışlarında intcon,7 bitini set-reset yapmanada gerek yok bunu belirtmek istedim.
2-
Verdiğin kodda bir açık var.Simulasyon anında bu açığa denk gelmemişsin ancak pıratikte bu hata çok daha belirgin olacaktır.Gelelim açığa;
Ana döngüde kullandığın gecikme alt programı ile kesme rutininde kullandığın gecikme alt rutini ortak kullanılıyor.Yani aynı sayac registerleri her iki yerdede kullanılıyor.Eğer ana döngüde gecikme alt rutini döngüdeyken kesme gelirse haliyle aynı gecikme rutini buradada çalışacak ve sayaclarda olması gereken değerler bozulacak ana döngüye gidildiğinde çalışan gecikme rutininin süresinde bir sefere mahsus uzama olacak.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

XX_CİHAN_XX

Ek olarak gecikme alt programı yeteri kadar uzun değil.Ledlerdeki değişim çok hızlı olur bunu yavaşlatmak, döngü sayısını üçe çıkarmak gerekir.
Saygılar, sevgiler.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

DumrulBey

Alıntı yapılan: "Gurkan-Demirbas"...asm tamamen hammallık, en kısa zamanda ileri bir compiler'a geç derim sana. Ben PicBasicPro kullanıyorum ve çok memnunum; Asm tarihe karıştı artık...
Belki hamallık kısmına bir miktar katılabilirim ama tarihe karışması demek derleyicilerin de (aslında gerçek bir derleyici değiller) tarih olması anlamına gelir! Tamam, arkadaşımızı anlıyorum. Muhtemelen derleyicileri (compiler) büyük kolaylık olarak görmüş ve assembly üzerinde zorlu mücadeleler atlatmış olmalı.

Şimdi burada herkes kendi derleyicisini savunacaktır o yüzden defalarca yapılan bu boş tartışmanın başlatıcısı olmak istemem. Ama dikkat, assembly dili (asm. veya assembler değil) hakkında bir şeyler söylenince 10 kere düşünmek gerekir. Yeni kuşağın yanlış bilgilenmesini istemem. O yüzden müsaadenizle bir kaç teknik kelam edeyim:

CCS PIC C, MikroC, PIC Basic, Proton, uCode, MicroBasic, MikroPascal, SourceBoost ve daha sayamadığım bütün PIC derleyici benzerlerinin ürettiği kodlar assembly kodlarıdır. Eğer assembler (microchip derleyicisi) olmazsa bunların hiç bir değeri yoktur. Bırakan bu yazılımları, bazı özel mikrodenetleyiciler hariç hiç biri kodu kendi içinde derlemez. Derlenen kod artık makine dili olmuştur. Her heksadesimal kod, bir komut bir bilgi (-bkz. RISC mimari) anlamına gelmiştir.

Madem assembly bitmiştir, onun içinmidir ki forumumuzda açmış olduğumuz ankette en çok oyu (-bkz. Derleyici Anketi) almıştır! Lütfen, eğri oturup doğru konuşmak lazım. Başkalarını da yanıltmayalım ki gelecek nesiller geçmişine küfretmesin. Mesela şöyle diyebilirler: "Eskiden mal gibi kod yazmaya uğraşırlarmış! şimdi bak tek satırda bitirdim işi. aklım seveyim!!!"

Lütfen assembly neymiş, compiler neymiş bir internetten araştırı verin. Ayrıca assembly ile assembler farklı şeyler olduğunu önceden belirteyim. Genelde ikisi karıştırılarak nasıl öğrenilmişse öyle telafuz edilir. Oysa assmebly dildir, assembler ise bu dili derleyen anlamındadır. Yani o kullandığınız derleyiciye benzeyen yazılımlardan bahsetmiyorum.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

erkan06

Dumrulbey kardeşimize katılmakla beraber..


procedure formclick.form1(sender:Tobject:);
var
assembly:string;
basic:string;
pascal:string;
c:string;
c++:string;
begin
if edit1.text=assembly then showmessage('assembly ile yaz!')
else if edit1.text=basic then showmessage('Basic ile Yaz')
else if edit1.text=pascal then showmessage('Pascal ile Yaz')
else if edit1.text=c then showmessage('C ile Yaz')
else if edit1.text=c++ then showmessage('C++ ile Yaz')
else showmessage('Yaz da ne ile yazarsan yaz ama Assembly olmadan bu iş de olmaz')
end;
Ne mutlu Türküm diyene!

Gurkan-Demirbas

Merhaba Arkadaşlar;
Çok yoğun olduğum için mesajlarınızı henüz görebildim; çok degerli yorum ve bilgileriniz icin teşekkürlerimi sunuyorum.
Oncelikle, yanlis anlasildigim (veya yanlis anlattigim) konuyu duzeltmek isterim : bir önceki mesajim uzadigi icin, uzun uzun aciklayamadim, assembler herseyin anasidir, onu ogrenmeden ve ozumsemeden direk derleyicilere gecmek yanlistir; nitekim, mevcut derleyicileri kullanirken bile ASM yazmak zorunda kaliyorsunuz cogu zaman. Bir microislemcinin (veya Microcontroller'in) assembler'ini ogrenmeden ve icine girmeden, o islemciyi ogrendiniz sayilmazsiniz kesinlikle. Ancak belirli bir asamadan sonra derleyicilere gecmek gerek, ki ASM programlamaya harcayacaginiz zamani, daha verimli seylere ayirabilesiniz.
Calistigim fabrikada yeni bir elektronik mühendisi var ve PIC'e cok merakli, ona ogretmeye calisiyorum, 6 aydir PIC ASM ile program yazdiriyorum, kesinlikle bir derleyiciye gecmemesine musaade etmiyorum. Once ASM'sini ogrenmesi lazim
Tarihe karisti dememdeki maksat (dusuncesizce yazmisim), belirli bir asamadan sonra artik ASM ile zaman kaybedilmemeli, 5 yada 6 saatte yazilabilecek bir programi, uygun bir derleyici ile 10 dakikada yazarsiniz; Ama tekrar vurguluyorum, ASM'yi ogrenmek kesinlikle ve kesinlikle sart, ogrenmeden derleyiciye gecmek buyuk hata olur.
Universitede 6800 boardlari (evaluation board) vardi deney seti olarak; klavyeden tek tek makina kodu girerdik RAM'ine. Unutulmamali ki, ASM de Makina dilinin bir ustudur; bugun makina dili ile direk ugrasan kac kisi kalmistir?
Walla isin gercegi benim zamanim sınırlı, bu yüzden de zaman benim icin cok ama cok kıymetli; ASM ve/veya makina dili ile ugrasan varsa saygi duyarim, ama kusuruma bakmayin ben ugrasamam; evet ogrenilmesi gerekiyor, ama bir seviyeden sonra artık bırakmak lazım.
Benim "Tarihe karıştı" cumlesinde anlatmaya calistigim buydu asıl, Interruptlara gelmis birinin artik bir üst versiyona (yani derleyeciye) gecmesi gerekir bence; Zaman herşeyden kıymetlidir !....

Sayin CIHAN Hocam;
Duzeltmen icin sağol : Evet haklısın ISR (Interrupt Service Routin)'ine dallandığında otomatik olarak GIE 0 yapılıyor routin'den donulurken de GIE tekrar enable ediliyor., ben kulaktan dolma ogrenmisim, programlarımda da bir sorun yaratmadıgı için uzerine egilmemisim hic; senin mesajından sonra application notes'lara baktım ve haklısın;
Bu forum'un da iyi tarafı bu işte, eksik olan konuları çok rahat ogrenebiliyorsun, tekrar teşekkürler.
Delay routin'inin oldukca kısa olduğunu ben de farketmiştim aslında, ama mesajı yazarken atlamışım belirtmeyi;

Diğer Bir husus (uyarılarınız için tekrar tekrar teşekkür), bu forum'un insanları dogru bilinclendirmek ve insanlaro dogru yolu gostermek gibi bir misyonu var, ve bu gercekten harika birsey; bu yuzden bundan sonra yazacagim her kelimeye dikkat edecegimi belirtir, iyi calismalar dilerim herkese.

Gurkan-Demirbas

Merhaba Arkadaşlar;
Çok yoğun olduğum için mesajlarınızı henüz görebildim; çok degerli yorum ve bilgileriniz icin teşekkürlerimi sunuyorum.
Oncelikle, yanlis anlasildigim (veya yanlis anlattigim) konuyu duzeltmek isterim : bir önceki mesajim uzadigi icin, uzun uzun aciklayamadim, assembler herseyin anasidir, onu ogrenmeden ve ozumsemeden direk derleyicilere gecmek yanlistir; nitekim, mevcut derleyicileri kullanirken bile ASM yazmak zorunda kaliyorsunuz cogu zaman. Bir microislemcinin (veya Microcontroller'in) assembler'ini ogrenmeden ve icine girmeden, o islemciyi ogrendiniz sayilmazsiniz kesinlikle. Ancak belirli bir asamadan sonra derleyicilere gecmek gerek, ki ASM programlamaya harcayacaginiz zamani, daha verimli seylere ayirabilesiniz.
Calistigim fabrikada yeni bir elektronik mühendisi var ve PIC'e cok merakli, ona ogretmeye calisiyorum, 6 aydir PIC ASM ile program yazdiriyorum, kesinlikle bir derleyiciye gecmemesine musaade etmiyorum. Once ASM'sini ogrenmesi lazim
Tarihe karisti dememdeki maksat (dusuncesizce yazmisim), belirli bir asamadan sonra artik ASM ile zaman kaybedilmemeli, 5 yada 6 saatte yazilabilecek bir programi, uygun bir derleyici ile 10 dakikada yazarsiniz; Ama tekrar vurguluyorum, ASM'yi ogrenmek kesinlikle ve kesinlikle sart, ogrenmeden derleyiciye gecmek buyuk hata olur.
Universitede 6800 boardlari (evaluation board) vardi deney seti olarak; klavyeden tek tek makina kodu girerdik RAM'ine. Unutulmamali ki, ASM de Makina dilinin bir ustudur; bugun makina dili ile direk ugrasan kac kisi kalmistir?
Walla isin gercegi benim zamanim sınırlı, bu yüzden de zaman benim icin cok ama cok kıymetli; ASM ve/veya makina dili ile ugrasan varsa saygi duyarim, ama kusuruma bakmayin ben ugrasamam; evet ogrenilmesi gerekiyor, ama bir seviyeden sonra artık bırakmak lazım.
Benim "Tarihe karıştı" cumlesinde anlatmaya calistigim buydu asıl, Interruptlara gelmis birinin artik bir üst versiyona (yani derleyeciye) gecmesi gerekir bence; Zaman herşeyden kıymetlidir !....

Sayin CIHAN Hocam;
Duzeltmen icin sağol : Evet haklısın ISR (Interrupt Service Routin)'ine dallandığında otomatik olarak GIE 0 yapılıyor routin'den donulurken de GIE tekrar enable ediliyor., ben kulaktan dolma ogrenmisim, programlarımda da bir sorun yaratmadıgı için uzerine egilmemisim hic; senin mesajından sonra application notes'lara baktım ve haklısın;
Bu forum'un da iyi tarafı bu işte, eksik olan konuları çok rahat ogrenebiliyorsun, tekrar teşekkürler.
Delay routin'inin oldukca kısa olduğunu ben de farketmiştim aslında, ama mesajı yazarken atlamışım belirtmeyi;

Diğer Bir husus (uyarılarınız için tekrar tekrar teşekkür), bu forum'un insanları dogru bilinclendirmek ve insanlaro dogru yolu gostermek gibi bir misyonu var, ve bu gercekten harika birsey; bu yuzden bundan sonra yazacagim her kelimeye dikkat edecegimi belirtir, iyi calismalar dilerim herkese.

Gurkan-Demirbas

Merhaba Arkadaşlar;
Çok yoğun olduğum için mesajlarınızı henüz görebildim; çok degerli yorum ve bilgileriniz icin teşekkürlerimi sunuyorum.
Oncelikle, yanlis anlasildigim (veya yanlis anlattigim) konuyu duzeltmek isterim : bir önceki mesajim uzadigi icin, uzun uzun aciklayamadim, assembler herseyin anasidir, onu ogrenmeden ve ozumsemeden direk derleyicilere gecmek yanlistir; nitekim, mevcut derleyicileri kullanirken bile ASM yazmak zorunda kaliyorsunuz cogu zaman. Bir microislemcinin (veya Microcontroller'in) assembler'ini ogrenmeden ve icine girmeden, o islemciyi ogrendiniz sayilmazsiniz kesinlikle. Ancak belirli bir asamadan sonra derleyicilere gecmek gerek, ki ASM programlamaya harcayacaginiz zamani, daha verimli seylere ayirabilesiniz.
Calistigim fabrikada yeni bir elektronik mühendisi var ve PIC'e cok merakli, ona ogretmeye calisiyorum, 6 aydir PIC ASM ile program yazdiriyorum, kesinlikle bir derleyiciye gecmemesine musaade etmiyorum. Once ASM'sini ogrenmesi lazim
Tarihe karisti dememdeki maksat (dusuncesizce yazmisim), belirli bir asamadan sonra artik ASM ile zaman kaybedilmemeli, 5 yada 6 saatte yazilabilecek bir programi, uygun bir derleyici ile 10 dakikada yazarsiniz; Ama tekrar vurguluyorum, ASM'yi ogrenmek kesinlikle ve kesinlikle sart, ogrenmeden derleyiciye gecmek buyuk hata olur.
Universitede 6800 boardlari (evaluation board) vardi deney seti olarak; klavyeden tek tek makina kodu girerdik RAM'ine. Unutulmamali ki, ASM de Makina dilinin bir ustudur; bugun makina dili ile direk ugrasan kac kisi kalmistir?
Walla isin gercegi benim zamanim sınırlı, bu yüzden de zaman benim icin cok ama cok kıymetli; ASM ve/veya makina dili ile ugrasan varsa saygi duyarim, ama kusuruma bakmayin ben ugrasamam; evet ogrenilmesi gerekiyor, ama bir seviyeden sonra artık bırakmak lazım.
Benim "Tarihe karıştı" cumlesinde anlatmaya calistigim buydu asıl, Interruptlara gelmis birinin artik bir üst versiyona (yani derleyeciye) gecmesi gerekir bence; Zaman herşeyden kıymetlidir !....

Sayin CIHAN Hocam;
Duzeltmen icin sağol : Evet haklısın ISR (Interrupt Service Routin)'ine dallandığında otomatik olarak GIE 0 yapılıyor routin'den donulurken de GIE tekrar enable ediliyor., ben kulaktan dolma ogrenmisim, programlarımda da bir sorun yaratmadıgı için uzerine egilmemisim hic; senin mesajından sonra application notes'lara baktım ve haklısın;
Bu forum'un da iyi tarafı bu işte, eksik olan konuları çok rahat ogrenebiliyorsun, tekrar teşekkürler.
Delay routin'inin oldukca kısa olduğunu ben de farketmiştim aslında, ama mesajı yazarken atlamışım belirtmeyi;

Diğer Bir husus (uyarılarınız için tekrar tekrar teşekkür), bu forum'un insanları dogru bilinclendirmek ve insanlaro dogru yolu gostermek gibi bir misyonu var, ve bu gercekten harika birsey; bu yuzden bundan sonra yazacagim her kelimeye dikkat edecegimi belirtir, iyi calismalar dilerim herkese.