micro c programında dosyayı hex e dönüştürdüğümüzde boyutu yüksek çıkıyor neden?

Başlatan eem2015, 28 Nisan 2015, 19:27:13

eem2015

micro c programında dosyayı hex e dönüştürdüğümüzde boyutu yüksek çıkıyor neden olabilir bilen varsa yardımcı olabilir mi?

rodyum

dosyayı görmeden kesin konuşamam ama aklıma gelen olasılıklar:
1- optimasyon seviyesini çok düşürmüş olabilirsin.
2- kullanılmayan kütüphaneleri programa dahil etmiş olabilirsin.
3- çok fazla float işlem yapmış olabilirsin.



eem2015

46kb gibi değer çıkıyor.Peki bu kullanmadığım kütüphaneleri nasıl sileceğim.

rodyum

"library manager" bölümünden kaldırabilirsin.
hex dosyasının boyutunu biraz daha azaltmak için "optimization level" seviyesini en yükseğe getir.


eem2015

unsigned char sin_table[64]={0,12,25,37,49,61,73,84,96,107,118,129,139,149,159,168,177,185,193,201,208,214,220,226,231,235,239,243,245,247,249,250,250,250,249,247,245,243,239,237,231,226,220,214,208,201,193,185,177,168,159,149,139,129,118,107,96,84,73,61,49,37,25,12};


unsigned int TBL_POINTER_NEW, TBL_POINTER_OLD, TBL_POINTER_SHIFT, SET_FREQ;
unsigned int TBL_temp;
unsigned char DUTY_CYCLE;

sbit MOSA at RD0_bit;
sbit MOSB at RD1_bit;
sbit MOSC at RD2_bit;
sbit MOSD at RD3_bit;

unsigned char FlagReg;
sbit Direction at FlagReg.B0;
//0 -> MOS A + D
//1 -> MOS B + C

void interrupt(){
     if (TMR2IF_bit == 1){
        TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ;
        if (TBL_POINTER_NEW < TBL_POINTER_OLD){
           //CCP1CON.P1M1 = ~CCP1CON.P1M1; //Reverse direction of full-bridge
           if (Direction == 0){
              MOSA = 0;
              MOSD = 0;
              MOSB = 1;
              MOSC = 1;
              Direction = 1;
           }
           else{
                MOSB = 0;
                MOSC = 0;
                MOSA = 1;
                MOSD = 1;
                Direction = 0;
           }
        }
        TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 11;
        DUTY_CYCLE = TBL_POINTER_SHIFT;
        CCPR1L = sin_table[DUTY_CYCLE];
        TBL_POINTER_OLD = TBL_POINTER_NEW;
        TMR2IF_bit = 0;
     }
}

void main() {
     SET_FREQ = 410;
     PORTD = 0;
     TRISD = 0;
     PR2 = 249; // 16kHz
     CCPR1L = 0;
     CCP1CON = 12; //PWM mode
     TRISC = 0xFF;
     TMR2IF_bit = 0;
     T2CON = 0x04; //TMR2 on
     while (TMR2IF_bit == 0);
     TMR2IF_bit = 0; //Clear TMR2IF
     PORTC = 0;
     TRISC = 0;
     TMR2IE_bit = 1;
     GIE_bit = 1;
     PEIE_bit = 1;

     while (1);

}

bu programı micro c de 16f877A entegsine göre 16MHz kristal hızında hex olarak döneştürüp ekleyebilirmisiniz benim micro c de mi arıza var??

burctankal


eem2015


rodyum


eem2015


rodyum

çıkan hex dosyası bu:

:020000006A286C
:10000800FF00030E8301EE000A08ED008A010408D0
:10001800A0008C1C4E2861086907F1006A080318C3
:10002800013E6207F2007108E6007208E7006A08FC
:100038007202031D21286908710203183028681804
:100048002B2808108811881408156814302888107F
:1000580008110814881568100B30F2006608F000C3
:100068006708F100720803193E28F10CF00CF1132F
:10007800FF3E37287008EB007108EC007008E500B7
:100088007008213E8400000895006608E9006708AA
:10009800EA008C10200884006D088A006E0E830028
:0600A800FF0E7F0E0900AF
:0E00AE008312031364088A00630882000800AE
:1000BC0057208A110A128000840AE30A0319E40A01
:0800CC00F003031D5E2808008B
:1000D400D2209A3083120313E1000130E200880138
:1000E40083168801F9309200831295010C30970031
:1000F400FF308316870083128C10043092008C1812
:10010400842881288C108701831687018C148B170F
:060114000B178B288C285C
:1001A40021308400403083120313F0009230E300C6
:0801B4000030E4005E200800A9
:1001240000340C341934253431343D3449345434D6
:1001340060346B34763481348B3495349F34A834F2
:10014400B134B934C134C934D034D634DC34E234B3
:10015400E734EB34EF34F334F534F734F934FA3468
:10016400FA34FA34F934F734F534F334EF34ED3443
:10017400E734E234DC34D634D034C934C134B9344D
:10018400B134A8349F3495348B34813476346B3451
:100194006034543449343D343134253419340C3406
:02400E004A2F37
:00000001FF



dnaci

@eem2015 Kodu derledim. Sorunsuz hex oluştu. Boyutu 2kb. Bütün kütüphaneler açık. Ver. mikroc 6.4 Kaynak kod ve hex linkte:

https://drive.google.com/file/d/0B9F3CyDwz-nIcmFObEZCaWp4UEk/view?usp=sharing

Sanırım projeyi oluşturamadın.  New project ile c dosyasını gösterir ve mikroc ye yüklersen sorun yaşamaman lazım ve en önemlisi hangi sürümü kullanıyorsun?



Powered by EzPortal