PIC'de ROM yeterli değil

Başlatan musti463, 04 Ekim 2013, 01:19:52

musti463

merhaba,CCS C ile PIC'e program yazıyorum fakat daha programın yarısında derlediğim zaman RAM:%8 ve ROM %79 diyor.18F46K22 kullanıyorum.18F46K80'nın Program Memory'si 18F46K22'nin 2 katı fakat 18F46K80 ile derlediğimde yine ROM %79 diyor.Çözüm önerileriniz nedir?
Mustafa Emir SADE

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

musti463

Mustafa Emir SADE

yamak

İşlemcide floating point unit yoksa çok fazla float işlem yapmamaya dikkat et.Bilmiyorum belki de hiç yapmamışsındır ama.Bilgin olsun diye söyledim.

musti463

Alıntı yapılan: yamak - 04 Ekim 2013, 03:05:01
İşlemcide floating point unit yoksa çok fazla float işlem yapmamaya dikkat et.Bilmiyorum belki de hiç yapmamışsındır ama.Bilgin olsun diye söyledim.

18 tane float32 türünde değişken var ve çokça da float32 ile işlem yapılmış durumda.işlemleri ortadan kaldıramam ki programı başka türlü yazamam
Mustafa Emir SADE

musti463

şimdi farkettim ikisininde program hafızası 64k imiş yanlışlıkla 45k22 ye bakmışım
Mustafa Emir SADE

mcn

hocam konuyla alakası yok ama 200 mesajı geçmişsiniz artık başlıklarınızın sonuna "yardım!!!" yazmasanız çok itici görünüyor. genelde bu hareketi ödevi son dakikaya kalmış liseliler yapıyor.
www.teknikyazi.com --üşenme,erteleme,vazgeçme...

Gökhan BEKEN

Optimizasyon olayı önemli.
C18 dilinin lite sürümünü kurup ürettiğin koda bak,
Bir de profesyonel sürüm kurup bütün optimizasyon özelliklerini açıp, ürettiğin koda bak.
Hafızada baya yer açılıyor.
Tabi sen hangi dili kullanıyorsun bilmiyorum, pic basic felansa normaldir.
Başka pic kullanmak istersen, flash hafızası 128k olan, ram hafızası 3862byte olan 18f87k22 benim favorilerim arasında.
Özel mesaj okumuyorum, lütfen göndermeyin.

musti463

Evet aklımda başka PIC kullanmak var fakat 128k program hafızası olan DIP kılıfında PIC var mı?
Mustafa Emir SADE

musti463

Grafik ekrana bilgileri yazdırırken daha yolun yarısında program hafızasının %80'i gidiyor.Program hafıza alanını artırmak için birkaç fikrim var sizce en uygunu hangisi? (18F46K22 kullanıyorum)

1-)Grafik ekrana yazdırılacakların bir kısmını 1.mcu ile diğer kısmını 2.mcu ile yani sistemde 2 tane 18F46K22 kullanmayı düşünüyorum.Fakat daha önce hiç haberleşme sistemi kullanmadım hangi haberleşme türü uygun olur?Birde 2 ayrı mcu ile bir glcd sürersek ne gibi sorunlar ortaya çıkabilir?

2-)Harici ROM'tarzı birşeyler bağlayamazmıyız PIC'imize? bağlarsak hızımızda bir düşüş olur mu?

3-)128k program hafızalı PIC kullanmak (fakat daha önce hiç smd devre tasarlamadığımdan,128k'lık mcu'yu programlayacak programlayıcı bulunmadığından bu çözüm mümkün görünmüyor)
Mustafa Emir SADE

picusta

Ben de geçenlerde RAM ve Flash limitine takildim.
PDIP :  ATMEGA 1284P
128KB ISP flash memory with read-while-write capabilities, 4KB EEPROM, 16KB SRAM
http://www.atmel.com/devices/ATMEGA1284P.aspx

CCS C ile yazidigin için Arduino ile programlamaya geçerken sIkIntI olmaz

yldzelektronik

Alıntı yapılan: musti463 - 04 Ekim 2013, 01:19:52
merhaba,CCS C ile PIC'e program yazıyorum fakat daha programın yarısında derlediğim zaman RAM:%8 ve ROM %79 diyor.18F46K22 kullanıyorum.18F46K80'nın Program Memory'si 18F46K22'nin 2 katı fakat 18F46K80 ile derlediğimde yine ROM %79 diyor.Çözüm önerileriniz nedir?

Programında menü işlemleri mi var?Sabit stringler mi var?Resim mi basmaya çalışıyorsun?O kadar hafızayı neyle doldurdun?Kodun kaç yüz satır belki bin satır oldu öyle?Programın ile ilgili bilgi ver de yardım çıksın.

İkinci bir mcu koyana kadar eeprom koy.Ama neden programın o kadar şişti orası da ayrı bir soru işareti?

Hadi sen bu sorulara cevap ver.Bakalım o zaman ortaya ne çıkacak..
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

musti463

#12
Harici eeprom kullanırsam, grafik ekrana yazdırırken bilgiler ekrana geç görünür diye düşünüyorum,böyle bir sorun oluşmaz mı?

ROM'u şişiren kod bu:


#include <18F46K22.h>
#Device PASS_STRINGS=IN_RAM
#device ADC=10 
#include <T6963C.c>
#include <Resimler.h>
#include <math.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOPLLEN                  //4X HW PLL disabled, 4X PLL enabled in software
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES WDT_SW                   //No Watch Dog Timer, enabled in Software
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#DEFINE fast_glcd


#use delay(clock=16000000)

unsigned long int uzunluk,aci,yuk,ruzgar; //Bilgiler İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor
char  uzunluk_str[20],aci_str[20],yuk_str[20],ruzgar_str[20],limityuk_str[20],yukseklik_str[20],moment_str[20],calisma_mesafesi_str[20],sensor_ariza[]={"ARIZA"};
float32 uzunluk_voltaj,aci_voltaj,yuk_voltaj,ruzgar_voltaj;
float32 uzunluk_islem,aci_islem,yuk_islem,ruzgar_islem,yukseklik,yukseklik_rad,moment,calisma_mesafesi,calisma_mesafesi1,calisma_mesafesi2;
float32 uzunluk_gosterge,aci_gosterge,yuk_gosterge,ruzgar_gosterge;
float32 t1,t2,limityuk;

void main()
{  
   setup_wdt(WDT_OFF); 
   setup_adc_ports(NO_ANALOGS); // An0-An1-An3 Portları Analog giriş için ayarlanıyor
   setup_adc_ports(sAN0|sAN1|sAN2|sAN3);
   setup_adc(ADC_CLOCK_INTERNAL);    
   port_b_pullups (TRUE);
   
   glcd_init(240,128); // Grafik LCD ektran hazırlanıyor
   glcd_WriteByte(1, (LCDModeSet|LCDMode_XOR)); // Grafik LCD ekran XOR moda göre ayarlanıyor
   glcd_WriteByte(1, (LCDDispMode|LCDDisp_TXT|LCDDisp_GRH)); // Grafik LCD ekran hem metin hem grafik modunda çalışacak şekilde ayarlanıyor
   
   Resim_goster(Giris,240,128,0,0); // Giriş resmi çağrılıp ekrana basılıyor. Resimler "Resimler.h" dosyasında tek sabit arrayde saklanıyor, 
      
   while(true)
   {
   
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////BOOM UZUNLUK////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   set_adc_channel(0);
     
   delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
   uzunluk=read_adc();     // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
   uzunluk_voltaj=0.0048828125*uzunluk;   // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyor ve KALİBRASYON yapılıyor
   
   if(uzunluk_voltaj<0)
   {
     uzunluk_voltaj=0;
   }
   
   uzunluk_islem=uzunluk_voltaj*5.87+10.8;//////////formüllerde kullanılacak
   uzunluk_gosterge=uzunluk_voltaj*5.87+10.8;//////////grafik ekranda kullanılacak

   uzunluk_gosterge=uzunluk_gosterge*10;/////////////////////////////////////
   uzunluk_gosterge=floor(uzunluk_gosterge);//////// Düzeltme yapılıyor//////
   uzunluk_gosterge=(uzunluk_gosterge/10);///////////////////////////////////
   
   glcd_box(17,27,60,44,0); //Boom kutucuğu temizleniyor
   
   sprintf(uzunluk_str,"%0.1f",uzunluk_gosterge);//float to string işlemi gerçekleştiriliyor
   glcd_text57(17,31,uzunluk_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
   
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////BOOM AÇI////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   set_adc_channel(1);   // RE0/AN5 ucundaki sinyal A/D işlemine tabi tutulacak
     
   delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
   aci=read_adc();     // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
   aci_voltaj=0.0048828125*aci;   // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyor
   
   if(aci_voltaj<1.822600243)
   {
     aci_voltaj=1.822600243;
   }
   
   aci_islem=(aci_voltaj-1.822600243)*22.34531549+10;
   aci_gosterge=(aci_voltaj-1.822600243)*22.34531549+10;
   
   aci_gosterge=aci_gosterge*10;////////////////////////////////////
   aci_gosterge=floor(aci_gosterge);//////// Düzeltme yapılıyor//////
   aci_gosterge=(aci_gosterge/10);//////////////////////////////////
   
   glcd_box(66,68,110,89,0); //Boom kutucuğu temizleniyor
   
   sprintf(aci_str,"%0.1f",aci_gosterge);//float to string işlemi gerçekleştiriliyor
   glcd_text57(68,74,aci_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
   
      
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////YUK/////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   set_adc_channel(2);   // RE0/AN5 ucundaki sinyal A/D işlemine tabi tutulacak
     
   delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
   yuk=read_adc();     // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
   yuk_voltaj=0.0048828125*yuk;   // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyor 
   
   if(yuk_voltaj<2.385)
   {
     yuk_voltaj=2.385;
   }
   
   yuk_islem=(yuk_voltaj-2.385)*19.12045889;
   yuk_gosterge=(yuk_voltaj-2.385)*19.12045889;
   
   yuk_gosterge=yuk_gosterge*10;////////////////////////////////////
   yuk_gosterge=floor(yuk_gosterge);//////// Düzeltme yapılıyor//////
   yuk_gosterge=(yuk_gosterge/10);//////////////////////////////////
   
   glcd_box(179,72,222,89,0); //Boom kutucuğu temizleniyor
   
   sprintf(yuk_str,"%0.1f",yuk_gosterge);//float to string işlemi gerçekleştiriliyor
   glcd_text57(177,76,yuk_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
   
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   ///////////////////RUZGAR///////////////////////////////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   set_adc_channel(3);   // RE0/AN5 ucundaki sinyal A/D işlemine tabi tutulacak
     
   delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
   ruzgar=read_adc();     // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
   ruzgar_voltaj=0.0048828125*ruzgar;   // Dijitale çevirme işlemine uğrayan sinyalin gerilimi hesaplanıyor
   
    if(ruzgar_voltaj<0.25)
   {
     ruzgar_voltaj=0.25;
   }
   
   ruzgar_islem=(ruzgar_voltaj-0.25)*4.798301486+1;
   ruzgar_gosterge=(ruzgar_voltaj-0.25)*4.798301486+1;
   
   ruzgar_gosterge=ruzgar_gosterge*10;////////////////////////////////////
   ruzgar_gosterge=ceil(ruzgar_gosterge);//////// Düzeltme yapılıyor//////
   ruzgar_gosterge=(ruzgar_gosterge/10);//////////////////////////////////
   
   glcd_box(172,98,216,124,0); //Boom kutucuğu temizleniyor
   
   sprintf(ruzgar_str,"%0.1f",ruzgar_gosterge);//float to string işlemi gerçekleştiriliyor
   glcd_text57(173,106,ruzgar_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
   
   ///////////////////////////////////////JACK EXTENDED////////////////////////////////////////////////
   //////////////////////////////////////////////////////////////////////////////////////////////////
   
   if(uzunluk_islem>=10.8 && uzunluk_islem<=14.5)//////////////////////////////////////////////////////////////////////////////////
         {   
         
        calisma_mesafesi1 = 10.02437-0.01901*aci_islem-0.00117*(aci_islem*aci_islem);
        calisma_mesafesi2 = 13.8069-0.0233*aci_islem-0.00161*(aci_islem*aci_islem);
        calisma_mesafesi=calisma_mesafesi1-(calisma_mesafesi1-calisma_mesafesi2)*((uzunluk_islem-10.8)/(14.5-10.8));
      
        ///////10.8///////
        if      (aci_islem <22) { t1 = 0; }
        else if (aci_islem <35) { t1 = 14.2- (14.2-17.3)*( (aci_islem - 22)/(35-22));}
        else if (aci_islem <39) { t1 = 17.3- (17.3-18.7)*( (aci_islem - 35)/(39-35));}
        else if (aci_islem <44) { t1 = 18.7- (18.7-20.7)*( (aci_islem - 39)/(44-39));}
        else if (aci_islem <47) { t1 = 20.7- (20.7-22.7)*( (aci_islem - 44)/(47-44));}
        else if (aci_islem <51) { t1 = 22.7- (22.7-25)*( (aci_islem - 47)/(51-47));}
        else if (aci_islem <54) { t1 = 25- (25-27.5)*( (aci_islem - 51)/(54-51));}
        else if (aci_islem <58) { t1 = 27.5- (27.5-30.2)*( (aci_islem - 54)/(58-54));}
        else if (aci_islem <61) { t1 = 30.2- (30.2-34)*( (aci_islem - 58)/(61-58));}
        else if (aci_islem <64) { t1 = 34- (34-38)*( (aci_islem - 61)/(64-61));}
        else if (aci_islem <67) { t1 = 38- (38-43)*( (aci_islem - 64)/(67-64));}
        else if (aci_islem <70) { t1 = 43- (43-50.5)*( (aci_islem - 67)/(70-67));}
        else if (aci_islem <90) { t1 = 50.5;}
            
        ///////14.50///////
        if      (aci_islem <27) { t2 = 0; }
        else if (aci_islem <35) { t2 = 7.8- (7.8-9.3)*( (aci_islem - 27)/(35-27));}
        else if (aci_islem <42) { t2 = 9.3- (9.3-11.3)*( (aci_islem - 35)/(42-35));}
        else if (aci_islem <48) { t2 = 11.3- (11.3-14)*( (aci_islem - 42)/(48-42));}
        else if (aci_islem <53) { t2 = 14- (14-17.1)*( (aci_islem - 48)/(53-48));}
        else if (aci_islem <56) { t2 = 17.1- (17.1-18.6)*( (aci_islem - 53)/(56-53));}
        else if (aci_islem <58) { t2 = 18.6- (18.6-20.3)*( (aci_islem - 56)/(58-56));}
        else if (aci_islem <60) { t2 = 20.3- (20.3-22.3)*( (aci_islem - 58)/(60-58));}
        else if (aci_islem <63) { t2 = 22.3- (22.3-24)*( (aci_islem - 60)/(63-60));}
        else if (aci_islem <65) { t2 = 24- (24-26.5)*( (aci_islem - 63)/(65-63));}
        else if (aci_islem <67) { t2 = 26.5- (26.5-29)*( (aci_islem - 65)/(67-65));}
        else if (aci_islem <69) { t2 = 29- (29-30.5)*( (aci_islem - 67)/(69-67));}
        else if (aci_islem <71) { t2 = 30.5- (30.5-33)*( (aci_islem - 69)/(71-69));}
        else if (aci_islem <90) { t2 = 33;}
 
    limityuk=t1-(t1-t2)*((uzunluk_islem-10.8)/(14.5-10.8));
        
         }
    
   else  if(uzunluk_islem>14.5 && uzunluk_islem<=18.15) ///////////////////////////////////////////////////////////////////////////////
         { 
         
         calisma_mesafesi1 = 13.8069-0.0233*aci_islem-0.00161*(aci_islem*aci_islem);
         calisma_mesafesi2 = 17.90797-0.04996*aci_islem-0.00179*(aci_islem*aci_islem);
         calisma_mesafesi=calisma_mesafesi1-(calisma_mesafesi1-calisma_mesafesi2)*((uzunluk_islem-14.5)/(18.15-14.5));
         
         ///////14.50///////
         if      (aci_islem <27) { t1 = 0; }
         else if (aci_islem <35) { t1 = 7.8- (7.8-9.3)*( (aci_islem - 27)/(35-27));}
         else if (aci_islem <42) { t1 = 9.3- (9.3-11.3)*( (aci_islem - 35)/(42-35));}
         else if (aci_islem <48) { t1 = 11.3- (11.3-14)*( (aci_islem - 42)/(48-42));}
         else if (aci_islem <53) { t1 = 14- (14-17.1)*( (aci_islem - 48)/(53-48));}
         else if (aci_islem <56) { t1 = 17.1- (17.1-18.6)*( (aci_islem - 53)/(56-53));}
         else if (aci_islem <58) { t1 = 18.6- (18.6-20.3)*( (aci_islem - 56)/(58-56));}
         else if (aci_islem <60) { t1 = 20.3- (20.3-22.3)*( (aci_islem - 58)/(60-58));}
         else if (aci_islem <63) { t1 = 22.3- (22.3-24)*( (aci_islem - 60)/(63-60));}
         else if (aci_islem <65) { t1 = 24- (24-26.5)*( (aci_islem - 63)/(65-63));}
         else if (aci_islem <67) { t1 = 26.5- (26.5-29)*( (aci_islem - 65)/(67-65));}
         else if (aci_islem <69) { t1 = 29- (29-30.5)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <71) { t1 = 30.5- (30.5-33)*( (aci_islem - 69)/(71-69));}
         else if (aci_islem <90) { t1 = 33;}
            
         ///////18.15//////
         if      (aci_islem <21) { t2 = 0; } 
         else if (aci_islem <35) { t2 = 4- (4-5.5)*( (aci_islem - 21)/(35-21));}
         else if (aci_islem <46) { t2 = 5.5- (5.5-7.7)*( (aci_islem - 35)/(46-35));}
         else if (aci_islem <50) { t2 = 7.7- (7.7-9.3)*( (aci_islem - 46)/(50-46));}
         else if (aci_islem <54) { t2 = 9.3- (9.3-11.2)*( (aci_islem - 50)/(54-50));}
         else if (aci_islem <58) { t2 = 11.2- (11.2-13.9)*( (aci_islem - 54)/(58-54));}
         else if (aci_islem <62) { t2 = 13.9- (13.9-17)*( (aci_islem - 58)/(62-58));}
         else if (aci_islem <63) { t2 = 17- (17-18.5)*( (aci_islem - 62)/(63-62));}
         else if (aci_islem <65) { t2 = 18.5- (18.5-20)*( (aci_islem - 63)/(65-63));}
         else if (aci_islem <67) { t2 = 20- (20-21.8)*( (aci_islem - 65)/(67-65));}
         else if (aci_islem <69) { t2 = 21.8- (21.8-23.5)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <70) { t2 = 23.5- (23.5-25.6)*( (aci_islem - 69)/(70-69));}
         else if (aci_islem <72) { t2 = 25.6- (25.6-28)*( (aci_islem - 70)/(72-70));}
         else if (aci_islem <74) { t2 = 28- (28-28)*( (aci_islem - 72)/(74-72));}
         else if (aci_islem <75) { t2 = 28- (28-28)*( (aci_islem - 74)/(75-74));}
         else if (aci_islem <77) { t2 = 28- (28-28)*( (aci_islem - 75)/(77-75));}
         else if (aci_islem <79) { t2 = 28- (28-28)*( (aci_islem - 77)/(79-77));}
         else if (aci_islem <90) { t2 = 28;}
 
    limityuk=t1-(t1-t2)*((uzunluk_islem-14.5)/(18.15-14.5));
        
         }
   
   else  if(uzunluk_islem>18.15 && uzunluk_islem<=21.8) ///////////////////////////////////////////////////////////////////////////////
         {   
        
         calisma_mesafesi1 = 17.90797-0.04996*aci_islem-0.00179*(aci_islem*aci_islem);
         calisma_mesafesi2 = 21.57485-0.05672*aci_islem-0.00216*(aci_islem*aci_islem);
         calisma_mesafesi=calisma_mesafesi1-(calisma_mesafesi1-calisma_mesafesi2)*((uzunluk_islem-18.15)/(21.8-18.15));
        
         ///////18.15///////
         if      (aci_islem <21) { t1 = 0; } 
         else if (aci_islem <35) { t1 = 4- (4-5.5)*( (aci_islem - 21)/(35-21));}
         else if (aci_islem <46) { t1 = 5.5- (5.5-7.7)*( (aci_islem - 35)/(46-35));}
         else if (aci_islem <50) { t1 = 7.7- (7.7-9.3)*( (aci_islem - 46)/(50-46));}
         else if (aci_islem <54) { t1 = 9.3- (9.3-11.2)*( (aci_islem - 50)/(54-50));}
         else if (aci_islem <58) { t1 = 11.2- (11.2-13.9)*( (aci_islem - 54)/(58-54));}
         else if (aci_islem <62) { t1 = 13.9- (13.9-17)*( (aci_islem - 58)/(62-58));}
         else if (aci_islem <63) { t1 = 17- (17-18.5)*( (aci_islem - 62)/(63-62));}
         else if (aci_islem <65) { t1 = 18.5- (18.5-20)*( (aci_islem - 63)/(65-63));}
         else if (aci_islem <67) { t1 = 20- (20-21.8)*( (aci_islem - 65)/(67-65));}
         else if (aci_islem <69) { t1 = 21.8- (21.8-23.5)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <70) { t1 = 23.5- (23.5-25.6)*( (aci_islem - 69)/(70-69));}
         else if (aci_islem <72) { t1 = 25.6- (25.6-28)*( (aci_islem - 70)/(72-70));}
         else if (aci_islem <74) { t1 = 28- (28-28)*( (aci_islem - 72)/(74-72));}
         else if (aci_islem <75) { t1 = 28- (28-28)*( (aci_islem - 74)/(75-74));}
         else if (aci_islem <77) { t1 = 28- (28-28)*( (aci_islem - 75)/(77-75));}
         else if (aci_islem <79) { t1 = 28- (28-28)*( (aci_islem - 77)/(79-77));}
         else if (aci_islem <90) { t1 = 28;}
            
         ///////21.8///////
         if      (aci_islem <16) { t2 = 0; } 
         else if (aci_islem <30) { t2 = 1.8- (1.8-2.7)*( (aci_islem - 16)/(30-16));}
         else if (aci_islem <40) { t2 = 2.7- (2.7-3.9)*( (aci_islem - 30)/(40-30));}
         else if (aci_islem <48) { t2 = 3.9- (3.9-5.5)*( (aci_islem - 40)/(48-40));}
         else if (aci_islem <55) { t2 = 5.5- (5.5-7.6)*( (aci_islem - 48)/(55-48));}
         else if (aci_islem <58) { t2 = 7.6- (7.6-9.2)*( (aci_islem - 55)/(58-55));}
         else if (aci_islem <61) { t2 = 9.2- (9.2-11.2)*( (aci_islem - 58)/(61-58));}
         else if (aci_islem <64) { t2 = 11.2- (11.2-13.6)*( (aci_islem - 61)/(64-61));}
         else if (aci_islem <67) { t2 = 13.6- (13.6-15.9)*( (aci_islem - 64)/(67-64));}
         else if (aci_islem <69) { t2 = 15.9- (15.9-17.1)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <70) { t2 = 17.1- (17.1-18.4)*( (aci_islem - 69)/(70-69));}
         else if (aci_islem <72) { t2 = 18.4- (18.4-19.9)*( (aci_islem - 70)/(72-70));}
         else if (aci_islem <73) { t2 = 19.9- (19.9-21.5)*( (aci_islem - 72)/(73-72));}
         else if (aci_islem <74) { t2 = 21.5- (21.5-23.2)*( (aci_islem - 73)/(74-73));}
         else if (aci_islem <76) { t2 = 23.2- (23.2-24)*( (aci_islem - 74)/(76-74));}
         else if (aci_islem <90) { t2 = 24;}

 
    limityuk=t1-(t1-t2)*((uzunluk_islem-18.15)/(21.8-18.15));
       
         }
  
   else  if(uzunluk_islem>21.8 && uzunluk_islem<=25.5) ///////////////////////////////////////////////////////////////////////////////
         {
         
         calisma_mesafesi1 = 21.57485-0.05672*aci_islem-0.00216*(aci_islem*aci_islem);
         calisma_mesafesi2 = 25.93118-0.08018*aci_islem-0.00239*(aci_islem*aci_islem);
         calisma_mesafesi=calisma_mesafesi1-(calisma_mesafesi1-calisma_mesafesi2)*((uzunluk_islem-21.8)/(25.5-21.8));
        
         ///////21.8///////
         if      (aci_islem <16) { t1 = 0; } 
         else if (aci_islem <30) { t1 = 1.8- (1.8-2.7)*( (aci_islem - 16)/(30-16));}
         else if (aci_islem <40) { t1 = 2.7- (2.7-3.9)*( (aci_islem - 30)/(40-30));}
         else if (aci_islem <48) { t1 = 3.9- (3.9-5.5)*( (aci_islem - 40)/(48-40));}
         else if (aci_islem <55) { t1 = 5.5- (5.5-7.6)*( (aci_islem - 48)/(55-48));}
         else if (aci_islem <58) { t1 = 7.6- (7.6-9.2)*( (aci_islem - 55)/(58-55));}
         else if (aci_islem <61) { t1 = 9.2- (9.2-11.2)*( (aci_islem - 58)/(61-58));}
         else if (aci_islem <64) { t1 = 11.2- (11.2-13.6)*( (aci_islem - 61)/(64-61));}
         else if (aci_islem <67) { t1 = 13.6- (13.6-15.9)*( (aci_islem - 64)/(67-64));}
         else if (aci_islem <69) { t1 = 15.9- (15.9-17.1)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <70) { t1 = 17.1- (17.1-18.4)*( (aci_islem - 69)/(70-69));}
         else if (aci_islem <72) { t1 = 18.4- (18.4-19.9)*( (aci_islem - 70)/(72-70));}
         else if (aci_islem <73) { t1 = 19.9- (19.9-21.5)*( (aci_islem - 72)/(73-72));}
         else if (aci_islem <74) { t1 = 21.5- (21.5-23.2)*( (aci_islem - 73)/(74-73));}
         else if (aci_islem <76) { t1 = 23.2- (23.2-24)*( (aci_islem - 74)/(76-74));}
         else if (aci_islem <90) { t1 = 24;}
            
         ///////25.5///////
         if      (aci_islem <27) { t2 = 0; } 
         else if (aci_islem <36) { t2 = 1.1- (1.1-1.8)*( (aci_islem - 27)/(36-27));}
         else if (aci_islem <43) { t2 = 1.8- (1.8-2.7)*( (aci_islem - 36)/(43-36));}
         else if (aci_islem <50) { t2 = 2.7- (2.7-3.8)*( (aci_islem - 43)/(50-43));}
         else if (aci_islem <56) { t2 = 3.8- (3.8-5.4)*( (aci_islem - 50)/(56-50));}
         else if (aci_islem <61) { t2 = 5.4- (5.4-7.6)*( (aci_islem - 56)/(61-56));}
         else if (aci_islem <64) { t2 = 7.6- (7.6-9.1)*( (aci_islem - 61)/(64-61));}
         else if (aci_islem <67) { t2 = 9.1- (9.1-11.1)*( (aci_islem - 64)/(67-64));}
         else if (aci_islem <69) { t2 = 11.1- (11.1-13.2)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <71) { t2 = 13.2- (13.2-14.8)*( (aci_islem - 69)/(71-69));}
         else if (aci_islem <73) { t2 = 14.8- (14.8-15.7)*( (aci_islem - 71)/(73-71));}
         else if (aci_islem <74) { t2 = 15.7- (15.7-16.8)*( (aci_islem - 73)/(74-73));}
         else if (aci_islem <75) { t2 = 16.8- (16.8-18)*( (aci_islem - 74)/(75-74));}
         else if (aci_islem <76) { t2 = 18- (18-20)*( (aci_islem - 75)/(76-75));}
         else if (aci_islem <90) { t2 = 20;}

    limityuk=t1-(t1-t2)*((uzunluk_islem-21.8)/(25.5-21.8));
        
         }
         
   else  if(uzunluk_islem>25.5 && uzunluk_islem<=32.85) ///////////////////////////////////////////////////////////////////////////////
         {
         
         calisma_mesafesi1 = 25.93118-0.08018*aci_islem-0.00239*(aci_islem*aci_islem);
         calisma_mesafesi2 = 33.57907-0.09996*aci_islem-0.00308*(aci_islem*aci_islem);
         calisma_mesafesi=calisma_mesafesi1-(calisma_mesafesi1-calisma_mesafesi2)*((uzunluk_islem-25.5)/(32.85-25.5));
        
         ///////25.5///////
         if      (aci_islem <27) { t1 = 0; } 
         else if (aci_islem <36) { t1 = 1.1- (1.1-1.8)*( (aci_islem - 27)/(36-27));}
         else if (aci_islem <43) { t1 = 1.8- (1.8-2.7)*( (aci_islem - 36)/(43-36));}
         else if (aci_islem <50) { t1 = 2.7- (2.7-3.8)*( (aci_islem - 43)/(50-43));}
         else if (aci_islem <56) { t1 = 3.8- (3.8-5.4)*( (aci_islem - 50)/(56-50));}
         else if (aci_islem <61) { t1 = 5.4- (5.4-7.6)*( (aci_islem - 56)/(61-56));}
         else if (aci_islem <64) { t1 = 7.6- (7.6-9.1)*( (aci_islem - 61)/(64-61));}
         else if (aci_islem <67) { t1 = 9.1- (9.1-11.1)*( (aci_islem - 64)/(67-64));}
         else if (aci_islem <69) { t1 = 11.1- (11.1-13.2)*( (aci_islem - 67)/(69-67));}
         else if (aci_islem <71) { t1 = 13.2- (13.2-14.8)*( (aci_islem - 69)/(71-69));}
         else if (aci_islem <73) { t1 = 14.8- (14.8-15.7)*( (aci_islem - 71)/(73-71));}
         else if (aci_islem <74) { t1 = 15.7- (15.7-16.8)*( (aci_islem - 73)/(74-73));}
         else if (aci_islem <75) { t1 = 16.8- (16.8-18)*( (aci_islem - 74)/(75-74));}
         else if (aci_islem <76) { t1 = 18- (18-20)*( (aci_islem - 75)/(76-75));}
         else if (aci_islem <90) { t1 = 20;}
            
         ///////32.85///////
         if      (aci_islem <36) { t2 = 0; } 
         else if (aci_islem <42) { t2 = 0.9- (0.9-1.35)*( (aci_islem - 36)/(42-36));}
         else if (aci_islem <47) { t2 = 1.35- (1.35-1.9)*( (aci_islem - 42)/(47-42));}
         else if (aci_islem <52) { t2 = 1.9- (1.9-2.6)*( (aci_islem - 47)/(52-47));}
         else if (aci_islem <57) { t2 = 2.6- (2.6-3.5)*( (aci_islem - 52)/(57-52));}
         else if (aci_islem <61) { t2 = 3.5- (3.5-4.7)*( (aci_islem - 57)/(61-57));}
         else if (aci_islem <65) { t2 = 4.7- (4.7-6.2)*( (aci_islem - 61)/(65-61));}
         else if (aci_islem <69) { t2 = 6.2- (6.2-8.3)*( (aci_islem - 65)/(69-65));}
         else if (aci_islem <71) { t2 = 8.3- (8.3-9.1)*( (aci_islem - 69)/(71-69));}
         else if (aci_islem <73) { t2 = 9.1- (9.1-10)*( (aci_islem - 71)/(73-71));}
         else if (aci_islem <75) { t2 = 10- (10-11)*( (aci_islem - 73)/(75-73));}
         else if (aci_islem <76) { t2 = 11- (11-12.3)*( (aci_islem - 75)/(76-75));}
         else if (aci_islem <77) { t2 = 12.3- (12.3-13)*( (aci_islem - 76)/(77-76));}
         else if (aci_islem <90) { t2 = 13;}

  

   limityuk=t1-(t1-t2)*((uzunluk_islem-25.5)/(32.85-25.5));
         
         }
         
  else  if(uzunluk_islem>32.85 && uzunluk_islem<=40.15) ///////////////////////////////////////////////////////////////////////////////
         {
         
         calisma_mesafesi1 = 33.57907-0.09996*aci_islem-0.00308*(aci_islem*aci_islem);
         calisma_mesafesi2 = 40.61246-0.08087*aci_islem-0.00416*(aci_islem*aci_islem);
         calisma_mesafesi=calisma_mesafesi1-(calisma_mesafesi1-calisma_mesafesi2)*((uzunluk_islem-32.85)/(40.15-32.85));
        
         ///////32.85///////
         if      (aci_islem <36) { t1 = 0; } 
         else if (aci_islem <42) { t1 = 0.9- (0.9-1.35)*( (aci_islem - 36)/(42-36));}
         else if (aci_islem <47) { t1 = 1.35- (1.35-1.9)*( (aci_islem - 42)/(47-42));}
         else if (aci_islem <52) { t1 = 1.9- (1.9-2.6)*( (aci_islem - 47)/(52-47));}
         else if (aci_islem <57) { t1 = 2.6- (2.6-3.5)*( (aci_islem - 52)/(57-52));}
         else if (aci_islem <61) { t1 = 3.5- (3.5-4.7)*( (aci_islem - 57)/(61-57));}
         else if (aci_islem <65) { t1 = 4.7- (4.7-6.2)*( (aci_islem - 61)/(65-61));}
         else if (aci_islem <69) { t1 = 6.2- (6.2-8.3)*( (aci_islem - 65)/(69-65));}
         else if (aci_islem <71) { t1 = 8.3- (8.3-9.1)*( (aci_islem - 69)/(71-69));}
         else if (aci_islem <73) { t1 = 9.1- (9.1-10)*( (aci_islem - 71)/(73-71));}
         else if (aci_islem <75) { t1 = 10- (10-11)*( (aci_islem - 73)/(75-73));}
         else if (aci_islem <76) { t1 = 11- (11-12.3)*( (aci_islem - 75)/(76-75));}
         else if (aci_islem <77) { t1 = 12.3- (12.3-13)*( (aci_islem - 76)/(77-76));}
         else if (aci_islem <90) { t1 = 13;}


         ///////40.15///////
         if      (aci_islem <37) { t2 = 0; } 
         else if (aci_islem <42) { t2 = 0.4- (0.4-0.7)*( (aci_islem - 37)/(42-37));}
         else if (aci_islem <46) { t2 = 0.7- (0.7-1)*( (aci_islem - 42)/(46-42));}
         else if (aci_islem <50) { t2 = 1- (1-1.4)*( (aci_islem - 46)/(50-46));}
         else if (aci_islem <54) { t2 = 1.4- (1.4-1.9)*( (aci_islem - 50)/(54-50));}
         else if (aci_islem <58) { t2 = 1.9- (1.9-2.45)*( (aci_islem - 54)/(58-54));}
         else if (aci_islem <61) { t2 = 2.45- (2.45-3.2)*( (aci_islem - 58)/(61-58));}
         else if (aci_islem <65) { t2 = 3.2- (3.2-4)*( (aci_islem - 61)/(65-61));}
         else if (aci_islem <68) { t2 = 4- (4-4.7)*( (aci_islem - 65)/(68-65));}
         else if (aci_islem <71) { t2 = 4.7- (4.7-5.5)*( (aci_islem - 68)/(71-68));}
         else if (aci_islem <74) { t2 = 5.5- (5.5-6.3)*( (aci_islem - 71)/(74-71));}
         else if (aci_islem <75) { t2 = 6.3- (6.3-6.8)*( (aci_islem - 74)/(75-74));}
         else if (aci_islem <77) { t2 = 6.8- (6.8-7.3)*( (aci_islem - 75)/(77-75));}
         else if (aci_islem <78) { t2 = 7.3- (7.3-7.5)*( (aci_islem - 77)/(78-77));}
         else if (aci_islem <90) { t2 = 7.5;}
         

   limityuk=t1-(t1-t2)*((uzunluk_islem-32.85)/(40.15-32.85));
        
         }
               
            if(limityuk<0){limityuk=0;}
          
            glcd_box(173,36,222,62,0); //Boom kutucuğu temizleniyor
            sprintf(limityuk_str,"%0.1f",limityuk);//float to string işlemi gerçekleştiriliyor
            glcd_text57(177,44,limityuk_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
            
            yukseklik_rad=(aci_islem*pi)/180;
            yukseklik=uzunluk_islem*sin(yukseklik_rad)+1;
            
            glcd_box(105,25,150,46,0); //Boom kutucuğu temizleniyor
            sprintf(yukseklik_str,"%0.1f",yukseklik);//float to string işlemi gerçekleştiriliyor
            glcd_text57(106,31,yukseklik_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
            
            moment=((100*yuk_islem)/limityuk);
            if(moment>999){moment=999;}
                 
            glcd_box(190,4,233,30,0); //Boom kutucuğu temizleniyor
            sprintf(moment_str,"%0.0f",moment);//float to string işlemi gerçekleştiriliyor
            glcd_text57(195,12,moment_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
            
            glcd_box(85,104,130,125,0); //Boom kutucuğu temizleniyor
            sprintf(calisma_mesafesi_str,"%0.1f",calisma_mesafesi);//float to string işlemi gerçekleştiriliyor
            glcd_text57(86,110,calisma_mesafesi_str,2,1);//voltaj_str değeri ekrana yazdırılıyor
            
            
 
   }
   
   
} 
Mustafa Emir SADE

Okan AKÇA

bu kodda neyin nesi hafıza tabikide şişer her işlem icin ayrı ayrı matematiksel işlem yapma  matematiksel fonksiyonu  kur degişkenleri tablodan cek

musti463

Alıntı yapılan: cyclone - 04 Ekim 2013, 13:51:31
bu kodda neyin nesi hafıza tabikide şişer her işlem icin ayrı ayrı matematiksel işlem yapma  matematiksel fonksiyonu  kur degişkenleri tablodan cek

hocam else if'lerin içerisindeki değişkenleri bir diziye atsam.diziden den çeksem ROM kullanma oranı düşer mi?
Mustafa Emir SADE