سلام
فرض کنید می خواهیم یک ساب روتین بنویسیم که شماره پورت و پایه میکرو را بهش بدیم و اون زمان high بودن بر روی اون پایه رو برگردونه:
مثلا دستور زیر:
pulsin(PINC,0x00)
یعنی پین صفر از پورت C
و ساب روتین رو بصورت زیر تعریف کنیم
unsigned int pulsin(unsigned char port_no,unsigned char pin_no){
unsigned int i=0;
while((port_no & pin_no)==1);
while((port_no & pin_no)==0);
while((port_no & pin_no)==1){
i++;
delay_us(998);
}
return i;
}
اما اگه بجای port_no & pin_no عبارت PINC.0 را قرار بدیم همه چی درسته!!! و مقدار خروجی تابع همون زمان بالا بودنه.
یعنی واقعا نمیشه یک پورت و پین رو به عنوان ورودی یک ساب روتین (تابع) قرار داد؟! اگه میشه مشکل در کجاست؟
ممنون
فرض کنید می خواهیم یک ساب روتین بنویسیم که شماره پورت و پایه میکرو را بهش بدیم و اون زمان high بودن بر روی اون پایه رو برگردونه:
مثلا دستور زیر:
pulsin(PINC,0x00)
یعنی پین صفر از پورت C
و ساب روتین رو بصورت زیر تعریف کنیم
unsigned int pulsin(unsigned char port_no,unsigned char pin_no){
unsigned int i=0;
while((port_no & pin_no)==1);
while((port_no & pin_no)==0);
while((port_no & pin_no)==1){
i++;
delay_us(998);
}
return i;
}
اما اگه بجای port_no & pin_no عبارت PINC.0 را قرار بدیم همه چی درسته!!! و مقدار خروجی تابع همون زمان بالا بودنه.
یعنی واقعا نمیشه یک پورت و پین رو به عنوان ورودی یک ساب روتین (تابع) قرار داد؟! اگه میشه مشکل در کجاست؟
ممنون
دیدگاه