elektronist kitaplık

Tanju Taşçılar, 6 Mayıs 2002
doc mpl004-060502

MPLab'da 'adım adım' simulasyon...

Burada önceki konularda oluşturduğumuz ve derlediğimiz spi.asm üzerinde çalışmaya devam edeceğiz. MPLab ortamının en önemli özelliklerinden biri kaynak kodu üzerinden simulasyon işleminin takip edilmesidir. Bu tür programların bulunmadığı zamanlarda ya bilgisayarı terminal olarak kullanan emülatörler veya MPSim(Microchip'in eski simülasyon programı) gibi programlar kullanmaktaydık. Bu programlarda programın satır satır veya çalışarak simülasyon veya emülasyon işleminde komut satırından girilen komutlar kullanılırdı. Bunların sonucunda işlemci içinde neler olup bittiğini görmek için yine bu komutlar kullanılırdı. Ancak biz programı yazarken karşımızdaki editörde program satırları üzerinde düşünürüz. Programın takibinin de bu düşünce akışına göre olmasını bekleriz. Önceki program ve yöntemler buna izin vermezken bugün MPLab ile bu mümkün olmaktadır. Bunun önemi düşünülebileceğinden de büyüktür.

Şimdi MPLab programını çalıştırıp, spi projesini yükledikten sonra işleme başlayalım.

Burada Tools Panel kullanımı işlemi büyük ölçüde kolaylaştırmaktadır. Bunun için Debug tool panelini seçebilir veya varsa user panelimizdeki butonları kullanabiliriz. İlk olarak kullanacağımız butonlar:

'Run', 'Halt', 'Step', 'Step Over' ve 'Reset Processor' butonları olacaktır. 'Run' butonu programın bulunduğu yerden itibaren siz durduruncaya, varsa durma noktasına gelinceye veya hata oluşuncaya kadar çalışmasına neden olur. 'Halt' butonu çalışmakta olan programı durdurur. 'Step' butonu programın bulunduğu satırı işler ve bir sonraki satırda durur. 'Step Over' butonu ise alt rutinlerin içinin izlenmeden çalıştırılmasını sağlar. Eğer programın durduğu satırda bir alt rutin çağırma komutu CALL varsa, bu rutin çalıştırılır ve program bir sonraki satırda durur. 'Reset Processor' ise işlemcinin reset işlemini gerçekleştirir.

Şimdi 'Reset Processor' butonuna basalım. Bu durumda Şekil-1'deki duruma geliriz. İşlemci resetten sonra bu konuma gelecektir.


Şekil-1

Bundan sonra 'Step' butonuna her basışta arka planı siyah ile belirlenen satır program akışına göre birer birer değişecektir. Bir sonraki basışta CALL Init_All satırına, sonra şekil-2'deki Init_All rutininin ilk satırına gelecektir.


Şekil-2

Daha sonraki her tıklamada bir satır ilerleyecek ve Init_All rutininin sonundaki RETURN satırına gelecektir. Buradan sonraki tıklama bizi geriye, Init_All rutininin çağrıldığı şekil-1'deki konumun dönüşündeki GOTO Main_Loop satırına getirecektir. Bundan sonraki tıklama ile de programın ana çevrimi olan Main_Loop'un ilk satırına Şekil-3'e geliriz.


Şekil-3

Bundan sonra üç tıklama daha yapıp ilk CALL Send_Serial satırına geliriz. Burada 'Step' butonu yerine 'Step Over' butonuna basalım. Programın Send_Serial alt rutinini takip etmediğini onu çalıştırdıktan sonra COMF A_Reg,W satırına geldiğini görürüz.

İşleme bu şekilde devam ettiğimizde programı işlemcinin çalışmasını takip edecek şekilde çalıştırmış oluruz.

Şimdi bulunduğumuz yerde 'Run' butonunu tıklayalım. Alttaki status satırının sarı zeminli hale geldiğini görürüz. Bunun dışında bir hareket görülmemektedir. 'Halt' butonuna bastığımızda program çalışmasını durdurur, durduğu yerdeki satır siyah arkalı hale gelir, status satırı normal hale döner ve değerleri gösterir.

Copyright © Mikrosis Elektronik 2002 - info@elektronist.com