sonsuz döngü

ORGE

Üye
Katılım
12 Tem 2009
Mesajlar
385
Puanları
1
öncelikle herkesin Ramazan Bayramını kutlarım

Pic programlama olayına yeni başladım , dökümanlardan felan öğrendiklerimle bişeyler yapmaya çalışıyorum , benim sorum şu:

normal buton led devresi kurup çalıştırdım, ama butona basınca hemen yanmıyor led, 2 - 3 sn basılı tutunca yanıyor ve bırakınca 2 - 3 sn. yanık kalıp sönüyor. Programda gecikme ile ilgili bişey yok , gayet basit bir uygulama.
Program içerisindeki DONGU GOTO DONGU satırını silip yüklediğimde normal çalışıyor yani hiç bir problem kalmıyor! Anlayamadığım, bu sonsuz döngünün esprisi nedir, neden kullanıyoruz ve neden kasıyor ?

yardımlarınız için teşekkürler
tekrardan hayırlı bayramlar
 
kodu tam olarak yazarsanız öyle bakalım


buyrun üstadım, son derece basit bir program

LIST P = 16F84A
INCLUDE P16F84A.INC
__CONFIG _CP_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC

CLRF PORTB
BANKSEL TRISB
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BANKSEL PORTB

BASLA MOVF PORTA,W
MOVWF PORTB
GOTO BASLA

DONGU
GOTO DONGU

END
 
burada koda göre PORTA içeriği aynen PORTB'ye yazılıyor. yani PORTA daki değer ne ise PORTB de de o çıkış olarak veriliyor. PORTA'ya bir buton bağlayıp, butona basıldığında o ucu ( mesela 1.nci uç ) 5V seviyesine çektiğinizde PORTB'deki aynı uç ( mesela 1.nci uç ) lojik 1 seviyesine çekilir. Buton bırakıldığında o uç 0V seviyesine çekileceği için PORTB'deki led de lojik 0 seviyesine iner. Yani butona basılı olduğu sürece led yanar, bırakıldığında led söner.

bu işlemi, enerjilendiği andan itibaren, gecikme olmadığı için anında yapar.

program, basla bloğunda sonsuz döngüdedir zaten ve DONGU bloğu asla çalışmaz bu kodda. onun için orası gereksiz ve hiçbir anlam ifade etmiyor.

eğer kod aynen buysa herhangi bir sorun yok. başka bir PIC ile deneyin. konfigürasyon kısmındaki _CP_ON u da _CP_OFF olarak değiştirin eğer kod koruması gerekmiyorsa...
 
öncelikle ilgin için teşekkür ediyorum

peki hocam bize okulda söylenen picin çalışması için her program sonuna bir tane sonsuz döngü koymak gerektiğiydi.. şimdi bu gereksiz diyosunuz ki denedim ve pici yavaşlattığını gördüm. bu sonsuz döngü muhabbeti nedir peki

saygılar
 
Sn orge ustam okulda size doğru söylemişler her pic programında bir sonsuz döngü olmak zorundadır fakat sanırım siz yanlış anlamışsınız şöyle ki siz zaten programınızın;

BASLA MOVF PORTA,W
MOVWF PORTB
GOTO BASLA

Kısmında bu kuralı yerine getirmişsiniz.Programınız bu satırları işlerken basla etiketini gördükten sonra MOVF PORTA,F i görecek ardından MOVWF PORTB yi görecek Son olarakta GOTO BASLA yı görecek dolayısı ile goto baslayı gören program tekrar basla etiketine dallanacak ve aradaki sizin yazmış olduğunuz DONGU GOTO DONGU END kısmını görmeyecektir Programı tekrar ele alarak yorumlarsak tıpkı bir işlemci gibi bunu göreceğiz ;) program daimi olarak noktalı virgül ile işaretlediğim alanı görecektir dolayısı ile dongu goto gongu kısmına hiçuğramayacaktır...

Sizin burada aslında Basla ile Goto basla kısmı arası tamamen bir sonsuz döngüdür Saygılarımla...

LIST P = 16F84A
INCLUDE P16F84A.INC
__CONFIG _CP_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC

CLRF PORTB
BANKSEL TRISB
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BANKSEL PORTB

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BASLA MOVF PORTA,W
MOVWF PORTB
GOTO BASLA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DONGU
GOTO DONGU

END

Son olarakta sn mberkanbicer ustamın söylediği gibi __CONFIG _CP_ON kısmını OFF olarak değiştirmeniz gerekir aksi taktirde bu şekilde pici programlarsanız tekrar programlayamayacaksınız aslında programlanır diye söyleniyor ama pic bir nevi bozuluyor ve programlanmıyor bu kodu on olarak yapmanın amacı kod korumasını aktifleştirmek içindir yani pic e yazılan kodu başkasının okumasını engellemek amacı ile yazılır siz burada deneme yaptığınız için off yapınız ki tekrar sorunsuz olarak programlama yapabilesiniz...
 
arkadaşların söyledikleri katılıyorum birde şunu eklemek istiyorum asm ile program yazıyorsanız organizasyon belirterek çalışmanız her zaman faydalıdır
ör:
0rg 0X000
goto basla
org 0X004
goto interupt

şeklinde ana program ve interupt kısmını picde belirtmekte her zaman fayda vardır tüm programlarında baştan kendini böyle alıştırırsan daha iyi olacaktır kolay gelsin.
 
herkese çok teşekkürler özellikle artvinli usta çok güzel anlatmışsın sağolasın. kafamda bazı soru işaretleri var programlama konusunda , zaten msn de konuşuruz onları

saygılar
 

Forum istatistikleri

Konular
129,847
Mesajlar
930,726
Kullanıcılar
452,702
Son üye
hsyn35

Yeni konular

Geri
Üst