من متوجه نمیشم .. کجاش دیکود کردنه؟! دیکود یعنی کدگشایی انجام بده .. مثلا از دل یه کد چها ورودی 16 تا آدرس مختلف استخراج کنه .. حالا اینجا چیه قضیه؛ نمیدونم .. موفق باشید ..
long i;
void main(void)
{
PORTA=0xFF;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
while (1)
{
i=PINA&0x0f;
if(i<9)PORTB=pow(2,i+1)-1;
else PORTC.0=1;//for binary code 0 to 15 this line should be : PORTC=pow(2,i+1)-9;
delay_ms(50);
};
}
پایه های 0 تا 3 پورت A خونده میشه و توی i ذخیره میشه.
اگر i صفر باشه که led ها خاموش هستن
اگر 1 تا 8 باشه روی پورت b به تعداد i اled روشن میشه
اگر 9 باشه led نهم روی پین c.0 روشن میشه
یه مکث 50 میلی ثانیه
pow(2,i+1)-1 یعنی 2 به توان i+1 منهای 1
امید وارم متوجه شده باشید :question:
در صورتی که برنامه متوجه شده باشید چند ایراد کوچیک داره که احتمالا اونا رو هم باید بفهمید. oo:
اگر ایراد رو پیدا نکردید بگید تا من بگم کجاست. :biggrin: :job:
خردمند به کار خویش تکیه میکند و نادان به آرزوی خویش . « حضرت علی (ع) »
اگر همیشه همان کاری را که انجام داده اید تکرار کنید ، چیزی بیش از آنچه تا کنون به دست آورده اید، به دست نخواهید آورد
مارک تواین می گوید: بهتر است دهان خود را ببندید و ابله به نظر برسید تا اینکه آن را باز کنید و همه تردیدها را از میان ببرید !!!
سلام nimasaboor از کمکی که کردین ممنونم من که گفتم تو برنامه نویسی اماتورم :redface: تازه دارم شروع می کنم میشه لطف کنید خودتون بفرمایید
در ضمن اگه میشه یه چنتا مثال ساده مثل همین بزارین تا روش کار کنم تا یکمی هم من به مخم فشار بیارم
یه چیزه دیگه میشه مدارشو برام بکشید ببینم با اینی که من بستم درسته یا نه...
آقا مجید ببخشید دیر شد :icon_razz:. دیشب مهمان تقریبا رسمی داشتم نمی شد بشینم پای کامپیوتر.
عکس مدار مورد نظر من پایینه البته من ادعایی ندارم و ممکنه مداری که کشیدم مثل برنامه ام چون دوتاشون عجله ای بودن دارای اشکالاتی باشه. در این صورت انشاءالله شما به بزرگی خودت می بخشی. فقط یه چیزی اونم اینکه به دلیل تنبلی مقاومت و led های روی پورت B رو نکشدیم (8 عدد led و مقاومت) مقاومت R1 تا R4 مقاومت های 10k هستن.(اسم شون رو توی این مدار نمی دونم اگر pull up نباشه)
حالا برنامه :
اونجای برنامه که شرط بررسی میشه (if) اگر کمتراز 9 باشه به همون تعداد led روشن میشه اگر 9 باشه فقط یه led روشن میشه اونم روی پین C.0 در صورتی که باید همه 9 led روین بشه.
توی خطی که else نوشته شده بعد از // توضیح نوشته شده که از نظر عملی اشتباهه و نیازی بهش نیست.(اگر خواستی توضیح میدم)
خط قرمز اطلاح شده برنامه قبله که شما خودت توی codecision باید اعمال کنی
شما برنامه های دیگه رو بیخیال فعلا این برنامه رو کامل بگیر بعد به برنامه دیگه هم می رسیم.
اگر من مثال بزنم شما کامل نگیری به هیج دردی نمی خوره.
امیدوارم موفق باشی
سوالی بود در خدمتتون هستم
خردمند به کار خویش تکیه میکند و نادان به آرزوی خویش . « حضرت علی (ع) »
اگر همیشه همان کاری را که انجام داده اید تکرار کنید ، چیزی بیش از آنچه تا کنون به دست آورده اید، به دست نخواهید آورد
مارک تواین می گوید: بهتر است دهان خود را ببندید و ابله به نظر برسید تا اینکه آن را باز کنید و همه تردیدها را از میان ببرید !!!
شرمنده یه اشکال دیگه برام پیش اومده :redface:
من می خوام یه فلاشر ساده با میکرو طراحی کنم که حالتهای مختلفی رو تو خروجی داشته باشم یه برنامه هم براش نوشتم ولی تو پروتئوس که تستش می کنم هیچ LED روشن نمی شه برنامم اینه اگه توش اشکالی هست راهنمایی کنید :cry2:
من با پروتئوس شبیه سازی نکردم و نمی دونم چطوریه ولی فکر می کنم برنامه مشکلی نداره و شبیه سازی تون یه گیری داره. برنامه رو ویرایش کردم می تونی دانلود کنی. :redface: :icon_razz:
انشاالله مشکل شبیه سازی رو هم یا یکی از اساتید سایت جواب بده یا خودم روش کار می کنم و جواب رو پیدا می کنم.
خردمند به کار خویش تکیه میکند و نادان به آرزوی خویش . « حضرت علی (ع) »
اگر همیشه همان کاری را که انجام داده اید تکرار کنید ، چیزی بیش از آنچه تا کنون به دست آورده اید، به دست نخواهید آورد
مارک تواین می گوید: بهتر است دهان خود را ببندید و ابله به نظر برسید تا اینکه آن را باز کنید و همه تردیدها را از میان ببرید !!!
من با پروتئوس شبیه سازی نکردم و نمی دونم چطوریه ولی فکر می کنم برنامه مشکلی نداره و شبیه سازی تون یه گیری داره. برنامه رو ویرایش کردم می تونی دانلود کنی. :redface: :icon_razz:
انشاالله مشکل شبیه سازی رو هم یا یکی از اساتید سایت جواب بده یا خودم روش کار می کنم و جواب رو پیدا می کنم.
سلام اقا نیما اول از همه خیلی ممنونم که وقت می زارین رو سوالای من :applause:
بالاخره تونستم مشکلشو حل کنم مشکل از برنامه نبود از پروتئوس بود :rolleyes:
یه سوال کوچولوی دیگه داشتم :redface:می خواستم اگه میشه یه توضیحی تو قسمت code wizard AVR اونجایی هست که پورت خروجی و ورودی
تعریف میکنیم .اصولا چه فرقی بین P ,T هست
t به معنای tri-state و p به معنای pull-up ....
اگه روی p بزاری مقاومت پولپ یا همون بالاکش داخلی میکرو فعال میشه و اگه هیچ چیزی به پورت وصل نباشه هم مقدار 1 منطقی روی پایه وجود خواهد داشت ... این کار رو توی برنامه میتونی با 1 کردن رجیستر port و صفر کردن DDR انجام بدی ...به عنوان مثال میتونی با استفاده از این حالت یک کلید رو بدون هیچ مقاومتی به میکرو وصل کنید .....
ولی اگه T باشه هیچ پولپی در کار نیست و اگه به پایه چیزی وصل نباشه حالت tri-state داره و ممکنه توی پین مقدار یک یا شاید صفر وجود داشته باشه .
دقیقا همین چیزی که آقای عرفانی نوشتند منم نوشتم ولی یه دفعه اینترنتم مشکل پیدا کرد نتونستم بفرستم.
خلاصه دست ایشون درد نکنه چون منم نمی دونستم چیه یه سرچ کردم و وقتی اومدم جواب بدم دیدم ایشون نوشتن و از اوشون تشکر می نماید :rolleyes:
اینم نمونه کد :
* to make port a as input with pull-ups enabled and read data from port a
DDRA = 0x00; //make port a as input
PORTA = 0xFF; //enable all pull-ups
y = PINA; //read data from port a pins
* to make port b as tri stated input
DDRB = 0x00; //make port b as input
PORTB = 0x00; //disable pull-ups and make it tri state
* to make lower nibble of port a as output, higher nibble as input with pull-ups enabled
DDRA = 0x0F; //lower nib> output, higher nib> input
PORTA = 0xF0; //lower nib> set output pins to 0,
//higher nib> enable pull-ups
باتشکر
امیدوارم موفق باشید
خردمند به کار خویش تکیه میکند و نادان به آرزوی خویش . « حضرت علی (ع) »
اگر همیشه همان کاری را که انجام داده اید تکرار کنید ، چیزی بیش از آنچه تا کنون به دست آورده اید، به دست نخواهید آورد
مارک تواین می گوید: بهتر است دهان خود را ببندید و ابله به نظر برسید تا اینکه آن را باز کنید و همه تردیدها را از میان ببرید !!!
دیدگاه