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

   

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



استاذ فتح الله بارك الله لك جهدك الكريم
وجعله في ميزان حسناتك
اود ان اسالك اسئله لها علاقه بالمايكرو
لي اهتمام بمعالجات ARM
لكن لا ادري ماذا تعني بالضبط
مثلا التوزيعه Cortex-M
Optimized for discrete processing and microcontroller
منصوص انها للمايكرو بعكس التوزيعه Cortex-R والتوزيعه Cortex-A
سؤالي هل هي في حد ذاتها نوع من المايكرو ام هي معماريه داخليه في البناء
قرات مطولا لكن لم افهم صراحه ماذا يراد منها
عندما كنت اتتبع معالجات اجهزه نوكيا وجدت مثلا
Nokia N90-1 RM-42 TI OMAP 1710 ARM-926 220 MHz + RAP.. cellular CPU
Nokia N91-1 RM-43 TI OMAP 1710 ARM-926 220 MHz + RAP.. cellular CPU
هل معني هذا انها تستند علي معالجات ام معماريه لمعالج ام اوامر شركه ارم
وايضا هذه الصوره
أخى الكريم شكرا جزيلا لك
اعتذر لك
ليس لدى أى فكرة عن معالجات ARM

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

اعلانات

الصورة الرمزية burai nuraldaem
burai nuraldaem
:: عضو فضى ::
تاريخ التسجيل: Nov 2015
الدولة: السودان
المشاركات: 501
نشاط [ burai nuraldaem ]
قوة السمعة:
قديم 04-08-2017, 09:25 PM المشاركة 170   
افتراضي


ولا يهمك اخي
ربنا يوفقك انت ايضا لكل خير

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

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


منفذات التيار المتردد AC Actuators



منفذات التيار المتردد فى الأساس قد تستخدم اثنين من التقنيات ، التقنية الأول تتم باستخدام الريلاى وهى محدودة حيث أنها تقوم فقط بالتحويل بين حالة التوصيل والفصل ON-OFF . التقنية الثانية باستخدام أجهزة الحالة الجامدة solid state devices مثل الترياك TRIAC ، هذه الأجهزة تسمح بالعمل مع أحمال التيار المتردد حيث يمكن أن تنظم قدرتها عن طريق التحكم(بالقطع cutting) فى طور (وجه) phase إشارة التيار المتردد ، وغالبا ما يكون 60Hz أو 50Hz . التنفيذ بالترياك سهل ويتم عزل دوائر القدرة عن طريق الروابط الضوئية optocouplers مثل MOC3011, 3010, 3021 وغيرها . الترياك يمكن أن يعمل عند أقصى سعة تيار يمكن أن يتحمله . الترياك له ثلاثة أطراف هى A1, A2, gate يتم عمل دائرة قصر بين A1 و A2عندما يمر تيار بين gate و A1 ويتم الفصل فقط عندما يكون التيار المار من A2 بصفر أى عند عبور إشارة التيار المتردد بالصفر zero crossing .
الشكل التالى يبين المظهر الطبيعى والرموز ببرنامج إيزيس لهذه الأجهزة :



كما هو موضح بالشكل فالعازل الضوئى MOC ، جهاز يضم بداخله ترياك ، لكنه يتحمل تيار صغير نسبيا ولكنه يستطيع بدء (إشعال) ترياك آخر أكبر قدرة . أيضا يمكن ملاحظة أن بوابة العازل الضوئى MOC يتم تنشيطها عن طريق الإشعاع الضوئى المنبعث من الليد LED ، والمدمج بنفس الغلاف .
الخلاصة أنه يمكن تشغيل ترياك ذات قدرة مرتفعة بواسطة دائرة رقمية بتفعيل ليد إشارة مفرد .
لفهم هذا الترتيب بوضوح يمكن النظر إلى الدائرة التالية :




لتحقيق تنظيم القدرة على حمل تيار متردد ، يصبح من الضرورى إجراء خفض (قطع) فى طور (وجه) إشارة القدرة الجيبية sine signal . شبكة القدرة التجارية يكون جهدها AC 120V وترددها 60Hz( على سبيل المثال). وهذا يشير إلى أن زمن الدورة الواحدة يساوى 1/60 أى 16.666 m-seconds . مهمة قطع الطور يجب أن يتم عملها فى كل نصف دورة أى كل 8.333 m seconds . وهذا يشير إلى أن قطع الطور يقع بين صفر و 180 درجة ويتكرر بين 180 و 360 درجة .
لفهم هذا المفهوم بشكل واضح يمكنك النظر إلى الرسم البيانى التالى :



لإداء قص الطور ، من الضرورى كشف عبور للصفر zero crossing للإشارة الجيبية للتزامن معها . لكشف عبور الصفر تتوفر عدة طرق ، فى المثال القادم سوف نوضح واحدة تشمل التنفيذ بالروابط الضوئية optocouplers. استخدام الروابط الضوئية نموذجى بالنسبة للعزل الكهربائى لمرحلة القدرة عن مرحلة التحكم الالكترونى .
تدريب تمهيدى :
فى هذا التدريب سوف نستخدم الميكروكونترولر PIC16F877A ، يمكنك استخدام أى نوع آخر . يتم القيام بكشف "عبور الصفر" zero-crossing باستخدام طريقة البريدج والعازل الضوئى .
الدائرة الكهربية :



البرنامج :

كود:
unsigned char FlagReg;
sbit ZC at FlagReg.B0;

void interrupt(){
     if (INTCON.INTF){          //INTF flag raised, so external interrupt occured
        ZC = 1;
        INTCON.INTF = 0;
     }
}

void main() {
     PORTB = 0;
     TRISB = 0x01;              //RB0 input for interrupt
     PORTD = 0;
     TRISD = 0;                 //PORTD all output
     OPTION_REG.INTEDG = 0;      //interrupt on falling edge
     INTCON.INTF = 0;           //clear interrupt flag
     INTCON.INTE = 1;           //enable external interrupt
     INTCON.GIE = 1;            //enable global interrupt

     while (1){
           if (ZC){ //zero crossing occurred
              delay_ms(2);
              PORTD.B0 = 1; //Send a pulse
              delay_us(250);
              PORTD.B0 = 0;
              ZC = 0;
           }
     }
}

فى البداية يتم اختبار "عبور الصفر" ، بعد حدوث عبور الصفر يتم تأخير صغير قبل أن يتم إشعال الترياك . التأخير المستخدم هنا هو 2ms ، ولذلك فإن الترياك يتم إشعاله بعد 2ms بعد حدوث عبور الصفر . يتم إإزالة إشارة الإشعال بعد 250us ، هذا الزمن كافى للتأكد من أن الرياك تحول إلى حالة التوصيل on ، وهذا يعنى أنه حتى لو تم إزالة الإشعال من على البوابة فإن الترياك سوف يظل موصلا حتى عبور الصفر التالى .
النتيجة :




تدريب تطبيقى :
البرنامج التالى يستخدم الميكروكونترولر PIC 16F628A بساعة بتردد 20MHz :

كود:
// global variables.
unsigned short PWM=41, COUNT=0; 
// Interrupt function.
void interrupt() 
{ 
// External interruption by RB0.at each zero crossing
if( INTCON.F1 ) 
{ 
// The trigger pin is turned off.
PORTB.F7=0; 
// The counter is reset.
COUNT = 0; 
// The external interrupt flag goes out.
INTCON.F1=0; 
} 
// Interruption by Timer 0 each 102.4u sec .
if( INTCON.F2 ) 
{ 
// The counter is incremented.
COUNT ++; 
// The counter is compared with PWM ,
// if counter is higher ,  the trigger is turned on . 
if( COUNT > PWM )PORTB.F7=1; 
// The Timer 0  interrupt flag is switched off . 
INTCON.F2 =0; 
} 
} 
void main( void ) 
{ 
// Port configuration.
TRISB = 0b01111111; 
PORTB = 0; 
// Activation of Timer0, and external interrupt bits. 
OPTION_REG = 0b01000000; 
INTCON = 0b10110000; 
while( 1 )// Infinite loop. 
{
// Lower power push button. 
while( Button( &PORTB, 1, 10, 0 ) ) 
{ 
// Increment of the phase cut. 
PWM ++; if( PWM > 84 )PWM=84; 
delay_ms(10); // Delay of change. 
} 
// higher power  push button. 
while( Button( &PORTB, 2, 10, 0 ) ) 
{ 
// Decrement of the phase cut. 
PWM --; if( PWM == 255 )PWM=0; 
delay_ms(10); // Delay of change.
} 
} 
}

لمحاكاة هذا التدريب ببرنامج إيزيس يتم جلب الأجهزة الآنية :
16F628A, RES, BUTTON, MOC3023, Q4006L4, B80C1000, OPTOCOUPLER-NPN, VSINE, OSCILLOSCOPE.
وبناء الدائرة الكهربية التالية :



بعد تشغيل المحاكاة يمكنك أن تشاهد الأوسليسكوب التخيلى كما فى الشكل التالى :



القناة A تمثل الإشارة على الحمل ويمكن ملاحظة قطع الطور .
القناة B تبين القمة عند عبور الإشارة الجيبية بالصفر , هذه القمة تستخدم لتزامن الميكروكونترولر مع الشبكة من خلال المقاطعة الخارجية .
القناة C تبين إشارة التحكم التى تشعل الترياك .


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


الوحدات (الموديولات) اللاسلكية التى تعمل بالأشعة تحت الحمراء Infrared Wireless Modules
الاتصال بالأشعة تحت الحمراء هو استراتيجية عملية للأنظمة التى لا تتطلب سرعة إرسال عالية , والتى تدعم الخط المباشر للرؤية . نطاق الربط بالأشعة تحت الحمراء يعتمد على قدرة power الإرسال . مع ذلك , يتم استخدام هذا المعيار فى التحكم فى إتصالات الأجهزة المنزلية التقليدية مثل التليفزيون وأجهزة التسجيل والفديو ومكيفات الهواء وغيرها الكثير , حيث أن مداه المتوسط حوالى 10 أمتار .
يتم تنفيذ عملية نقل البيانات عن طريق ثنائيات مشعة لضوء الأشعة تحت الحمراء بنظام التعديل الرقمى فى السعة digital amplitude modulation , بنظام يعرف باسم ASK .
معايير الاتصال لتنفيذ التحكم بالأشعة تحت الحمراء تلزم بأن تكون الترددات الحاملة 36 أو 38 أو 40 كيلو هرتز 36, 38 , 40 K Hz وغيرها .
يتم استقبال البيانات عن طريق " المستخلص" demodulator بنظام ASK , والذى يمكنه استقبال بيانات بسرعة حتى 2.4 K bits per second .
مستخلصات ASK demodulators , هى أجهزة أشعة تحت الحمراء شائعة الاستخدام متوفرة فى شكل تجارى مدمج . تلك الأجهزة لها ثلاثة أطراف , إثنان للتغذية هما Vcc والأرضى , والطرف الثالث للخرج الذى يتم استخلاصه output , هذا الطرف من نوع المجمع المفتوح open collector وهذا يعنى أنه يتطلب استخدام مقاومة رفع إلى الجهد Vcc . بعض الشركات المصنعة تدمج مقاومة بالجهاز .
لأغراض التصميم من المهم أن نلاحظ أن خرج demodulator معكوس (مقلوب) , أى عندما يكشف الجهاز الإشارة الحاملة يكون خرج demodulator فى الحالة المنخفضة ويكون فى الحالة المرتفعة عند غياب الكشف .
الشكل التالى يبين المظهر الطبيعى لهذه الأجهزة :



يمكن للأطراف أن تختلف من صانع لآخر , ولكن سوف يكون هناك دائما ثلاثة أطراف Vcc والأرضى والخرج , للأغرض العملية لابد من مراجعة صفحة البيانات data sheet للجهاز المذمع استخدامه .
لمحاكاة هذه الأجهزة يمكن أن نستخدم الوحدة (الموديول) التخيلى IrLink ببرنامج إيزيس , الشكل التالى يبين هذا الموديول :



هذا الجهاز التخيلى يحاكى الربط اللاسلكى عن طريق ليد الأشعة تحت الحمراء وجهاز المستخلص demodulator وكذلك تحرير تردد الإشارة الحاملة لنظام ASK .



لتوثيق إداء هذه الروابط يجب مراقبة وتحليل مصدر الكود للبرنانج التالى , والذى يستخدم موديول PWM كمصدر للتردد الحامل والموديول USART لتعديل الإشارة modulating , بالمعلومات المرسلة فى شكل بيانات كود أسكى ASCII بنصوص ثابتة والتى يمكن مشاهدتها بالوحدة الطرفية التخيلية :


كود:
void main( void )
{
	//Configuring the USART module at 2400 bps.
	UART1_Init(2400);
	//Configuring PWM carrier frequency to create a 38K Hz
	PWM1_Init(38000);
	PWM1_Start();
	//sets the PWM duty cycle at 50%.
	PWM1_Set_Duty(127);
	while(1) //Infinite Loop.
	{
		//Transmits information in a fixed text.
		UART1_Write_Text("Infrared data transmission.");
		//sends the characters enter and carriage return.
		UART1_Write(13);
		UART1_Write(10);
		//Transmits information in a fixed text.
		UART1_Write_Text("This emission is modulated at 38KHz.");
		UART1_Write(13);
		UART1_Write(10);
		//Transmits information in a fixed text.
		UART1_Write_Text("With a transmission rate of 2400 bps.");
		//sends the characters enter and carriage return.
		UART1_Write(13);
		UART1_Write(10);
		//sends the characters enter and carriage return.
		UART1_Write(13);
		UART1_Write(10);
		// pauses for  200m seconds.
		delay_ms(200);
	}
}

لمحاكاة هذا البرنامج ببرنامج إيزيس يلزم جلب الأجهزة الآتية :
16F628A, RES, 1N4148, IrLink, 74LS04, Virtual Terminal وبناء الدائرة الكهربية كما فى الشكل التالى :




يتم عمل التعديل بضرب الأشارة المعدلة مع إشارة الحامل , لذلك يتم تنفيذ البوابة AND , وتصمم بثنائيات سريعة التحويل .

عند تشغيل المحاكاة يجب أن يعرض على الوحدة الطرفية التخيلية البيانات النصية كما يلى :






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


بروتوكول الاتصال RS485 والاتصال بين ميكروكونترولر PIC وآخر

البروتوكول RS485 هو شكل من أشكال الاتصال التسلسلى والذى يستخدم تقنية نقل الفرق فى الجهد بين طرفين يسميان A و B . عندما يكون فرق الجهد موجب فإن البرتوكول يمثل المنطق "1" وعندما يكون فرق الجهد سالب فإنه يمثل المنطق 0"" .
من السمات البارزة لتنفيذ النقل بالبروتوكول RS485 هو استخدام زوج من الأسلاك النحاسية الملفوفة حول بعضها twisted والتى تشكل ناقل الاتصال بمدى أقصاه حوالى 1000 متر دون الحاجة لاستخدام أجهزة تكرار النقل . كما أنه يمكنك توصيل ناقل بيانات حتى 32 عقدة nodes بطريقة النصف مزدوج half duplex ، هذا يعنى أن الاتصال ثنائى الاتجاه ولكن ليس فى نفس الوقت . يستخدم البروتوكول RS485 فى الاتصال بسرعة حتى 2.5 M bits per second .
لتنفيذ هذا النوع من الاتصالات تستخدم دوائر متكاملة كمحولات تسمح بربط الأجهزة ذات المستويات TTL مع RS485 ، الدائرة المتكاملة الأكثر انتشارا لهذه التطبيقات هى MAX485 وهى فى غلاف ذات 8 أطراف ، الشكل التالى يبين الأطراف الطبيعية لهذه الأجهزة :



الأطراف A و B هى ناقل البيانات ثنائى الاتجاه ، الأطراف RE وDE هى أطرف تمكين المخزن المؤقت buffer لكل من الإرسال والاستقبال على الترتيب . الأطراف DI و RO هى أطراف الإرسال والاستقبال على الترتيب . كخطوة إضاقية ، يتطلب وجود زوج من المقاومات 120 على التوازى لكل من الطرف A والطرف B فى نهايتى الناقل RS485 .




لاستعراض هذا النوع من شبكات الاتصال سوف نقوم فى هذا الدرس بعمل اتصال نصف مزدوج بين اثنين من الميكروكونترولر ، وسوف نستخدم لهذا الغرض الموديولات USART مع مزيد من التحكم لطرف التمكين .
لإدراك استخدام RS485 يمكنك مراقبة وتحليل كود المصدر للبرنامج التالى الذى يقوم بإرسال حالة مقاومة متغيرة للتحكم فى شدة الإضاءة لمصباح بالجهة المقابلة :


كود:
void main( void )
{
	//Declaration of variables.
    	unsigned short DATA;
    	//Port settings.
    	TRISB = 0b11111110;
	PORTB = 0; 	//MAX485 is configured as a receiver.
	//Activated pull-up resistors.
	OPTION_REG = 0;
	//USART module is configured to 250000 bps.
	UART1_Init(250000);
	//PWM module is configured with a frequency of 1K Hz
	PWM1_Init(1000);
	//PWM module starts with 0%.
	PWM1_Start();
	PWM1_Set_Duty(0);

	while(1) //Infinite Loop.
	{
		//Evaluates if a data has arrived.
		if( UART1_Data_Ready() )
		{
			DATA = UART1_Read();
			//Evaluates whether the data arrival equals the flag 170.
			if( DATA==170 )
			{
			//waits for the next data.
			while( !UART1_Data_Ready() );
			DATA = UART1_Read();
			//Updates the duty cycle of the PWM.
			PWM1_Set_Duty(DATA);
			}
		}

		//Evaluates whether the button was pressed.
		if( Button(&PORTB, 1, 50, 0) )
		{
			PORTB = 1; //MAX485 is configured as a transmitter.
			//Reads the analog channel with voltage
			//potentiometer, and saved the 8 most significant bits
			// in the variable DATA.
			DATA = (ADC_Read(0)>>2)&0xFF;
			//Transmits the flag 170, to synchronize communication.
			UART1_Write(170);
			//Pauses for 1 m seconds between data.
			delay_ms(1);
			//Transmitting the value of the variable DATA.
			UART1_Write(DATA);
			//Wait until the button is released.
			while( Button(&PORTB, 1, 50, 0) );
			PORTB = 0; //Set MAX485 as receiver .
		}
	}
}

البرنامج السابق متناظر ، أى يتم تحميل كل ميكروكونترولر بنفس البرنامج . الدائرة الإلكترونية تستخدم مصباح متوهج من أجل إظهار التحكم فى شدة الأضاءة الذى نحصل علية من موديول PWM وذلك بعد تحويل نتيجة فرق الجهد التناظرى من على المقاومة المتغيرة إلى عدد يستخدم كدورة خدمة لنظام PWM .
لأغراض المحاكاة يتم تغيير مقاومة المصباح المتوهج من القيم الافتراضية وهى 24 إلى 100K وجهدها المقنن من 12V إلى 5V .



لإجراء المحاكاة يلزم جلب الأجهزة الآتية :
16F877A, RES, MAX487, LAMP, BUTTON, CAP, POT-HG
وتكوين الدائرة الكهربية التالية :



عند تشغيل المحاكاة يتم إعداد موديولات MAX كمستقبلات ، وعندما تقوم بالضغط على المفتاح الضاغط يقوم الميكروكونترولر بالتحويل من تناظرى لرقمى ، ويرسل هذه المعلومات الخاصة بتحديد شدة إضاءة المصباح إلى الجهة المقابلة .








dona.xd
:: مهندس ::
تاريخ التسجيل: Aug 2017
المشاركات: 2
نشاط [ dona.xd ]
قوة السمعة:
قديم 14-08-2017, 02:57 PM المشاركة 174   
افتراضي


مجهود جميل
شكرا جدا ع المشاركه


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 15-08-2017 الساعة 02:36 PM

الصورة الرمزية burai nuraldaem
burai nuraldaem
:: عضو فضى ::
تاريخ التسجيل: Nov 2015
الدولة: السودان
المشاركات: 501
نشاط [ burai nuraldaem ]
قوة السمعة:
قديم 15-08-2017, 11:25 PM المشاركة 175   
افتراضي


الوصول إلى بتات السجلات :
هناك العديد من الحالات حيث قد نرغب فى الوصول إلى البتات الفردية لسجل 8 بت .
إذا أردنا الوصول إلى بت لسجل داخلى بالميكروكونترولر :
• إذا كنا نعرف اسم بت السجل المراد الوصول إليها ، عندئذ يمكننا ببساطة "كتابة اسم البت ويتم تحديدها set (جعلها بواحد) أو مسحها clear (تصفيرها) كما هو مطلوب . فيما يلى مثال على ذلك :

كود:
GIE_bit = 0;         //Clear GIE bit
• يمكننا أيضا استخدام معرفات البتات B0, B1, . . . . B7 أو F0, F1, . . . . . F7 ، باعتبار أن (0) هى البت الأدنى قيمة LSB (أقصى اليمين) ، و (7) هى البت الأقصى قيمة MSB . فيما يلى مثال ، لتحديد البت bit 0 بالسجل INCON نستخدم الصيغة التالية :

كود:
INTCON.B0 = 1;     //Set bit 0 of register INTCON
ولتحديد البت bit 3 يمكن كتابة مايلى :

كود:
INTCON.F3 = 1;     //Set bit 3 of register INTCON
البت من نوع sbit :
المترجم ميكروسى برو به نوع من بيانات البتات يسمى sbit ، والذى يوفر "الوصول إلى البتات الخاصة بسجلات الوظائف الخاصة SFRs الداخلية للميكروكونترولر " . يمكنك الوصول إلى البتات الداخلية للسجلات كما فى الأمثلة التالية :

كود:
sbit LEDA at PORTA.B0;         //LEDA is assigned to bit 0 of PORT A
sbit LEDB at PORTA.B7;         //LEDB is assigned to bit 7 of PORT A
أو بدلا من ذلك ومكافىء له :

كود:
 sbit LEDA at RA0_bit;         //LEDA is assigned to bit 0 of PORT A
sbit LEDB at RA7_bit;         //LEDB is assigned to bit 7 of PORT A
البت من نوع bit :
المترجم ميكروسى برو يدعم أيضا "تعريف بت واحدة باستخدام النوع bit . فيما يلى مثال يوضح ذلك :

كود:
bit xf;
السلام عليكم استاذ فتح الله
لي بعض الاستفسارات هنا
النوع
GIE_bit = 0;هل يشابه التعريف العادي المتبع مثلا لتعريف البن 3 لبورت A
كود:
TRISA.B3=0;
PORTA.B=1;
ثانيا المسجل INTCON
هل يختلف عن الطرق السابقه ايضا ام ان له عمل خاص مميز ؟

ثالثا النوع sbit تذكرته الان في مثال عارضه lcd
ما معني وظيفه خاصه لان الامر التبس علي
مثلا هذا النوع تعرف به مسارات البيانات بين المتحكم والعارضه lcd هل افترض ان لكل جهاز معين سجل مخصص له لكي يتعامل معه المتحكم ؟


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


السلام عليكم استاذ فتح الله
لي بعض الاستفسارات هنا
النوع
GIE_bit = 0;هل يشابه التعريف العادي المتبع مثلا لتعريف البن 3 لبورت A
كود:
TRISA.B3=0;
PORTA.B=1;
ثانيا المسجل INTCON
هل يختلف عن الطرق السابقه ايضا ام ان له عمل خاص مميز ؟

ثالثا النوع sbit تذكرته الان في مثال عارضه lcd
ما معني وظيفه خاصه لان الامر التبس علي
مثلا هذا النوع تعرف به مسارات البيانات بين المتحكم والعارضه lcd هل افترض ان لكل جهاز معين سجل مخصص له لكي يتعامل معه المتحكم ؟
أخى الكريم شكرا جزيلا لك

لي بعض الاستفسارات هنا
النوع
GIE_bit = 0;هل يشابه التعريف العادي المتبع مثلا لتعريف البن 3 لبورت A
كود:
TRISA.B3=0;
PORTA.B=1;
نعم فجميعها تمثل بت بصيغة صالحة مع المترجم ميكروسى برو ، الفرق أنه عندما تستخدم البت باسمها المعروف فإنك تكون متأكدا من أن البت المعنية هى التى سوف تتأثر حتى لو اختلف مكانها باختلاف نوع الميكروكونترولر .
مثال :
كود:
// Clear Global Interrupt Bit (GIE) 
INTCON.GIE = 0;
كود:
// Set Global Interrupt Bit (GIE) 
GIE_bit = 1;

ثانيا المسجل INTCON
هل يختلف عن الطرق السابقه ايضا ام ان له عمل خاص مميز ؟
السجل INTCON هو سجل مثل باقى السجلات (بايت - 8 بتات ) لكنه مخصص فقط (خاص) للتحكم فى المقاطعات عن طريق بتاته المختلفة .

ثالثا النوع sbit تذكرته الان في مثال عارضه lcd
عادة تستخدم sbit لتعريف (تسمية) بت سجل وظائف خاصة بمسمى يسهل حفظة ويسهل فهم قراءة و عمل البرنامج والبعض يفضل استخدام موجه النعريق
define# للقيام بتنفيذ ذلك فهو يؤدى نفس المهمة .

مثال :

كود:
sbit LED at PORTB.B0; // this is where LED is fully defined
كود:
#define LED PORTB.B0

معني وظيفه خاصه لان الامر التبس علي
ذاكرة RAM الموجودة بداخل الميكروكونترولر PIC عبارة عن مواقع (تسمى سجلات Register ) ، كل موقع عبارة عن بايت (8 بت) ، هذه الذاكرة مقسمة إلى قسمين أساسيين :
القسم الأول يحتوى على سجلات الوظائف الخاصة ( كل موقع أو سجل مخصص للقيام بوظيفة محددة سلفا ، على سبيل المثال السجل TRISB هو سجل وظيفة خاصة ألا وهى التحكم فى اتجاه المنفذ دخل أو خرج ، والسجل INTCON سجل وظيفة خاصة وهى التحكم فى المقاطعة وهكذا ) .
والقسم الثانى يحتوى على سجلات الأغراض العامة وهى التى يستخدمها المترجم فى حفظ المتغيرات ، المبرمج يقوم بالإعلان عن متغير (الاسم والنوع ) ، على سبيل المثال char i ; وبمجرد أن يقابل المترجم هذا الإعلان يقوم بحجز موقع (بايت) باسم هذا المتغير داخل هذا القسم من الذاكرة ويتعامل معه بعد ذلك باسمه .



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