if(x)y++;else y--;
gibi yazdığımız kodun tamamı yada bir bölümünün donanım tarafından kaç çevrimde işlendiğini gösteren bir yazılım bir derleyici ve bunun gibi yararlı olabilecek bir şeyler varmı? örnek;
if (t1_overflow)//true=2,false=3 //----|
{t1_overflow=0;freqc_high++;}//6 çevrim // |
else // |-- 8 çevrim
{delay_cycles(5);} //----|
Hi-Tech C de bunu yapmanın en pratik yolu oluşan asm dosyasına bakarak hesaplamaktır. Direkt c kodlarına bakarak bunu yapma imkanı sanırım yoktur. if'e şart olarak yazdığın değişkenlerin tipine bağlı olarak işlem zamanı çok değişik olabilir.
Htec derleyici olması şart değil,herhangi bi 8bitlik pic için c derleyicisi için soruyorum aslında.Asm dosyasından bakmak için önce derlemek gerekiyor(sanırım) eğer derlemeden görülemiyorsa zaten işime pek yaramıyor ben c dilinde kodu yazarken yani programı daha oluştururken kaç çevrim süreceğini merak ediyorum,yanlış olmasın yorumlayıcı gibi bişey c kodunu okuyup adım adım makie diline çevrirecek ve kaç çevrim olduğunu söyleyecek gibi...
MPLAB'da projeyi MPLAB SIM ile debug ettiğinde "debug" menüsü altında "StopWatch" aracı var. Bununla kodun zamanlamasını ölçebilirsin.
MPLAB bi çözüm olabilir bilemiyorum,
ama genelde yapılan şudur; C dosyasında bir asm blok yazılır.
mesela : _asm nop nop nop _endasm gibi...
bunun 5 cycle olduğu bilindiği için,
bu blok bir for döngüsü ile çevrilir, for değişkeni sayesinde istenen
gecikme yapılır.
Ama çok hassas istiyosan biraz daha uğraşmak lazım,
c kodu ile yazuılan kısmı da incelemek gerek.
Ama belki MPLABden bakılıyordur, ben de bi deneyeyim.