سلام به همه دوستان و اساتید
با اجازه یسوال داشتم ؟
توی این برنامه ای که قرار دارم توی زیر روال وقفه باید مقدار موجود روی PIND.2 میکرو خونده بشه و داخل یک ارایه ثبت بشه
اینم کد
با ورود به وقفه تمام ریجستر های مربوط به وقفه خارجی 0 (ATMEGA8 )
غیر فعال کردم تا مطمن شم که PIND.2 بصورت وردی کار کیکنه و در اختیار وقفه خارجی قرار نداره
بعد در داخل حلقه FOR مقدار موجود در روی PIND.2 خوانده میشه و در داخل ارایه قرار میگیره....
نوع ارابه هم از نوع UNSIGNED INT هست
این برنامه توی شبیه ساز(PROTUSE)
کار میکنه و جواب هم میده ولی توی واقیت کار نمیکنه و همش عدد 0 رو برمیگردونه
که نباید اینطور باشه باید 1 هم نشون بده
دو تابع FUN1 وFUN2
برای ایجاد تاخیر بکار مبرند..
دوستان منتظر جوابتون هستم
با اجازه یسوال داشتم ؟
توی این برنامه ای که قرار دارم توی زیر روال وقفه باید مقدار موجود روی PIND.2 میکرو خونده بشه و داخل یک ارایه ثبت بشه
اینم کد
کد:
interrupt [EXT_INT0] void ext_int0_isr(void) { MCUCR=0x00; GIFR=0x00; GICR=0x00; x=0; for(i=0;i<14;i++) { fun1(); D[i]=PIND.2; fun2(); } GICR=0x40; GIFR=0x40; MCUCR=0x02; x=1; }
غیر فعال کردم تا مطمن شم که PIND.2 بصورت وردی کار کیکنه و در اختیار وقفه خارجی قرار نداره
بعد در داخل حلقه FOR مقدار موجود در روی PIND.2 خوانده میشه و در داخل ارایه قرار میگیره....
نوع ارابه هم از نوع UNSIGNED INT هست
این برنامه توی شبیه ساز(PROTUSE)
کار میکنه و جواب هم میده ولی توی واقیت کار نمیکنه و همش عدد 0 رو برمیگردونه
که نباید اینطور باشه باید 1 هم نشون بده
دو تابع FUN1 وFUN2
برای ایجاد تاخیر بکار مبرند..
دوستان منتظر جوابتون هستم
دیدگاه