Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

IAR ARM7

Başlatan burak_82, 04 Kasım 2007, 13:09:16

Cetinal

@picusta evet hocam olur

mesela ben bu örnek verilen gecikme alt programını 8051 e uyguladım ve çalışıor arm de çalışır hatta bu ccs de mikroC picc de bile çalışır ;)
#include <at89x51.h>
void delay_ms(long k)
{
long p,q;
for(p=0;p<k;p++)
for(q=0;q<7500;q++);
}
void main (void)
{
P1_0=0;
delay_ms(10);
P1_0=1;
}

picusta

Bir de derleyicinin optimizasyon ayarlari ile oynayin, bakin o zaman neler oluyor.
Benim anlatmak istedigim derleyici bu fonksyonu tümden yok sayabilir.

burak_82

Düzeltme:

Optimizsayon ile ilgili sıkını yaşayan arkadaşlar


void delay_ms(long k)
{
   long p,q,r;

   for(p=0;p<k;p++)
      for(q=0;q<7500;q++)
                                  r++;

}


Şeklinde kullanabilir.

parda

Döngüler ile gecikme yapmak yapmak yerine bunuda deneyebilirsiniz. Optimizsayon sorun olmaz. yapmanız gereken tek şey kristal ve PLL ayarlarınıza göre 18500 değerini 1 ms ayarlamak

Kod LPC2100 serisi ve IAR derleyicisi içindir.

void DelayMs(int msec)
{
DelayMs_Enter;
while(msec--){
 delay_1ms();
}
DelayMs_Exit;
}
/******************************************************************************/
void delay_1ms(void)
{
delay_1ms_Enter;
T1MCR = 0x07;
T1TC = 0x00;
T1MR0 = 18500;
T1TCR = 0x01;
while(!(T1IR & 1));
T1IR = 0x01;
delay_1ms_Exit;
}
Bildiğim tek şey, hiç bir şey bilmediğimdir.