-
مشکل در پیاده سازی وقفه
سلام من یک مدار دارم که میخام وقتی وقفه فعال شد وضعیت پورت سی ام تغییر وضعیت پیدا کنه
وقتی وقفه فعال شد حالت پایه های cمعکوس حالت قبلش بشه با این تفاوت که این بین پایه های c یک چند ثانیه ای صفر بمونن
کسی از دوستان میتونه پیشنهاد بده من برنامه زیر و نوشتم جواب نداد [Dear Guest/Member you can't see link before replyclick here to register] [Dear Guest/Member you can't see link before replyclick here to register] [Dear Guest/Member you can't see link before replyclick here to register]
میخام مدار حافظه دار بسازم یک جورایی که با وقفه وضعیت پورت سی ذخیره بشه و بعد از طی عملیاتی روی پورت سی دوبازه بازگردانده بشه
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if(PINB.1==0)
{
l++;
if (l<2)
{
g=0b00001001;
PORTC=g;
}
PORTC=0b00000000;
delay_ms(1000);
g=~g;
PORTC=g;
}
}
-
قرار دادن یه تاخیر توی روتین وقفه اصلا ایده خوبی نیست.
همچنین با توجه به اولویت وقفه در 8بیتی ها این برنامه شما هیچ کاری به نظرم نمیکنه. در واقع شما توی این برنامه تون با اجرای روتین وقفه، وضعیت پینی رو تغییر می دید و 100 میلی ثانیه صبر می کنید و دوباره بر میگردید به برنامه اصلی تون توی حلقه بی نهایت. بعبارتی من برنامه شما رو ندیده میگم کار نمیکنه. بگید چیکاری می خوایید بکنید تا بهتون پیشنهاد بدیم. شاید بتونیم کمکتون کنیم. البته به طور کامل توضیح بدید. من سوالات ناقص رو حل نمیکنیم یا بهشون جواب نمیدم. اگه دیر هم کنید(برید یکسال دیگه بیاد) تقریبا همین طور خواهد بود.:0013: