16f877 nin stack ını temizleme

Başlatan refik1, 14 Haziran 2006, 17:32:22

z

Ana döngüye sahip bir programda, herhangi bir alt programlardan örneğin 6 call ardından hiç bir şey yapmadan ana programa goto ile sıçrayabilirsin.

Bu noktada artık stack pointerin bulunduğu kısım senin için 0. stack alanıdır.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

refik1

teşekkürler arkadaşlar bu konu anlaşıldı.

z

Interrupt programına girdikten sonra bu işi yapmıyoruz tabiki.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

aYe

Alıntı yapılan: "bunalmis"Ana döngüye sahip bir programda, herhangi bir alt programlardan örneğin 6 call ardından hiç bir şey yapmadan ana programa goto ile sıçrayabilirsin.

Bu noktada artık stack pointerin bulunduğu kısım senin için 0. stack alanıdır.

+1 rep :D

Stack pointer ret veya reti (mcu'dan mcu'ya değişir) komutu gelmedikçe hiç bir önem taşımaz, pic için bu mümkün olmasa da genellikle stack data saklamak için de kullanılır("push, pop" benzeri komutlar).

Stack vs. gibi konularda bilgi noksanı olan herkesin hiç 8051 kullanmayacakta olsa,
https://www.picproje.org/index.php/topic,10160&highlight=

sayfasında da tavsiye edilen Haluk Gümüşkaya'nın kitabını baştan sona bir kez okumasını tavsiye ediyorum.

İyi çalışmalar.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

PhD

Hocam sorununuzu anlamadım ama böyle bir şey saçma olur ki bu yüzden yapanlarda Stack için müdahale hakkı vermemişler ve ne yaparsanız yapın stack i görmezden gelirseniz programınız kilitlenir.

Klein hocamın dediği gibi Stack i kendiniz yaparak bir çözüm yapabilirsiniz ama burada da amaç sadece stack sayısını artırmak olabilir. Müdahale ederseniz program yine kilitlenecektir.

Kısacası bir nusubet bin nasihatden iyidir deneyin ve görün hocam :twisted:

Kolay gelsin... :)
...hiç...

z

Pic serisinde (yeni serileri tanımıyorum) stack üzerinde oynama şansınız yok. Ancak stack manüplasyonu ile harikalar yaratacaksanız 8086 ve üstüne bakın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

CoşkuN

Kendi kendime PIC'leri öğrenmeye başladıktan sonra okulda 8051 görünce PIC'lerin en büyük eskiğinin stack'in programlanabilir olmamasının ve arada kullanılan w registerı olduğunu görmüştüm.

camby

Stack taşması durumunda pic kitleniyor mu ? Yoksa sadece ISIS mi kitleniyor?

fatihinanc

#23
Datasheet taşmadan sonraki her stack çağrısı için baştan başlayarak üzerine yazdığından bahsediyor.

Datasheet deki açıklama(16f84a):

After the stack has been PUSHed eight times, the ninth
push overwrites the value that was stored from the first
push. The tenth push overwrites the second push (and
so on).
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

camby


fatihinanc

birbirinin üzerine yazma durumundan dolayı mcu ilk başta nerede kaldığını bilemiyor heralde.
ama bunun soncu bir kilitlenme olur mu onu bilemiyorum.bana olur gibi geliyor.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

fatihinanc

az önce test ettim PC en son kaldığı yerde duruyor.
Yani @camby hocam pic kilitleniyor.
datasheet:
If the stack is effectively popped nine times, the PC
value is the same as the value from the first pop.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)