(۱۰-دى-۱۳۹۰, ۱۹:۵۳:۱۵)parviz2012 نوشته است: [ -> ]توضیح برنامت؟ توضیح بده ببینم چی کار میکنه برنامت. کد رو باید بفهمیم.
حاجی کل برنامه رو توضیح بدم ؟ خیلیه که !!!
![Shy Shy](https://www.iranled.com/forum/images/smilies2/shy.gif)
.خط اول معرفی آیسی میکرو atmega 8
2.خ دوم فرکانس کاری میکرو (که بین 1مگاهرتز تا 16 مگاهرتز میتواند باشد ) هر چی این فرکانس پایین باشد سرعت کار میکرو (سرعت خواندن برنامه بیشتر میشود .
3.خ سوم وچهارم پیکره بندی کردن پورت های B, D به عنوان خروجی
4.خ پنجم پیکره بندی پورت C (در atmega 8 ) که دارای 6 ورودی آنالوگ به دیجیتال میباشد ( ADC) به عنوان ورودی آنالوگ (برای وصل کردن سنسور دما به این پورت )
5. معرفی متغییر ها برای ورودی آنالوگ باید یک متغییر از نوع word تعریف کنیم
6. start adc برای راه اندازی ورودی آنالوگ
7. معرفی سه گروه با دستور declare sub نام گروه ها اختیاری میباشد
8.در درون حلقه do loop که بطور دایم تکرار میشود و وقتی میکرو به این خط برسد از این حلقه دیگر بیرون نمیرود و دایم درون این حلقه میچرخد و دستورات درون این حلقه را انجام میدهد <>>><> دستورات درون این حلقه چیه؟><>>>>>>> با دستور call گروه ها را میخوانیم یعنی وقتی میکرو به دستور call میرسد به گروه خوانده شده پریده و دستورات این گروه را انجام میدهد و وقتی به دستور end sub رسید یعنی آخر گروه و بر میگردد دوباره تو حلقه و دوباره گروه بعد این دستورات به سرعت خوانده میشود یعنی هر سه گروه کار خود را انجام میدهند .
9. با دستور sub گروه شروع میشود و بادستور end sub گروه به پایان میرسد
مثلا گروه temp کار خواندن ورودی های آنالوگ (adc0,adc1) دارد یعنی همون دما رو که توسط lm35 سنس میشود به صورت ولتاژ به ورودی های آنالوگ داده میشود و میکرو به دیجیتال تبدیل میکند (برای اینکه فقط دمای بالای صفر را بتوانید بخوانید به یک ورودی آنالوگ به دیجیتال احتیاج دارین ولی حالا برای خواندن دمای منفی به دو ورودی ADC احتیاج دارین .
دستور if then شرط هست <> مثلا میگوییم اگر c کوچکتر از 0 شد فلان کار را بکن و این شرط با دستور
end if پایان میابد.
علامت ( - ) تفریق و علامت ( / ) تقسیم و علامت ( = ) مساوی میباشد که از آنها استفاده کردیم >>>>>>>>>>>> یعنی وقتی میگوییم portd=&b0111 >>>> یعنی عدد باینری 0111 را در خروجی پورت D قرار بده
علامت ( : ) برای اینکه دستورات را در یک خط بنویسیم از این علامت استفاده میکنیم و گرنه باید هر دستور را در یک خط بنویسیم .
کار گروه refresh چیه ؟؟؟<>>>> این گروه عدد مقدار هگزا (عدد برای نمایش در 7segment ) از زیر مجموعه 7seg را در خروجی پورت b میدهد .
زیر مجموعه 7seg چیه ؟؟؟ <>>> مثلا برای اینکه عدد 0 در سون سگمنت نشان داده شود باید عدد هگزا 3F در خروجی ظاهر شود و برای عدد 1 باید عدد هگزا 6 در خروجی ظاهر شود به همین ترتیب .
دستور mod 10 چیه ؟؟؟<><<>>> این دستور یگان عدد را بدست میاورد.