CCS'de funksiyona parametre olarak bit gönderilirmi?

Başlatan Digimensch, 08 Ocak 2011, 00:59:45

Digimensch

Arkadaslar CCS de parametresi bit olan fuksiyon yazilirmi?Bit derken bir PIC bacagini kast ediyorum....
Örnegin
void Ledyak(bit led)
{
output_high(led);
}

baska bir yerden ben bu Bu Funksiyonu cagirdigimda
Ledyak(PIN_A0);

dedigimde bu yukardaki funksiyon o pini lojik yapacak.Yada #define olarak tanittigimiz bir yaziyi
örnegin
#define led pic_a0
bu satiiri bir funksiyonda parametre olarak kullanabilirmiyim?
void Ledyak(string yazi)
{
output_hig(yazi);
}

cagiriyorum bu fuksiyonu:
Ledyak(led);


Ama yapamadim .
Funksiyona char , int seklinde parametre verebildim ama bit seklinde paremetre veremedim.

arges

Aşağıdaki kod çalışır.

#define led PIN_A0

void Ledyak(int16 yazi) {
   output_high(yazi);
}

void Ledsondur(int16 yazi) {
   output_low(yazi);
}

void main(){
   ...
   ...
   set_tris_a(0x00);

   while(TRUE){
         Ledyak(led);
         delay_ms(1000);
         Ledsondur(led);
         delay_ms(1000);
   }
}
The whole is equal to the sum of parts(Euclid)... The whole is greater than the sum of its parts(Max Wertheimer)...

Digimensch

#2
tamam deneyip bakayim...
tesekkürler

Digimensch

#3
bu yukardaki islem bende calismadi.Söyle birsey yaptim
#define Motorsirasi PIN_B0

void motorsur(int16 servo1)     >>>>>  // Burda bir paremetreli fonksiyon tanimliyorum
{
      output_high(servo1)
      delay_us(555);
      output_low(servo1);
      delay_us(20000-555);
}


su sekilde cagiriyorum
motorsur(Motorsirasi);      >>>  Burda hata veriyor su sekilde "EXpecting an indentifier"

#define motor1 PIN_B0  seklinde tanimlamayi  yani motor1'i ben bir fonsiyonda paremetre olarak kullnamazmiyim?
Kullanabilirsem nasil kullanabilirim?

Digimensch

Alıntı yapılan: Digimensch - 13 Ocak 2011, 03:13:44
bu yukardaki islem bende calismadi.Söyle birsey yaptim
#define Motorsirasi PIN_B0

void motorsur(int16 servo1)     >>>>>  // Burda bir paremetreli fonksiyon tanimliyorum
{
      output_high(servo1)
      delay_us(555);
      output_low(servo1);
      delay_us(20000-555);
}


su sekilde cagiriyorum
motorsur(Motorsirasi);      >>>  Burda hata veriyor su sekilde "EXpecting an indentifier"

#define motor1 PIN_B0  seklinde tanimlamayi  yani motor1'i ben bir fonsiyonda paremetre olarak kullnamazmiyim?
Kullanabilirsem nasil kullanabilirim?

Lütfen bilen arkadaslardan Cevap bekliyorum..!


Digimensch

#6
Ben CCS'in kendine has Funktionlarina tanimladigimiz bir PIN'i paremetre olarak gönderebilirmiyiz bunu kast etmiyorum.
Onu biliyorum zanen..
örnegin
#define led PIN_B0

su foksiyon icinde kullaniyoruz örnegin.
output_low(led);
Böyle oluyor ...

Ama ben kednim bir Fonksiyon olusturup , o fonksiyona bu tanimlamis oldugum
#define led PIN_B0   satirindaki led'i paremetre olarak nasil gönderebilirim onu sordum !!
Söyle bir örnekte verdim ama bende olmadi , bu olurmu , olursa nasil olur?
#define led PIN_B0

void sinyalver(int16 lamba)     >>>>>  // Burda bir paremetreli fonksiyon tanimliyorum
{
      output_high(lamba)
      delay_us(555); 
      output_low(lamba);
      delay_us(20000-555);
}


su sekilde cagiriyorum
sinyalver(led);    >>>  Burda hata veriyor su sekilde "EXpecting an identifier"

mufitsozen

Alıntı yapılan: Digimensch - 13 Ocak 2011, 14:59:37
Ben CCS'in kendine has Funktionlarina tanimladigimiz bir PIN'i paremetre olarak gönderebilirmiyiz bunu kast etmiyorum.
Onu biliyorum zanen..
örnegin
#define led PIN_B0

su foksiyon icinde kullaniyoruz örnegin.
output_low(led);
Böyle oluyor ...

Ama ben kednim bir Fonksiyon olusturup , o fonksiyona bu tanimlamis oldugum
#define led PIN_B0   satirindaki led'i paremetre olarak nasil gönderebilirim onu sordum !!
Söyle bir örnekte verdim ama bende olmadi , bu olurmu , olursa nasil olur?
#define led PIN_B0

void sinyalver(int16 lamba)     >>>>>  // Burda bir paremetreli fonksiyon tanimliyorum
{
      output_high(lamba)
      delay_us(555); 
      output_low(lamba);
      delay_us(20000-555);
}


su sekilde cagiriyorum
sinyalver(led);    >>>  Burda hata veriyor su sekilde "EXpecting an identifier"


device olarak 16F877A kullandiginizi var sayarsak, vede device tanimlarina bakarsak, (16F877A.h dosyasi), PIN_B0'in su sekilde tanimlandigini goruruz:

16F877A.h dosyasi:
...
#define PIN_B0  48
...

sizde kendi yazdiginiz programda susekilde bir tanim yapiyorsunuz:

#define led PIN_B0

simdi:

sinyalver(led);    >>>  Burda hata veriyor su sekilde "EXpecting an identifier"

dediginizde parametre olarak kullanilacak degiskeni bulamiyor, cunku oyle bir degisken tanimli degil. Buyuk ihtimalle (su anda kullandigim bilgisayarda CCS_C compiler yok onun icin deneyemedim);

#define led PIN_B0 // yerine ---> int8 led = PIN_B0; yazarsaniz ve

sinyalver(led); // derseniz calisacaktir.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Digimensch


Digimensch

Evet demek ki tanimlama #define seklinde degil
sanki int8 tipnde bir degisken tanimlar gibi yapmamiz gerekiyormus?
int8 led = PIN_B0;   ----> bu sekilde.
aslinda mantik su  , PIN_B0  bir bit.
Biz bir BIT'i int8 veya int veya unsigned int tipinideki degiskenlere atayabiliyoruz.
tesekkürler simdi oldu
;) ;)