سلام
کد زیر بخشی از برنامه من هست که خلاصه شدش رو قرار دادم
مدار یه فرکانس متر هست که تایمر صفر زمان یک ثانیه رو می سازه و تایمر یک در مد کانتر هست.
اون قسمت motor هم تقریبا هر یک ساعت موتور رو می چرخونه که توسط همون یک ثانیه زمانش بدست میاد که فعلا کاریش ندارم (برنامه خلاصه شده است و نگید چه طور یک ساعت رو بدست اوردی)
1- وقتی که تایمر یا کانتر سر ریز میکنه و به برچسب سر ریز میره پس از بازگشت دقیقا به کجا میره؟فرض کنید برنامه توی قسمت Hi_temp و قبل از نوشتن در eeprom هست ایا دوباره بر میگرده و روی حافظه eeprom می نویسه یا نه؟
2-وقتی کلید hi که یک کلید سخت افزاری هست رو فشار می دم فرکانس نمایش داده شده روی نمایشگر زیاد میشه (بعد از مدتی دوباره فرکانس درست می شه) چرا؟
3-فرض کنید تو قسمت نوشتن در eeprom بود و سر ریز اتفاق افتاد اینجا میکرو صبر میکنه تا 5 میلی ثانیه تاخیر ایجاد بشه بعد پرش میکنه یا بدون تاخیر برنامه رو رها میکنه و پرش می کنه؟در حالت اول که مقدار زمان یک ثانیه به هم میریزه و فرکانس اشتباه می شه و در حالت دوم ممکن هست مقدار مورد نظر به خوبی در حافظه ذخیره نشه راه کار چیه؟(اخه توی کتاب گفته بعد از نوشتن در eeprom باید 2.5 تا 4 میلی ثانیه تاخیر بدیم)
کد زیر بخشی از برنامه من هست که خلاصه شدش رو قرار دادم
مدار یه فرکانس متر هست که تایمر صفر زمان یک ثانیه رو می سازه و تایمر یک در مد کانتر هست.
اون قسمت motor هم تقریبا هر یک ساعت موتور رو می چرخونه که توسط همون یک ثانیه زمانش بدست میاد که فعلا کاریش ندارم (برنامه خلاصه شده است و نگید چه طور یک ساعت رو بدست اوردی)
1- وقتی که تایمر یا کانتر سر ریز میکنه و به برچسب سر ریز میره پس از بازگشت دقیقا به کجا میره؟فرض کنید برنامه توی قسمت Hi_temp و قبل از نوشتن در eeprom هست ایا دوباره بر میگرده و روی حافظه eeprom می نویسه یا نه؟
2-وقتی کلید hi که یک کلید سخت افزاری هست رو فشار می دم فرکانس نمایش داده شده روی نمایشگر زیاد میشه (بعد از مدتی دوباره فرکانس درست می شه) چرا؟
3-فرض کنید تو قسمت نوشتن در eeprom بود و سر ریز اتفاق افتاد اینجا میکرو صبر میکنه تا 5 میلی ثانیه تاخیر ایجاد بشه بعد پرش میکنه یا بدون تاخیر برنامه رو رها میکنه و پرش می کنه؟در حالت اول که مقدار زمان یک ثانیه به هم میریزه و فرکانس اشتباه می شه و در حالت دوم ممکن هست مقدار مورد نظر به خوبی در حافظه ذخیره نشه راه کار چیه؟(اخه توی کتاب گفته بعد از نوشتن در eeprom باید 2.5 تا 4 میلی ثانیه تاخیر بدیم)
کد:
$regfile = "m16def.dat" $crystal = 8000000 Dim A As Long , I As Byte , B As Byte Dim Delta_t As Single Dim Delta_t_e As Eram Single '---------------------- Config Timer1 = Counter , Edge = Rising Ddrb.1 = 0 Portb.1 = 1 '------------------ Config Timer0 = Timer , Prescale = 256 '------------------ Enable Interrupts Enable Timer1 Enable Timer0 '------------------- On Ovf1 Count On Ovf0 8ms B = 0 Counter1 = 0 Timer0 = 6 Start Timer0 '----------------------- Do If Hi = 0 Then Gosub Hi_temp Waitms 150 Loop End '--------------------- 8ms: Incr I If I >= 125 Then '1s Timer0 = 6 A = B * 65536 A = A + Counter1 Home Lcd A B = 0 I = 0 Counter1 = 0 Timer0 = 6 End If Return '----------------------- Count: Incr B : Counter1 = 0 Return '---------------------- Motor: If F >= Motor_time Then Set In1 Reset In2 Set En Do If Ir_l = 0 Then Waitms 100 If Ir_l = 0 Then Exit Do End If Loop Reset En End If Return '------------------- Hi_temp: Delta_t = Delta_t + 0.1 Delta_t_e = Delta_t : Waitms 5 'write eeprom Return
دیدگاه