Şimdi Ara

CCS PC'ye Deger Atamak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
1.115
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba Arkadaşlar,

    Ben Ccs'de yazdığım bir interrupt dongüsü bitiminde programımı en başa döndürmek istiyorum. Yani yeniden başlatmak istiyorum. Bunun icin aklıma gelen ilk yol

    PC'yi (Program Counter) sıfırlamak - yada başlangıc adresıne eşitlemek.

    CCs'de bu eşitlemeyi nasıl yapabilirim. Çünkü bildiğim kadarı ile interrupt bitiminde ccs otomatik olarak interrupta girdiği andaki PC değerini geri yükleyecek.

    Yada bu programı en baştan başlatma işini başka nasıl yapabilirim.


    Teşekkürler



  • ne yapmak istediğini tam olarak anlamadım yapmak istediğin programın amacı nedir ? counter sayacını sıfırlamak istiyorsan emin değilim ama get_counter(0); komutu ile sıfırlanıyor olabilir.
  • Reset_cpu() fonksiyonunu kullanabilirsin.
  • Yapmak istediğim seyi söyle açıklayayım;

    Interrupt fonksiyonu içerisinde devrenin giris degerlerine gore 3 tane kontrol bitime deger veriyorum. Bu degerlere gorede devre 3 farklı fonksiyonda calısıyor.

    Ancak ben giris esnasında bu 3 kontrol bitime degerleri atadıktan sonra interruptin yapısı geregi kaldıgı yere geri donuyor.

    Benim istedigim sey interrupt fonkiyonun kaldıgı yere geri donmeside benim belirledigim bir komut satırına donsun;

    Ornegin interruptın dondugu yerde soyle bir kod olsa;

    İf(Cont_Bit1)
    { function_1(); }

    elseİf(Cont_Bit2)
    { function_2(); }

    elseİf(Cont_Bit3)
    { function_3(); }

    Boylece interrup donusu diger fonksiyonun bitmesini beklemeden devre yeni atanan fonksiyonu çalıstırıcak.

    assemblyde bunu yapabilirim;

    Pc nin degerini bir degiskene kaydederim.
    Interrupt'ı benim istedigim yere dondururum.
    Eger gerekli olur ise PC'yi kullanırım.
    Gerekmezsede Program kaldıgı yerden devam eder.

    Ama bu islemi CCS'de nasıl yaparım bilemiyorum.

    Ilginizden Dolayı Tesekkur Ederim;



    < Bu mesaj bu kişi tarafından değiştirildi meandorsaber -- 13 Mayıs 2011; 11:42:56 >




  • quote:

    Orijinalden alıntı: meandorsaber

    Ama bu islemi CCS'de nasıl yaparım bilemiyorum.




    Ben de zaten ccs için cevap vermiştim, ccs help'te built-in functions alt başlığında bakarsanız reset_cpu() fonksiyonunu görebilirsiniz.
  • Oncelikle Ilgilendigin icin tesekkur ederim phunkee,

    Bu komutu kullanırsam PC 0x00'a dönse bile Pic resetlenir ve bütün registerların içerigi bosalir.

    Bunun yerine programın istedigim yerine donebilecegim bir fonksiyon daha cok isime yarar.

    Kolay Gelsin
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.