السلام عليكم ورحمة الله وبركاته
فى البداية أخى أود أن أخبرك بأنك استخدمت الطريق الأطول فى كتابة البرنامج فأنا أرى أنك أطلت كثيرا فى كتابة البرنامج وكان يمكنك أن تريح بالك كثيرا لو سلكت طريقا آخر أسهل وستكون مراجعة الخطأ أسهل كثيرا
عموما.... إذا ألقيت نظرة متفحصة على البرنامج الذى كتيته ستجد أكثر من خطأ قد وقعت أنت فيه ..... سأذكر لك منه أحدهما ( أظن أنه الأهم ) .......ماهو؟؟
لتعرف الخطأ ألق نظرة متفحصة على الأوامر التالية ( وهى جزء من البرنامج )
كود:
okay:
ok=Keypad_Read();
if(ok==14)
{
out_leds();
lcd_cmd(lcd_clear);
lcd_out(1,5,"out");
}
ستجد أنك فى هذا الجزء استخدمت الدالة keypad_read لتقرأ من المستخدم زر التأكيد ... حتى هنا لاتوجد مشكلة
ثم أتبعتها بجملة if .. إن كان الزر المضغوط هو # إذن نفذ الذى بين القوسين ( الإخراج على المخارج )
المشكلة ياأخى أن البيك( كما تعلم ) سريع جدا لذلك ستكون القيمة الراجعة من الدالة keypad_read هى صفر لأن المستخدم لم يدخل بعد زر التأكيد ( يعنى كأنك واقف جنب قطار وتحاول أن تلحق به وهو مشى بالفعل وأنت لم تدخل زر التأكيد بعد )
حتى لاأطيل عليك .... حل تلك المشكلة أن تقوم بكتابة الأمر
حتى تجعل البيك يرجع ثانية لينتظر منك إدخال زر التأكيد
********************************
سؤال :
لما لم توصل على البورتات D و E ليدات مثلا لترى حالة المخارج ؟؟!!
********************************
نصيحة :
حاول وأنت تكتب البرنامج أن تسهل على نفسك مراجعته بأن تكتب مثلا تعليقات بجانب الأوامر الهامة فى البرنامج مثلا أو أن تنسقه كشكل عام لتتضح لك الأمور
************************************
أتمنى لك التوفيق والنجاح إن شاء الله .... كل عام وأنتم جميعا بخير