کسی نیست توضیح بده خیلی فوریه آخه در ضمن مدارشو کسی میدونه چطوری باید ببندم،این برنامه رو روی مگا16 پروگرام کردم ولی هرثانیه اش فکر کنم حدود 3و4 دقیقه ست
سلام کسی میتونه در مورد این برنامه خط به خطش یه توضیح بده؟؟
/************************************************** ***
This program was produced by the - 1
2- CodeWizardAVR V2.04.4a Advanced
3- Project : Examples WWW.PICPARS.COM
Version : - 4
5- Date : 31/01/2011
6- Author : Seyed Mosen GHasemian
7- Company : www.picpars.com
Comments: 8
9- Chip type : ATmega16
10- Program type : Application
11-AVR Core Clock frequency: 8.000000 MHz
12- Memory model : Small
13- External RAM size : 0
14- Data Stack size : 256
************************************************** ***/
تا خط 14 که عملا تعارفات معمول را بجا اوردند
از خط 15 تا 18 توابع کتابخانه ای که توابع اونها داخل برنامه نیاز بوده فراخوانی شده
خط 19 کریستال 8 مگا هرتز انتخاب شده
از خط 20 تا 22 پورتی که ال سی دی روی اون قرار گرفته پورت A تنظیم شده(توسط خود کد ویزارد نوشته شده)
خط 23 متغیر های H و M وS از نوع کاراکتری انتخاب شدند و مقدار دهی شدند
خط 24 هم متغیر های Y,MO,D از نوع عددی بدون علامت انتخاب و مقدار دهی شدند
خط 25 یه تابع نوشته شده به نام clac هدف این تابع هم محاسبه روز ماه و سال میباشد
خط 26 متغیر d به عنوان متغیر عددی بدون علامت تعریف شده و مشخص کننده روز در برنامه است
خط 27 تا 29 برای محاسبه ماه های سال و تعداد روزهای هر ماه هست که مثلا خط 27 گفته اگه 6 ماه اول بود هر ماه 31 روزه بقیه هم به همین ترتیب
خط 30 چون برنامه در تاریخ 11/11 /1389 نوشته شده(از خط 24) مقدار اولیه Dبرابر 11 قرار داده شده و معرف روز است حال در خط 30 پس از هر بار اجرا شدن تابع calc در خط 47 مقدار D یکی افزایش میابد
خط 31 اگر متغیر D از مقدار d (که برای ماه های سال در خطوط 27 تا 29 تعریف شده)بیشتر شد
خط 32 مقدار D را برابر 1 قرار بده
خط 33 به تعداد متغیر MO (ماه ها)یکی اضافه کن
خط 34 اگر متغیر MO برابر 13 شد
خط 35 متغیر MO را برابر 1 قرار بده
خط 36 به تعداد متغیر Y(سال)یکی اضافه کن
وای خسته شدم!!
خط 37 زیر برنامه تابع وقفه در هنگام فعال شدن وقفه
خط 38 متغیر S که معرف ثانیه است را یکی اضافه کن
خط 39 اگه متغیر S برابر 59 شد
خط 40 متغیر S را 0 کن
خط 41 یه دونه به تعداد متغیر M که معرف دقیقه هست اضافه کن
خط 42 اگه متغیر Mبرابر 59 شد
خط 43 متغیر M را برابر 0 قرار بده
خط 44 به تعداد متغیر Hکه معرف ساعت هست یکی اضافه کن
خط 45 اگه متغیر H برابر 24 شد
خط 46 متغیر Hرا برابر 0 قرار بده
خط 47 تابع calc را فراخوانی کرده برای محاسبه روز و ماه و سال یعنی میخواد بگه تا 24 ساعت گذشت روز (متغیر D ) را یکی اضافه کن و بقیه ماجرا که توضیحش رفت
خط 48 اغاز برنامه اصلی
خط 49 متغیر buffer از نوع کاراکتری . به طول 32 رشته تعریف شده (اینجا گفته 32 چون می خواسته یه متغیر رشته ای تقریبا بلندی داشته باشه که بعدا اون را برای نمایش روی ال سی دی به کا ببره)
خط 50 ال سی دی رو از نوع 16 بیتی انتخاب کرده
خط 51 مال تنظیمات تایمر 2 است این ASSR دارای 4 قسمت هست بع ترتیب از راست به چپ با نام های :AS0,TCN0UB,OCR0UB,TCR0UB حالا این بیتا چیند و چکار می کنند و کی 1 میشند و کی 0 میشند من باید یه 30 خط بنویسم اگه به کتاب اقای پرتوی فر مراجعه کنید صفحه 219 کاملا توضیح داده شده
خط 52 این رجیستر (TCCR2)که در واقع همون رجیستر تایمر 0 هست منتها جهت تایمر 2 به کار رفته برای تنظیمات فعال و غیر فعال کردن تایمر همچنین جهت تنظیم فرکانس پالس ساعت داخلی و یا خارجی تایمر و تعیین نوع حساسیت تایمر به لبه بالا رونده یا پایین رونده پالس ورودی به پایه T0 هست بازم مراجعه کنید به کتاب پرتویی فر صفحه 177 یه جدول داره دید بزنید!
خط 53 مقدار اولیه تایمر 2 جهت شروع شمارش برابر 0 قرار داده شده
خط 54 مقدار رجیستر OCR برابر صفر قرار داده شده این رجیستر هشت بیتی با مقدار شمارنده(TCNT2) مقایسه میشود و از تطابق این دو برای تولید وقفه خروجی یا تولید شکل موج روی پایه OC0 استفاده میشه
خط 55 این رجیستر برای فعال سازی وقفه تایمر هست دارای 8 تا بیت هست به ترتیب از راست به چپ OCIE2,TOIE2,TICE1,OCIE1A,OCIE1B,TOIE1,OCIE0,TOIE0ب ازم مراجعه کنید به همون کتاب پرتویی فر صفحه 185 بحثش از اینجا خارجه
خط 56 فراخوانی وقفه
خط 57 حلقه تکرار بی نهایت (دیگه ضایعه !!)
خط 58 تبدیل به کاراکتر کردن متغیر های عددی روز و ماه و سال و دقیقه و ... با تقریب اعداد صحیح و ریختن اون ها داخل متغیر buffer جهت نمایش روی ال سی دی
خط 59 پاک کردن ال سی دی
خط 60 نوشتن متغیر buffer روی ال سی دی
خط 61 یه تاخیر جهت بهتر نشون داده شدن اعداد روی ال سی دی
اخیش تموم شد :wow:
گویند سنگ لعل شود در مقام صبر اری شود ولی به خون جگر شود
همیشه آخر همه چیز خوبه، اگر هم هنوز خوب نشده پس هنوز آخرش نشده(چارلی چاپلین)
دوستان من یکی ساختم
ساعت + آلارم با فایل صوتی(پخش فایل WAV تمای فرمت های 8بیت مونو و استریو) + تاریخ کاملا شمسی + محاسبه روزهای هفته و سال 366 و 365 روزه +دما+ قطع آلارم مدل Iphone (که دست روش میکشن قطع میشه)
همه در یک ATMEGA32 کاملا هم Real Time ، اصلا وقفه تو اجرا نمی افته
خودم وقتی نگاش میکنم حال میکنم، البته هنوز یکسری نواقص داره که دارم ذره ذره حلش میکنم
دوستان من یکی ساختم
ساعت + آلارم با فایل صوتی(پخش فایل WAV تمای فرمت های 8بیت مونو و استریو) + تاریخ کاملا شمسی + محاسبه روزهای هفته و سال 366 و 365 روزه +دما+ قطع آلارم مدل Iphone (که دست روش میکشن قطع میشه)
همه در یک ATMEGA32 کاملا هم Real Time ، اصلا وقفه تو اجرا نمی افته
خودم وقتی نگاش میکنم حال میکنم، البته هنوز یکسری نواقص داره که دارم ذره ذره حلش میکنم
ما نوکرتیم داداش
چشم ، کامله کاملش که کردم ، عکس و یا فیلم ازش میزارم
برای ساعت از ای سی کلاک استفاده کردم :job:
GPS >woooooooooooooooooooow
70000 پول بدم واسه یه ساعته فکستنی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :mrgreen:
[hr]
در رابطه با GPS هم یه برنامه کامل نوشتم ، خیلی عالیه ، تستش کردم ،جواب گرفتم ، تمام پروتکل ها رو میخونه
میتونید توی تاپیک راه اندازی GPS اون رو پیدا کنید و ازش استفاده کنید ، احتمالا صفحه 27 یا 28 باید باشه ، درست یادم نیست
دیدگاه