30.03.2015 Views

3rmcTnUdr

3rmcTnUdr

3rmcTnUdr

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

kp = Keypad_Key_Click();<br />

if (kp == 2) kp = ‘8’;<br />

وهكذا بالنسبة لباقي األزرار،‏ فلو نظرنا للزر املكتوب عليه عالمة القسمة من املمكن أن نكتب<br />

أمر الشرط له هكذا:‏<br />

kp = Keypad_Key_Click();<br />

if (kp == 4) kp = ‘÷’;<br />

ولعلك إذا حبثت يف نافذة املساعدة جتد مثال كامل على ذلك ميكنك االستفادة منه ...<br />

مشكلة أخرى<br />

Keypad_Key_Click();<br />

فإنه يف حالة وجود<br />

عند تنفيذ الربنامج والوصول بالتنفيذ لألمر<br />

زر مضغوط عليه ترسل قيمته للميكرو ويف حالة عدم الضغط على أي زر فإن القيمة صفر يتم<br />

إرساهلا ووضعها يف املتغري ثم يستمر الربنامج يف التنفيذ من بعده وهو على عكس املطلوب،‏ فاملفرتض<br />

أال يتعدى الربنامج هذا األمر قبل الضغط على أي زر حيث أن سرعة التنفيذ أسرع من سرعتنا يف الضغط<br />

على الزر ففي الغالب سيستقبل القيمة صفر قبل أن نضغط على أي زر<br />

وحلل هذه املشكلة وهذا يتم من خالل وضع هذا األمر داخل حلقة while حبيث تكون كما باآلتي:‏<br />

while (kp == 0)<br />

{<br />

kp = Keypad_Key_Click();<br />

}<br />

بشرط وضع قيمة املتغري kp يف البداية بصفر،‏ وبالتالي يقوم امليكرو باختبار شرط while ألول مرة<br />

فيجد قيمة kp تساوى صفر وهذا معناه أن الشرط حمقق فيتم تنفيذ ما بداخل while وهو امر القراءة<br />

فاذا مل تكن قد ضغطت على أي زر فإن kp تبقي على قيمتها بصفر ملرة ثانية وبالتالي عند اختبار<br />

الشرط يكون حمقق مرة أخرى فيتم تنفيذ ما بداخل while مرة أخرى أيضا ... وهكذا حتى تضغط<br />

على أي زر فعندها يصبح لل kp<br />

قيمة خالف الصفر من 1 إىل 16 وعند اختبار الشرط تكون قيمة kp<br />

ال تساوى صفر فال يتحقق الشرط فال يتم تنفيذ أوامر while وختطاها إىل األمر التالي هلا،‏ وهذا هو ما<br />

نريده،‏ حيث لن يتم ختطي امر استقبال القيم من الكيباد إال بعد الضغط على احد األزرار وهذا مهم<br />

جدا.‏<br />

166<br />

الفصل الثامن:‏ التعامل مع لوحة املفاتيح Keypad<br />

elgammalelectronics.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!