تدريب :
المطلوب التعرف على الأقسام (البلوكات) الرئيسية فى البرنامج (ليس المطلوب الآن فهم طريقة عمل البرنامج ):
كود:
/*
* Project name:
PWM_Test_01 (PWM library Demonstration )
MCU: PIC16F877A
Oscillator: XT, 4.0 MHz
SW: mikroC PRO
* NOTES:
None.
*/
unsigned short i, j;
InitMain void () {
PORTB = 0;
TRISB = 0;
ADCON1 = 0x0F;
PORTA = 255;
TRISA = 255;
PORTC = 0x00;
TRISC = 0;
Pwm_Init (5000);
} // ~!
void main () {
initMain ();
i = 127;
j = 0;
Pwm_Start ();
while (1) {
if (Button (& PORTA, 0,1,1))
i + +;
if (Button (& PORTA, 1,1,1))
i--;
if (j !=i) {
Pwm_Change_Duty (i);
j = i;
PORTB = j;
}
Delay_ms (200);
}
}//~!
الأقسام :
القسم الأول : التعليقات Comments:
كود:
/*
* Project name:
PWM_Test_01 (PWM library Demonstration )
MCU: PIC16F877A
Oscillator: XT 4.0 MHz
SW: mikroC PRO
* NOTES:
None.
*/
هذا الجزء من البرنامج هو تعليقات وهو مسؤول عن توثيق البرنامج . عند ترجمة البرنامج فإن هذه النصوص لن تؤخذ فى الاعتبار من جانب المترجم .
القسم الثانى : الرأس headerوإعلان المتغيرات العمومية global variables:
كود:
unsigned short i, j;
فى هذا القسم تم إعلان متغيرات عمومية global variable للبرنامج .
القسم الثالث : الدوال الفرعية subroutines :
كود:
InitMain void () {
PORTB = 0;
TRISB = 0;
ADCON1 = 0x0F;
PORTA = 255;
TRISA = 255;
PORTC = 0x00;
TRISC = 0;
Pwm_Init (5000);
} // ~!
هذه الدالة هى دالة فرعية للبرنامج وتستدعى بواسطة المبرمج بالعبارة :
القسم الرابع : الدالة الرئيسية :
كود:
void main () {
InitMain ();
i = 127;
j = 0;
Pwm_Start ();
while (1) {
if (Button (& PORTA, 0,1,1))
i + +;
if (Button (& PORTA, 1,1,1))
i--;
if (j !=i) {
Pwm_Change_Duty (i);
j = i;
PORTB = j;
}
Delay_ms (200);
}
}//~!
على الرغم من أن الدالة الرئيسية تأتى فى آخر ترتيب كتابة البرنامج إلا أنها سوف تكون أول دالة يتم تنفيذها عن طريق المعالج .
إرشادات :
لماذا نستخدم الدوال الفرعية ؟ - للسماح بإعادة استخدام الكود الذى تم بناءه (سواء بواسطتك أو بواسطة مبرمج آخر) .
- لمنع تكرار مقطع من الكود عدة مرات داخل نفس البرنامج .
- للسماح بتغيير قطعة من الكود بسرعة أكثر . عند استخدام الدالة تحتاج فقط لتغيير ما هو مطلوب داخل الدالة .
- تستخدم خاصة فى البرامج الطويله والصعبة على الفهم .
- قراءة وتتبع البرنامج بسهولة .
- تقسيم البرنامج إلى أجزاء (بلوكات) والتى يمكن فهم منطق عمل كل على حدة (الوظيفة – المهمة).