أى كومبايلر تستخدم؟
المسألة حسب الدائرة و البرنامج
لو البرنامج محدود و لديك الوقت الكافى لإستخدام دوائر تأخير و الكلفة المادية ذات أهمية إذن دوائر التأخير أنسب
أما لو العكس فيمكن إضافة مكثفات مثلا و فى حال كون عدد المفاتيح كبير و السرعة ذات أهمية قصوى فقد تستخدم أسلوب المقاطعة لقراءة المفاتيح فقط عند الضرورة أو يوضع أحيانا ميكرو للقراءة و آخر لتنفيذ المهام
|
استخدم CCS C compiler
بالنسبة للبرنامج الذي اعمل عليه حاليا يقوم بقراءة اربعة مفاتيح وبناء على حالة كل مفتاح يقوم الميكرو بتنفيذ امر معين يناسب كل مفتاح ..
الذي قمت بعمله كالتالي
كود:
int1 read_start(void) {
if (READ_STARTBT==1) return 1;
delay_ms(50); // wait for key to settle
if (READ_STARTBT==1) return 1; // was a false key
return 0; // key ok so return valid
}
هذا فنكشن لقراءة احد المفاتيح ..
كود:
for(del=0;del<1000;del++){
START=read_start();
CHANGE=read_plus();
CHANGEM=read_minus();
SET=read_set();
if(START==0|CHANGE==0|CHANGEM==0|SET==0)BREAK;//IF ANY SWITCH PRESSED BREAK THE DELAY LOOP ^_^
DELAY_MS(1);
}
هذا جزء قراءة المفاتيح داخل الحلقة اللانهائية في البرنامج
حيث انني بحاجة لزمن تاخير بمقدار ثانية فقمت بعمل حلقة للتاخير باستخدام for
وداخلها اقوم بفحص المفاتيح