قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:33 AM المشاركة 57   
افتراضي



التدريب الثامن :
الغرض : شكل من أشكال الحلقات :

كود:
 void main()
{
	char x;			// الإعلان عن متغير الحلقة قبل استخدامها
 
	TRISB=0; PORTB=0; 	// تهيئة المنفذ كمخارج وتصفيره فى نفس السطر 
	Delay_ms(1000); //الانتظار ثانية 

	while(1)			//إنشاء حلقة غير منتهية لتكرارجسمها إلى مالانهاية 

	{

		for(x=0;x<9;x++){ PORTB++;Delay_ms(1000);}

				// الحلقة بالثلاثة بارامترات وجسمها فى سطر واحد 

		PORTB=0;Delay_ms(1000);  // تصفير المنفذ والانتظار ثانية 
	}
}

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:36 AM المشاركة 58   
افتراضي


التدريب التاسع :
الغرض :

الحلقات الغير منتهية مع العبارة for( ; ; )
كود:
void main()
{
	TRISB=0; 	// تهيئة المنفذ كمخارج 
	PORTB=0;	 // تصفير المنفذ 
    
	for(;;)  		// إنشاء حلقة غير منتهية لعدم وجود شرط للخروج منها 

    	{
        		PORTB.B0=1;    	// LED ON
        		Delay_ms(250);  	// delay for 0.25 seconds

        		PORTB.B0=0;      	// LED OFF
        		Delay_ms(250);
    	}
}

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 04-06-2017, 01:36 AM المشاركة 59   
افتراضي


بارك الله بك
تابع والله الموفق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:38 AM المشاركة 60   
افتراضي


التدريب العاشر
الغرض :

• التدريب على بعض المؤثرات وجمل التحكم فى البرنامج .
• البرنامج يعرض الأرقام الثنائية من 0 إلى 9 ويتكرر.
كود:
void main()
{ 
      	TRISB=0;		//تهيئة المنفذ كمخارج 

     	PORTB=0;	//  جميع المخارج فى الحالة المنخفضة أى الليدات مطفأة 
	Delay_ms(1000);	// الانتظار لفترة ثانية 
 
	while(1) 		// بدء حلقة غير منتهية التكرار 
	{		// while بداية 

		PORTB++;	// فى كل حلقة يتم زيادة السجل بواحد 
				// أول دورة يصبح 1 وثانى دورة يصبح 2 وحتى الدورة التاسعة يصبح 9 
		Delay_ms(1000);	//الانتظار لثانية 

		if(PORTB==9) 	// إذا تحقق أن محتويات سجل المنفذ تكافىء العدد 9 فقط

		{		// if    نفذ جسم عبارة 

			PORTB=0; 	//تصفير سجل المنفذ بعد العدد 9  
			Delay_ms(1000);	// الانتظار لثانية 

		} 		// if نهاية جملة 

	}			// while   نهاية جملة 
}


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 04-06-2017, 01:49 AM المشاركة 61   
افتراضي


اخي الكريم هل هذه التمارين تفيد بان الشرح انتهى ام ستبدأ مرحلة اخرى من الشرح او من البرمجة .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 04:40 PM المشاركة 62   
افتراضي


اخي الكريم هل هذه التمارين تفيد بان الشرح انتهى ام ستبدأ مرحلة اخرى من الشرح او من البرمجة .
أخى الكريم شكرا جزيلا لك

ما زال الشرح ، إن شاء الله مستمرا

مع تمنياتى بدوام التوفيق .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 11:46 PM المشاركة 63   
افتراضي


تمرين :
الدائرة الكهربية :




فى البرنامج أدناه :
• اشرح البرنامج متتبعا خطوات تنفيذ البرنامج .

• قم بتعديل البرنامج مستخدما الدوال Function .

كود:
sbit LED0 at PORTB.B0; // bit is fully defined
sbit LED1 at PORTB.B1;
sbit LED2 at PORTB.B2;
sbit LED3 at PORTB.B3;
sbit LED4 at PORTB.B4;
sbit LED5 at PORTB.B5;
sbit LED6 at PORTB.B6;
sbit LED7 at PORTB.B7;




//main function
void main(void)
{
   unsigned int c;		//for loop Counter

	TRISB = 0;
	PORTB = 0;

	while(1)
	{

		for(c=0; c<10; c++)
		{
			//forward
			LED0 = 1;
			Delay_ms(1000);

			LED0 = 0;
			LED1 = 1;
			Delay_ms(1000);

			LED1 = 0;
			LED2 = 1;
			Delay_ms(1000);

			LED2 = 0;
			LED3 = 1;
			Delay_ms(1000);

			LED3 = 0;
			LED4 = 1;
			Delay_ms(1000);

			LED4 = 0;
			LED5 = 1;
			Delay_ms(1000);

			LED5 = 0;
			LED6 = 1;
			Delay_ms(1000);

			LED6 = 0;
			LED7 = 1;
			Delay_ms(1000);

			LED7 = 0;


			//reverse
			LED6 = 1;
			Delay_ms(1000);

			LED6 = 0;
			LED5 = 1;
			Delay_ms(1000);

			LED5 = 0;
			LED4 = 1;
			Delay_ms(1000);

			LED4 = 0;
			LED3 = 1;
			Delay_ms(1000);

			LED3 = 0;
			LED2 = 1;
			Delay_ms(1000);

			LED2 = 0;
			LED1 = 1;
			Delay_ms(1000);

			LED1 = 0;
			LED0 = 1;
			Delay_ms(1000);


		}

		//re-initalize PORTB
		PORTB = 0b00000000;

		for(c=0; c<10; c++)
		{

			PORTB = 0b10101010;
			Delay_ms(1000);

			PORTB = 0b01010101;
			Delay_ms(1000);

		}

		for(c=0; c<10; c++)
		{

			PORTB = 0b11110000;
			Delay_ms(1000);

			PORTB = 0b00001111;
			Delay_ms(1000);

		}

		for(c=0; c<10; c++)
		{

			PORTB = 0b11001100;
			Delay_ms(1000);

			PORTB = 0b00110011;
			Delay_ms(1000);

		}

		for(c=0; c<10; c++)
		{

			PORTB = 0b10000001;
			Delay_ms(1000);

			PORTB = 0b01000010;
			Delay_ms(1000);

			PORTB = 0b00100100;
			Delay_ms(1000);

			PORTB = 0b00011000;
			Delay_ms(1000);

			PORTB = 0b00100100;
			Delay_ms(1000);

			PORTB = 0b01000010;
			Delay_ms(1000);

		}

	}

}




الصورة الرمزية assed
assed
:: عضو فضي ::
تاريخ التسجيل: Jul 2014
الدولة: العراق - بغداد
المشاركات: 1,034
نشاط [ assed ]
قوة السمعة:
قديم 05-06-2017, 11:54 AM المشاركة 64   
افتراضي


تمرين :
الدائرة الكهربية :




فى البرنامج أدناه :
• اشرح البرنامج متتبعا خطوات تنفيذ البرنامج .

• قم بتعديل البرنامج مستخدما الدوال Function .

كود:
sbit LED0 at PORTB.B0; // bit is fully defined
sbit LED1 at PORTB.B1;
sbit LED2 at PORTB.B2;
sbit LED3 at PORTB.B3;
sbit LED4 at PORTB.B4;// اسم يحل مكان البورت
sbit LED5 at PORTB.B5;
sbit LED6 at PORTB.B6;
sbit LED7 at PORTB.B7;




//main function
void main(void) // بداية البرنامج 
{
   unsigned int c;		//for loop Counter

	TRISB = 0;// جعل البورت B خرج
	PORTB = 0; // حالياً الخرج 0 او سالب

	while(1) // حلقة غير منتهية
	{

		for(c=0; c<10; c++) حلقة عد تبداء من 0 ولحد العد 10 للمتغير C
		{
			//forward
			LED0 = 1; // اضاءة البورت الاول
			Delay_ms(1000); // انتظار 1 ثانية

			LED0 = 0;// اطفاء البورت الاول
			LED1 = 1;// شغل البورت الثاني وهكذا بقية الاوامر
			Delay_ms(1000);

			LED1 = 0;
			LED2 = 1;
			Delay_ms(1000);

			LED2 = 0;
			LED3 = 1;
			Delay_ms(1000);

			LED3 = 0;
			LED4 = 1;
			Delay_ms(1000);

			LED4 = 0;
			LED5 = 1;
			Delay_ms(1000);

			LED5 = 0;
			LED6 = 1;
			Delay_ms(1000);

			LED6 = 0;
			LED7 = 1;
			Delay_ms(1000);

			LED7 = 0;


			//reverse
			LED6 = 1;
			Delay_ms(1000);

			LED6 = 0;
			LED5 = 1;
			Delay_ms(1000);

			LED5 = 0;
			LED4 = 1;
			Delay_ms(1000);

			LED4 = 0;
			LED3 = 1;
			Delay_ms(1000);

			LED3 = 0;
			LED2 = 1;
			Delay_ms(1000);

			LED2 = 0;
			LED1 = 1;
			Delay_ms(1000);

			LED1 = 0;
			LED0 = 1;
			Delay_ms(1000);


		}

		//re-initalize PORTB
		PORTB = 0b00000000;//تصفير بورت B بالكامل  اي اجعل الخرج جميعه سالب

		for(c=0; c<10; c++)//
		{

			PORTB = 0b10101010;//أزاحة بورت B لليسار بواحد
			Delay_ms(1000);

			PORTB = 0b01010101; //أزاحة بورت B لليمين بواحد
			Delay_ms(1000);

		}

		for(c=0; c<10; c++)
		{

			PORTB = 0b11110000; //أزارحة بورت B لليسار ب 4 خطوات
			Delay_ms(1000);

			PORTB = 0b00001111;// أزاحة بورت B لليمين ب 4 خطوات
			Delay_ms(1000);

		}

		for(c=0; c<10; c++)
		{

			PORTB = 0b11001100;//أزاحة بورت B لليسار ب 2 خطوة
			Delay_ms(1000);

			PORTB = 0b00110011;// أزاحة يمين 2 خطوة
			Delay_ms(1000);

		}

		for(c=0; c<10; c++)
		{

			PORTB = 0b10000001; ////ازاحة من اليمين واليسار بواحد
			Delay_ms(1000);

			PORTB = 0b01000010;
			Delay_ms(1000);

			PORTB = 0b00100100;
			Delay_ms(1000);

			PORTB = 0b00011000;
			Delay_ms(1000);

			PORTB = 0b00100100;
			Delay_ms(1000);

			PORTB = 0b01000010;
			Delay_ms(1000);

		}

	}

} // نهاية البرنامج


خطوة جداً رائعة أستاذنا الكريم .. وان شاء الله سوف احاول كتابة الكود بغير طريقة



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:39 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)