البرنامج الرابع :
التحكم فى تفرع البرنامج عن طريق :
حلقة الشرط باستخدام عبارة IF :
إتخاذ القرار Decision Making:
أسهل طريقة لبيان أساس إتخاذ القرار هى "تغيير الخرج بناء على حالة الدخل"
الدائرة الكهربية :
المفتاح يولد دخل على الطرف RC0ويظهر الخرج على الطرف RD0 .
البرنامج :
يتكون البرنامج كالعادة من حلقة “ while ”غير منتهية ولكن تحتوى على عبارة لفصل المنفذ Port D فى الحالة الابتدائية :
PORTD = 0 ; // Clear all outputs
يتم "قراءة حالة الدخل" داخل الحلقة باستخدام التعبير :
x = PORTC.B0; // Get input state
كنتيجة لتنفيذ هذه العبارة يم تخصيص القيمة واحد 1أو صفر 0للمتغير x حسب حالة وضع المفتاح (كما فى الدائرة الكهربية , واحد فى حالة فصل و صفر فى حالة توصيل المفتاح ) .
بعد ذلك يتم "اختبار القيمة بعبارة if " وبناء على النتيجة يتم تحديد الخرج .
لاحظ أن الاختبار يستخدم مؤثر " التساوى المزدوج = =" حتى نفرق بينه وبين " مؤثر التخصيص المستخدم فى العبارة السابقة وهو التساوى المفرد = ".
if(x == 1) PORTD.B0=1 ; // Change output
تأثير البرنامج هو توصيل on الخرج PORTD.B0=1 إذا كان الدخل فى الحالة المرتفعة high أى
x == 1 . بمعنى آخر إذا تحققت عبارة شرط if , الموجودة بين القوسين , يتم تنفيذ العبارة التالية للقوسين .
نحتاج أن يكون المفتاح مغلق قبل تشغيل البرنامج حتى نرى هذا التأثير .
لا يمكن فصل الليد مرة أخرى حتى يتم عمل إعادة للبرنامج restarted .
كود:
/* prog.4 condition loop by IF
PIC16F877A & 4MHz
Eng.F.Abdelaziz
http://www.eeecb.com/vb/index.php */
int x; // Declare variable
void main()
{
TRISC = 0xFF ; // All pins as inputs
PORTC = 0; // Clear
TRISD = 0 ; // All pins as outputs
PORTD = 0 ; // Clear all outputs
while(1) // Loop always
{
x = PORTC.B0; // Get input state
if(x == 1)PORTD.B0=1 ; // Change output
}
}
البرنامج الخامس :
التحكم فى تفرع البرنامج عن طريق :
حلقة الشرط باستخدام عبارة while :
|
السلام عليكم ورحمة الله وبركاته
شُكراً لك أخي .. أفدتني بشرحك .. فأنا لا ازال مُبتدى في هذا ^_^
لكن ظهرت لي مُشكلة عندما قُمت بتطبيق الدرس الرابع في برنامج mikroC compiler for PIC
وهذه هي رسالة الخطأ اللتي تظهر عندما أقوم بالبناء ..
Operator [.] not applicable to this operands [PORTC]l
Operator [.] not applicable to this operands [PORTC]l