elektronist kitaplık

Tanju Taşçılar, 17 Mayıs 2002
doc mpl006-170502

Yazmaçları ve değişkenleri görmek...

Önceki konular izlendiğinde, bir projeyi oluşturmayı ve onu adım adım çalıştırmayı görürüz. Burada ise işlemcinin içinde neler olup bittiğini göreceğiz. Bu konuda da önceki konularda kullandığımız spi.asm ile ilgili projeyi kullanacağız. MPLab'ı çalıştırıp spi projesini başlattıktan sonra aşağıdakileri izleyebilirsiniz.

Bu konuda Debug araç çubuğundaki 'Modify Window' ve 'Add New Watch Window' butonlarını kullanacağız.

Bu butonlardan ilki olan Watch butonu ile görüntülemek istediğimiz yazmaç ve benzeri alanların listesini oluştururuz. Bu listeye daha sonra ek yapabilir veya istediğimiz kısımları çıkarabilir veya görüntülenmekte olanların özelliklerini değiştirebiliriz. Bu buton ile açılan 'Watch Window' biz program içinde gezinirken sürekli olarak güncellenir. Daha önceki konularda gördüğümüz adım adım ilerlemelerde, her adımda değişenleri gözlemleyebiliriz. Son adımda değişen kısımlar kırmızı olarak gösterilir.

İkinci buton ise değiştirme butonudur. Bu buton yardımı ile açılan pencerede yazmaçları görüntüleyebilir ve değiştirebiliriz. Bu pencerenin bir kullanım alanı da işlemcinin portlarına dışarıdan uygulanan lojik seviyelerin değiştirilebilmesidir. Bu arada söylemeden geçemeyeceğim, bu işlem aslında çok daha kolay erişilebilecek başka bir birim aracılığı ile gerçekleştirilmeliydi. Ancak MPLab yazarları bunu değiştirme yoluna, en azından bugüne kadar, gitmediler.

İlk butona, 'Add New Watch Window' butonuna tıkladığımızda Şekil-1'deki pencere açılır. Burada w (küçük w) değişkenini seçersek, izleme penceremize PIC'in w yazmacını eklemiş oluruz. Tabii Add butonuna tıkladığımızda.


Şekil-1

Bu işlem sonucunda arkada açılmış olan 'Watch - 1' penceresinde Şekil-2'deki gibi w yazmacı belirir. Burada H'FF' ile görüntülemenin hex formatında yapıldığı belirtilmektedir. Bu format değiştirilerek binary veya decimal yapılabilir. Ayrıca çok daha farklı görüntüleme şekilleri de bulunmaktadır.


Şekil-2

Buna ek olarak en çok görmek isteyeceğimiz port değerini izleme penceremize ekleyelim. Bunun en kolay yolu Watch-1 penceresi aktif halde iken Insert tuşuna basmamızdır. Bu durumda Add Watch Symbol penceresi açılır. Bu pencerede Symbol: bölümüne büyük harflerle GPIO yazalım. Unutmayalım MPLab varsayılan olarak harf büyüklüklerine hassastır. GPIO ise büyük harflerle tanımlanmıştır. Bu işlemden sonra bu sefer Add butonuna değil de Properties butonuna tıklayalım. Bu durumda karşımıza Properties penceresi gelir. Bu pencerede görüntülemek istediğimiz şeyin ne şekilde görüntüleneceğine ilişkin çeşitli seçenekler bulunmaktadır. Biz GPIO'yu binary olarak görmek için Format bölümünde Binary seçeneğini aktif hale getirelim. Ok tuşu ile Watch-1 penceresine GPIO'yu binary olarak eklemiş oluruz. Daha başka istediğimiz değişkenleri de ekleyebiliriz. Bundan sonra Add Watch Symbol penceresini kapatabiliriz.


Şekil-3

Bu durumda Şekil-3'teki izleme penceresini elde ederiz. Program üzerinde daha hiçbir işlem yapmadığımız için işlemci reset konumunda bekler durumdadır. Bu konumda da GPIO'nun tamamı giriş konumundadır. Dikkat edersek GP3 yani GPIO'nun 3. biti 1, diğerleri 0'dır. GP3 aslında reset girişidir ve MPLab bunu öntanımlı olarak 1 kabul eder. Bütün bitler giriş olduğu için programın varsaydığı değerler görüntülenmektedir. Yani bu durumda reset hariç bütün girişler dışardan 0 ile sürülmektedir.

GPIO ve diğer işlemcilerde PORTx'lerin dışardan sürülmesinde MPLab girişler için dışardan sürülmeyi, çıkışlar için ise çıkış yazmaçlarındaki değerleri geçerli kabul eder. Yani bir port biti giriş ise bu bite karşılık gelen giriş değeri geçerlidir. Port biti çıkış ise, MPLab'ın giriş değeri ne olursa olsun çıkış yazmacına yazılan değer geçerlidir.

Şimdi izleme penceremize A_Reg yazmacını hex, S_Reg yazmacını binary ve S_Counter sayıcısını da decimal olarak ekleyelim. Önceki konularda yaptığımız şekilde Reset ve Run komutlarını kullanarak Main_Loop etiketinde duralım. (Eğer Main_Loop'ta durma noktası yoksa ekleyin.) Bu durumda simulasyon sırasında değişkenleri izleyelim.


Şekil-4

INCF A_Reg,F satırı işlendikten sonra Şekil-4, Şekil-5 haline gelir. Burada Bu satırın işlenmesi sonucunda H'00' olan A_Reg yazmacının değerinin istenildiği gibi bir artırıldığını ve sonucun da A_Reg yazmacına yazıldığını görürüz. A_Reg H'01' olmuştur ve bu işlem son adımda gerçekleştirildiği için de kırmızı olarak görüntülenmektedir.


Şekil-5

Program ise Şekil-6'da görünen yere gelmiştir.


Şekil-6

Sıradaki komut satırı BCF D_Ltc, GPIO üzerinde değişiklik yapacaktır. D_Ltc, programın başında tanımlanmıştır ve 74HC595'in latch girişine bağlıdır. GPIO'nun 0. bitidir. Şekil-5'te görüleceği gibi bu bit 1 konumundadır. Step butonu ile bu komutu işlediğimizde bu bitin 0 olduğunu görürüz. Biz işlemlerimize devam ettikçe Watch_1 penceresindeki değerlerin uygun olarak değiştiğini izleriz. Bu şekilde ilerleyerek tekrar CLRWDT satırına geldiğimizde duralım. Eğer bir turu tamamladıktan sonra durmuş iseniz A_Reg yazmacının değeri hala H'01' olacaktır. Sıradaki komut yine bu yazmacı bir artırıp yerine yazacak olan INCF A_Reg,F komutudur. Bu durumda iken Watch_1 penceresinde A_Reg'in bulunduğu satırın başındaki bu yazmacın değeri olan 0E üzerine gelip bir kere tıklayarak cursoru buraya yerleştirelim. Bundan sonra çift tıklayalım. Modify penceresinin açıldığını görürüz. Burada adress bölümünde 0E ve Data-Opcode bölümünde 01 değeri bulunmaktadır.


Şekil-7

Data-Opcode'daki 01 değerini EF yapalım ve Write butonuna tıklayalım. Watch_1 penceresinde A_Reg'e karşı gelen değerin EF olduğunu görürüz. Aynı zamanda bu satır kırmızı olmuştur. Benzeri şekilde diğer değişkenler de değiştirilebilir.


Şekil-8

Pin giriş değerlerinin değiştirilmesi.

Pin girişlerinin değiştirilmesi Modify penceresi aracılığı ile yapılırken pinlerin MPLab tarafından kullanılan özel isimleri kullanılır. Bunlar RA0..RA7, RB0..RB7 ve benzeri şekilde RC, RD, RE ve diğer portlar için Rpb, (p port harfi, b port biti) ve GPIO için de GP0..GP7 şeklindeki değerlerdir. Bu pin isimleri Modify penceresinde Address bölümüne yazılır. Kullanılan harflerin hepsi büyük harf olmalıdır.

Copyright © Mikrosis Elektronik 2002 - info@elektronist.com