پاسخ : دستور به میکرو توسط خط تلفن (فوری)
سلام. مدار DTMF رو جداگانه و همونطور که شما میگید بستم و وقتی یک عدد رو میزنی پایه std یک لحظه 1 و بعد دوباره 0(خاموش) میشه. تنها مشکلی که وجود داره اینه که کد تولید شده در خروجی آی سی همون معادل BCD عدد فشرده شده نیست.
* مدار آشکارساز رو دوباره بستم(البته خازن c1 رو عوض کردم) و خوشبختانه دیگه بلافاصله خط اشغال نمیشه و همچنین پایه وقفه int0 میکرو هم درست عمل میکنه اما الآن مشکلی که دارم اینه که (طبق برنامه میکرو)میکرو باید 5 تا بوق آزاد صبر کنه و بعد وقفه int0 که به رله وصل شده رو فعال کنه
اما
وقفه بعد یک بوق فعال میشه.به نظرتون علتش چی هست؟
به نظر شما این قسمت از کد برای شمردن تعداد زنگها و فعال کردن وقفه int0 کافیه؟ مشکلی نداره؟
interrupt[EXT_INT0]
void ring(void)
{
tone++;
if(tone==5)//تعداد زنگ ها
{
PORTB.5=0;//فرمان وصل رله برای اشغال کردن خط تلفن
tone=0;
سلام. مدار DTMF رو جداگانه و همونطور که شما میگید بستم و وقتی یک عدد رو میزنی پایه std یک لحظه 1 و بعد دوباره 0(خاموش) میشه. تنها مشکلی که وجود داره اینه که کد تولید شده در خروجی آی سی همون معادل BCD عدد فشرده شده نیست.
* مدار آشکارساز رو دوباره بستم(البته خازن c1 رو عوض کردم) و خوشبختانه دیگه بلافاصله خط اشغال نمیشه و همچنین پایه وقفه int0 میکرو هم درست عمل میکنه اما الآن مشکلی که دارم اینه که (طبق برنامه میکرو)میکرو باید 5 تا بوق آزاد صبر کنه و بعد وقفه int0 که به رله وصل شده رو فعال کنه
اما
وقفه بعد یک بوق فعال میشه.به نظرتون علتش چی هست؟
به نظر شما این قسمت از کد برای شمردن تعداد زنگها و فعال کردن وقفه int0 کافیه؟ مشکلی نداره؟
interrupt[EXT_INT0]
void ring(void)
{
tone++;
if(tone==5)//تعداد زنگ ها
{
PORTB.5=0;//فرمان وصل رله برای اشغال کردن خط تلفن
tone=0;
دیدگاه