PDA

نسخه کامل مشاهده نسخه کامل : فراخوانی تابع فرعی



masoud6188
16-11-2016, 11:34
با سلام

دوستان برنامه ای نوشتم که یک پورت از تراشه (D) یک ال ای دی فقط روشن خاموش میکنه و پورت C از تراشه یک حلقه بالا رونده هست حالا برنامه اینه نمی دونم فراخوانی تابع در برنامه اصلی درست هست یا خیر و یا باید در جای دیگر نوشت

نام تابع فرعی dis هست

اشکلات برنامه :::::: مدت زمان روشن و خاموش شدن ال ای دی از پورت D در مدت زمان حلقه بالا شمارنده تاثیر گذاشته
دوستان کسی هست راهماییی کنه؟؟؟؟؟؟؟؟؟؟؟؟؟//



#include <mega8.h>
#include <delay.h>




void dis ()
{
PORTD.1=1; delay_ms(500);
PORTD.1=0; delay_ms(500);


}






void main (void)
{
int e,f,g,h=0 ;

DDRD=0XFF;PORTD=0X00;
DDRC=0XFF; PORTC=0X00;

PORTD.0=1;\power on



while (1)

{






while(h==0)
{





for (e=0;e<=5;e++)
{

if(e==0)
{
for(g=0;g<=2;g++)
{
for(f=64;f>=1;f=f/2)

{
dis ();
PORTC=f;delay_ms(180);


}
}

}



if(e==1)
{
for(f=32;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;delay_ms(180);

}

}

if(e==2)
{
for(f=16;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;PORTC.4=1;delay_ms(180);

}


}

if(e==3)
{
for(f=8;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;PORTC.4=1;PORTC.3=1;delay_ms(180 );
}
}

if(e==4)
{
for(f=4;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;PORTC.4=1;PORTC.3=1;PORTC.2=1;de lay_ms(180);
}

}

if(e==5)
{
for(f=2;f>=1;f=f/2)
{

for(g=0;g<=2;g++)
{
dis ();
PORTC=f;PORTC=0XFF;delay_ms(200);
PORTC=0X00;delay_ms(200);

}
if(f==1)
{
h=0;
}
}

}










}



























}





















































}




















}

Ali_RNT
16-11-2016, 17:57
با سلام

دوستان برنامه ای نوشتم که یک پورت از تراشه (D) یک ال ای دی فقط روشن خاموش میکنه و پورت C از تراشه یک حلقه بالا رونده هست حالا برنامه اینه نمی دونم فراخوانی تابع در برنامه اصلی درست هست یا خیر و یا باید در جای دیگر نوشت

نام تابع فرعی dis هست

اشکلات برنامه :::::: مدت زمان روشن و خاموش شدن ال ای دی از پورت D در مدت زمان حلقه بالا شمارنده تاثیر گذاشته
دوستان کسی هست راهماییی کنه؟؟؟؟؟؟؟؟؟؟؟؟؟//



#include <mega8.h>
#include <delay.h>




void dis ()
{
PORTD.1=1; delay_ms(500);
PORTD.1=0; delay_ms(500);


}






void main (void)
{
int e,f,g,h=0 ;

DDRD=0XFF;PORTD=0X00;
DDRC=0XFF; PORTC=0X00;

PORTD.0=1;\power on



while (1)

{






while(h==0)
{





for (e=0;e<=5;e++)
{

if(e==0)
{
for(g=0;g<=2;g++)
{
for(f=64;f>=1;f=f/2)

{
dis ();
PORTC=f;delay_ms(180);


}
}

}



if(e==1)
{
for(f=32;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;delay_ms(180);

}

}

if(e==2)
{
for(f=16;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;PORTC.4=1;delay_ms(180);

}


}

if(e==3)
{
for(f=8;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;PORTC.4=1;PORTC.3=1;delay_ms(180 );
}
}

if(e==4)
{
for(f=4;f>=1;f=f/2)
{
dis ();
PORTC=f;PORTC.5=1;PORTC.4=1;PORTC.3=1;PORTC.2=1;de lay_ms(180);
}

}

if(e==5)
{
for(f=2;f>=1;f=f/2)
{

for(g=0;g<=2;g++)
{
dis ();
PORTC=f;PORTC=0XFF;delay_ms(200);
PORTC=0X00;delay_ms(200);

}
if(f==1)
{
h=0;
}
}

}










}



























}





















































}




















}

خیلی دلم میخواست کدتون رو بخونم ولی خیلی سخته! لطفا برای نوشتن کد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

استفاده کنید. کد های طولانی مثل این رو هم بهتره آپلود کنید و قرار بدید. ممنون.

masoud6188
02-12-2016, 17:08
سلام مهندس
برنامه به صورت زیپ شده فکر کنم برنامه ساده پورت c یه حلقه بالا رونده هست ووووووووووو پورت d هم می خوام یک ال ای دی خاموش روشن بشه دو کار جدا از هم و مستقل

masoud6188
02-12-2016, 17:18
لینک نمیشه توی انجمن گذاشت error میده
دوستان کسی می دونه که چطور باید url وارد انحمن کرد توی تنیظمات هم رفتم تنظیم کردم اما نشد:n38:

اگر ایمیل دارید تا براتون ایمیل کنم

masoud6188
07-12-2016, 15:03
ممنون مهندس این هم لینک


http : / / s9 . picofile .com /file / 8277576184 / 1 . zip . htm




http : // s9 . picofile .com / file / 8277576184/ 1.zip . htm