سلام به همه دوستان و اساتید
با اجازه یسوال داشتم ؟
توی این برنامه ای که قرار دارم توی زیر روال وقفه باید مقدار موجود روی 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
برای ایجاد تاخیر بکار مبرند..
دوستان منتظر جوابتون هستم











;
دیدگاه