Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

mikroC-Pwm sorunu

Başlatan Bayramsumbul, 26 Ocak 2014, 20:20:46

LukeSkywalker

#15
Printf fonksiyonu genelde çok yer kaplayan bir fonksiyondur. Kendi dönüştürme kütüphanesini şu şekilde yazabilir @bayramsumbul;
char txt[5]="2345",i=0;
int veri;

int strtoint(char *str)
{
  int binler,yuzler,sayi;
  char onlar,birler;
  binler=(str[0]-48)*1000;
  yuzler=(str[1]-48)*100;
  onlar=(str[2]-48)*10;
  birler=(str[3]-48);
  sayi=binler+yuzler+onlar+birler;
  return sayi;
}

void main()
{
 UART1_Init(9600);
 PWM1_Init(1000);
 PWM1_Start();
 while(1)
 {
  if(UART1_Data_Ready())
                        {
                         txt[i]=UART1_Read();
                         i++;
                         if(i==4)
                                 {
                                  i=0;
                                  veri= strtoint(txt);
                                  PWM1_Set_Duty(veri);
                                 }
                        }
 }
}

Gerçi burada PWM kütüphanesini kullanacaksanız sayıyı int değil de char cinsinden tanımlayabilirdiniz. Çünkü mikroC "pwm_set_duty" fonksiyonu 0-255 arasında değer alır.

Bayramsumbul

@LukeSkywalker sorunu hallettim yinede teşekkür ederim.Bilgisayar başına geçince kodu koyarım.Birde 48 çıkarırmadan önce "sayı mı?" kontrolü yaptım.isdigit adında bir fonksiyon varmış.
Bir Elektronik Meraklısının Serüveni...

LukeSkywalker

#17
Alıntı yapılan: Bayramsumbul - 27 Ocak 2014, 11:07:58
@LukeSkywalker sorunu hallettim yinede teşekkür ederim.Bilgisayar başına geçince kodu koyarım.Birde 48 çıkarırmadan önce "sayı mı?" kontrolü yaptım.isdigit adında bir fonksiyon varmış.
"isdigit" fonksiyonunu da kendiniz yazarsanız eminim daha az yer kaplar.
mesela;
char digit_mi(char iks)
     {
      if (iks>=48 && iks<=57) return 1;
      else return 0;
     }

void main()
{
 .
 .
 .
 sonuc=digit_mi('5'); // Sonuç değişkenine, digit_mi sorgusu içindeki karakter eğer rakamsa 1, değilse 0 döndürür.

Bayramsumbul

@LukeSkywolker ben daha yeni yeni alışıyorum mikroC'ye ne,ne kadar rom veya ram kullanır pek bilgim yok yani öneriler benim için önemli.
Bir Elektronik Meraklısının Serüveni...

LukeSkywalker

Proje ekranında ctrl+alt+s tuşlarına basarak ram ve rom kullanımını detaylı bir şekilde görebilirsiniz...

Mr.Java

Hocam printf yazmamın sebebi herhangi bir c derleyicisinde sonucu görmesi içindi.Mikroc için değildi.

Kolay gelsin.

LukeSkywalker

#21
Alıntı yapılan: Fkarizmatik - 27 Ocak 2014, 11:31:54
Hocam printf yazmamın sebebi herhangi bir c derleyicisinde sonucu görmesi içindi.Mikroc için değildi.

Kolay gelsin.
diğer derleyicilerde de daha çok yer kaplar.. denemek lazım..
saygılar..