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

أدوات الموضوع

mero2
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 34
نشاط [ mero2 ]
قوة السمعة:0
قديم 17-12-2012, 11:02 PM المشاركة 1   
افتراضي استفسار بخصوص المؤشرات pointer Twitter FaceBook Google+



بسم الله الرحمن الرحيم:

الرجاء من الاخوه الافاضل شرح مبسط لل pointer انا قرأت فيه اكثر من مره ولم استوعبه ولكم جزيل الشكر

اعلانات

الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 18-12-2012, 02:22 AM المشاركة 2   
افتراضي


السلام عليكم ورحمة الله وبركاته
اليك اخى ماعرفه عن البوينتر
البوينتر هو عبارة عن مؤشر يشير الى مكان معين فى الذاكرة
طبعا احنا لازم نكون عارفين ان الذاكرة لها عناوين تخزين تتعامل معها لتخزين البيانات بداخلها هذا اولا
متلا لو اردنا ان نعرف متغير معين وليكن x وقيمته 777 فسنقوم بحجز مكان فى الذاكرة وهذاا المكان يتكون من شيئان عنوانه ومحتواها
متلا لما عرفنا متغير معين واخذ هذا المتغير مكان فى الذاكرة وليكن ترتيبه فى الذاكرة 200 على سبيل المتال طبعا وترتيب الارقام يختلف من بيك الى بيك فى والله اعلم
على العموم كان ترتيب المتغير 200 وكانت قيمته 777
نستنتج ان هذا المتغير اصبح شكله فى الذاكرة
عنوانه 200 وهو يشير الى محتواه الذى كتبنها لما عرفنا المتغير وهو الرقم 777
طبعا احنا لما عرفنا المتغير قلنا اسمه x
المايكرو. سوف يضع حرف الــx بدل قيمته الافتراضية وهى كما قلنا فى متالنا هذا كانت 200 لماذا استبدل المايكرو القيمة 200 بالاسم الذى عرفناه نحن ..عمل هذا حتى يسهل علينا استدعاء المتغير بأسمه ونقول اسمه مباشرة بدون ان تكتب رقمه
وهكذا يكون التعامل ساهل مع المتغيرآت
. الى هنا نحن لازلنا نتكلم على المتغيرات ولم ندخل فى البوينتر لان هذا كان ضرورى لما ساشرحه الان

اليك البيونتر فى اقل صوره
لما نجى ونريد ان نعرف بوينتر نكتبها بهذا الشكل

كود:
  char *kk;
طبعا اخذناه من نوع كركتر وبدانا بعلامة النجمة ويطلق عليها علامة الستارت (start) فى البوينتر تم عرفنا اسم البوينتر واغلاقنا التعليمة
الى هنا اعتقد ان الشرح واضح

الان نحن نريد ان نسند الى البوينتر فى برنامجنا قيمة معينة لاستعمالها فى مكان اخر
ولتكن هذه القيمة المتغير x
نكتب هكذا

كود:
kk=x;
الان الــ kk هو بوينتر معرف فى الاعلى وطبعا مهمة البونيتر الاشارة الى شي معين ..جميل الحكى
الان الــ kk يشير الى عنوان المتغير x
طبعا عنوان المتغير x يشير الى محتواه وهذا ماشرحناه بالاعلى
شي جميل الان نريد ان ناخذ القيمة التى يشير اليها البوينتر ونضعها متلا فى البورت b
ماعلينا فعله ببساطة
هو التالى

كود:
portb=*kk;
ماكتبناه هو ان البورت b
يساوى علامة * start
وبعدها kk

بمعنى ابسط قلنا لها ضع لنا القيمة النهائية التى يشير اليها البوينتر فى البورت b
هذا مبداء عمل البوينتر وانت ومهارتك فى البرمجة وطبعا تستطيع ان تفعل به اشياء اكتر من هذا المتال المبسط لاكن اليك المبدا بشكل مبسط وبعدها لكل حادث حديث
اخى اى شي غير مفهوم انا تحت امر ك
والسلام عليكم ورحمة الله وبركاته


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

mero2
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 34
نشاط [ mero2 ]
قوة السمعة:0
قديم 18-12-2012, 03:46 AM المشاركة 3   
افتراضي


السلام عليكم ورحمة الله وبركاته


اليك اخى ماعرفه عن البوينتر
البوينتر هو عبارة عن مؤشر يشير الى مكان معين فى الذاكرة
طبعا احنا لازم نكون عارفين ان الذاكرة لها عناوين تخزين تتعامل معها لتخزين البيانات بداخلها هذا اولا
متلا لو اردنا ان نعرف متغير معين وليكن x وقيمته 777 فسنقوم بحجز مكان فى الذاكرة وهذاا المكان يتكون من شيئان عنوانه ومحتواها
متلا لما عرفنا متغير معين واخذ هذا المتغير مكان فى الذاكرة وليكن ترتيبه فى الذاكرة 200 على سبيل المتال طبعا وترتيب الارقام يختلف من بيك الى بيك فى والله اعلم
على العموم كان ترتيب المتغير 200 وكانت قيمته 777
نستنتج ان هذا المتغير اصبح شكله فى الذاكرة
عنوانه 200 وهو يشير الى محتواه الذى كتبنها لما عرفنا المتغير وهو الرقم 777
طبعا احنا لما عرفنا المتغير قلنا اسمه x
المايكرو. سوف يضع حرف الــx بدل قيمته الافتراضية وهى كما قلنا فى متالنا هذا كانت 200 لماذا استبدل المايكرو القيمة 200 بالاسم الذى عرفناه نحن ..عمل هذا حتى يسهل علينا استدعاء المتغير بأسمه ونقول اسمه مباشرة بدون ان تكتب رقمه
وهكذا يكون التعامل ساهل مع المتغيرآت
. الى هنا نحن لازلنا نتكلم على المتغيرات ولم ندخل فى البوينتر لان هذا كان ضرورى لما ساشرحه الان


اليك البيونتر فى اقل صوره
لما نجى ونريد ان نعرف بوينتر نكتبها بهذا الشكل



كود:
  char *kk;

طبعا اخذناه من نوع كركتر وبدانا بعلامة النجمة ويطلق عليها علامة الستارت (start) فى البوينتر تم عرفنا اسم البوينتر واغلاقنا التعليمة
الى هنا اعتقد ان الشرح واضح

الان نحن نريد ان نسند الى البوينتر فى برنامجنا قيمة معينة لاستعمالها فى مكان اخر
ولتكن هذه القيمة المتغير x
نكتب هكذا

كود:
kk=x;
الان الــ kk هو بوينتر معرف فى الاعلى وطبعا مهمة البونيتر الاشارة الى شي معين ..جميل الحكى
الان الــ kk يشير الى عنوان المتغير x
طبعا عنوان المتغير x يشير الى محتواه وهذا ماشرحناه بالاعلى
شي جميل الان نريد ان ناخذ القيمة التى يشير اليها البوينتر ونضعها متلا فى البورت b
ماعلينا فعله ببساطة
هو التالى

كود:
portb=*kk;
ماكتبناه هو ان البورت b
يساوى علامة * start
وبعدها kk

بمعنى ابسط قلنا لها ضع لنا القيمة النهائية التى يشير اليها البوينتر فى البورت b
هذا مبداء عمل البوينتر وانت ومهارتك فى البرمجة وطبعا تستطيع ان تفعل به اشياء اكتر من هذا المتال المبسط لاكن اليك المبدا بشكل مبسط وبعدها لكل حادث حديث
اخى اى شي غير مفهوم انا تحت امر ك
والسلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم

اشكرك اخى فى الله (اكترونى بشري) على هذا الشرح الجميل ولكنى اتسائل بالنسبه لل pointer لانى ارى ان استخداماته مهمه جدا فمثلا رايت مثال
char x=0;
char *temp[3];
temp[0]=x/1000;
temp[1]=x/100;
وهكذا وحاولت ان استخدمه لكى استقبل 24بت على 3 مرات ولم انجح فى ذلك عن طريق spi .والمرسل
adc(mcp3551)


التعديل الأخير تم بواسطة : mero2 بتاريخ 18-12-2012 الساعة 03:50 AM

الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 18-12-2012, 10:43 PM المشاركة 4   
افتراضي


لم افهمك ياخى ارجوا التوضيح ؟


mero2
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 34
نشاط [ mero2 ]
قوة السمعة:0
قديم 19-12-2012, 01:54 AM المشاركة 5   
افتراضي


بسم الله الرحمن الرحيم

اشكرك اخى الكريم على اهتمامك وسعه صدرك إليك اخى الكريم ما اريد

اريد ان اربط adc/24bit (mcp3551)3 مع pic16f877a عن طريق spi

وعندما اطلعت على الداتاشيت وجدت ان adc يرسل 24bit على 3 مرات 8bit فى كل مره وهذه هى الصيغه الموجوده فى الداتاشيت

void read3551 (char *data
}
unsigned char n;
data[2]=readspi ();
data[1]=readspi ();
data[0]=readspi ();
{
ومن خلال توضيحك الكريم فهمت ان data فى هذه الحاله هو pointer والمشكله يا اخى انى لم افهم كيف استغله فى هذا المثال وشكرا لك اخى الفاضل واعتذر اذا كان هناك شئ غير واضح او مفهوم


الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 19-12-2012, 12:34 PM المشاركة 6   
افتراضي


والله يأخى يأسفنا ان اقول لك انى لم اتعمل مع الذى تكلمت عنه اسف اخى لكن ان شاء الله بقية الاخوة بسااعدوك موفق اخى الكريم


mero2
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 34
نشاط [ mero2 ]
قوة السمعة:0
قديم 19-12-2012, 08:30 PM المشاركة 7   
افتراضي


والله يا اخى الكريم برغم انى لم اجد اجابه لسؤالى فانا سعيد والله لانك حاولت معى وشاركتنى موضوعى وان شاء الله على وعد منى لو فهمت شيئا عن هذا الموضوع سوف اضعه فى هذه المشاركه لعل وعسى ان اقدم شيئا صغيرا الى اخى فى الله الكترونى بشرى والى جميع الاخوه فى هذا المنتدى الرائع


mero2
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 34
نشاط [ mero2 ]
قوة السمعة:0
قديم 21-12-2012, 12:18 AM المشاركة 8   
افتراضي


بسم الله الرحمن الرحيم

ولله الحمد اليكم ما عرفته عن المؤشرات pointer

اضافه الى ما شرحه الاخ الفاضل الكترونى بشرى فالمؤشرات تشبه المصفوفات فى طريقه عملها اضافه الى عدم تحديد قيمه مسبقه وإليكم شرح مثال بسيط لما اقصده بالميكروسى والبروتس وفقنا ووفقكم الله الى ما يحب ويرضاه.

http://www.4shared.com/rar/gxwq8nMV/ALL_MICROC_EX.html

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025