|
بالنسبة لتأخرك فى الرد المهم انك تكون بخير
|
الحمدلله ... جزاك الله خير على هذه المشاعر الطيبة.
=========================================
ملاحظاتي على الكود الذي كتبته
1- استخدام عدد كبير من جملة if وليس هناك حاجة لذلك
2من الأفضل أن لا تفعل ذلك بشكل مباشر (تختبر قيمة البورت ) ولكن ضع القيمة الموجودة في البورت في متغير معين
ثم اختبر قيمة هذا المتغير . ومن ثم نفذ الأوامر التي تريدها على البورت بجعل
هناك علاقة ما بين البورت وبين المتغير .
==========================================
أخي الكريم انتهيت والحمد لله من كتابة هذا الجزء من الكود أرجو أن تعجبك فكرته وأن تستفيد منه .
هو المفروض انه هيبد من رقم غير معروف (من 1 : 99) ثم يبدأ فى العد التنازلى الى الصفر(سبب كثرة جمل if)
ولكن فى هذا الكود انا سأبدأ بالعد من الرقم 15 الى الصفر
|
جعلت البرنامج يؤدي هذه الوظيفة التي تذكرها أنت . ولكن دون استخدام هذا العدد من جملة if
ولكن هنا في هذا البرنامج لتغيير القيمة التي سيبدأ البك العد منها ستغير القيمة الموجودة في الآحاد والعشرات
أي ستغير قيمة كل من المتغيرين الخاصين بالآحاد والعشرات وهما ones و tens
وإليك الكود الذي كتبته
كود:
unsigned char B[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
unsigned char ones,tens;
void show(){portb=B[tens];
portc=B[ones];
delay_ms(1000);}
void main()
{
start:
trisb=0;trisc=0;
tens=1;
ones=5;
m:
show(); //show ones and tens on seven segments
if(ones==0&&tens==0){goto start;} //if two seven_segment=0 goto starting of program
if(ones==0){tens--;ones=9;show();} //if ones =0 make ones=9 and subtract one from tens
ones--; //count down
goto m;
}
==========================================
وإليك شرح الطريقة التي كتبت بها الكود ::-
أولا : سيقوم البرنامج بتوظيف الدخل والخرج عن طريق trisb,trisc
==========================================
ثانيا: بوضع قمية ابتدائية للآحاد والعشرات والتي سيبدأ البك العد التنازلي من هذه القيمة ( وتم وضع هذه القيم في متغيرين هما ones للآحاد و tens للعشرات )
==========================================
ثالثا:سيقوم البرنامج باستدعاء دالة اسمها show وظيفة هذه الدالة هي عرض القيمة الخاصة بالآحاد والعشرات على السفن سيجمنت .
==========================================
رابعا: يقوم البرنامج بالعد التنازلي حيث ينقص من قيمة الآحاد (في كل مرة ينقص واحد) عن طريق الأمر
==========================================
خامسا : ليقوم البرنامج بالعد التنازلي بشكل سليم نستخدم جملة if تختبر هل وصلت قيمة الآحاد إلى صفر .. فإذا حدث ذلك تقوم بتنقيص واحد من العشرات . عن طريق الأمر ;--tens
وذلك عن طريق الأوامر التالية
كود:
if(ones==0){tens--;ones=9;show();}
==========================================
سادسا : ميزة إضافية في برنامج العداد وهي بدء العد من جديد إذا كانت قيمة الآحاد والعشرات كلاهما بصفر. وذلك عن طريق الأوامر التالية
كود:
if(ones==0&&tens==0){goto start;}
==========================================
وإذا واجهتك صعوبة في فهم أي جزء من الكود أخبرني وأنا تحت أمرك ..
==========================================
وفقنا الله جميعا لما يحب ويرضى ورزقنا وإياكم العلم النافع
والسلام عليكم ورحمة الله وبركاته