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

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 08-06-2017, 09:29 PM المشاركة 1   



السلام عليكم ورحمة الله وبركاته
اخوتي الافاضل اود تعلم البرمجة بلغة الميكرو سي
وقد قام الاخ اسد على جمع ملخصات الاخ فتح الله عبد العزيز وقمت على تحميل الملف وطباعته .
وعند قراءته واجهتني وستواجهني اكيد بعض المفاهيم التي لا اعلمها
وكلي رجاء ان اجد منكم سعة بالصدر وكرم بالردود
شكرا لكم .
بداية اود الاستفسار من الاخ فتح الله حول مايلي:
السجلات tris_ port ضمن الذاكرة sfr الخاصة وكل سجل مكون من بايت بحسب اطراف المتحكم
يعني ان كان للمتحكم ١٦ طرف دخل _ خرج فهذا يعني ان الذاكرة sfr سعتها ٤ بايت اثنان بايت ل tris واثنان لport وان كان للمتحكم ثمان اطراف دخل خرج فهذا يعني ان سعة الذاكرة الخاصة ٢ بايت
هل tris_port تعليمة ام امر بالنسبة للمتحكم .
وهل يمكن تشبيه المداخل كما بالصورة التالية

اعلانات

محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 230
نشاط [ محمد إلياس ]
قوة السمعة:0
قديم 08-06-2017, 11:46 PM المشاركة 2   
افتراضي


وعليكم السلام ورحمة الله وبركاته
1- السجلات tris_ port ضمن الذاكرة sfr الخاصة وكل سجل مكون من 1 بايت ؟
هذا صحيح .
2- يعني ان كان للمتحكم ١٦ طرف دخل _ خرج فهذا يعني ان الذاكرة sfr سعتها ٤ بايت اثنان بايت ل tris واثنان لport وان كان للمتحكم ثمان اطراف دخل خرج فهذا يعني ان سعة الذاكرة الخاصة ٢ بايت ؟
الذاكرة sfr تتضمن مسجلات كثيرة هذه أهمها في البيك PIC16F84a كمثال:
TMR0
PORTA
PORTB
EEDATA
EEADR
OPTION_REG
TRISA
TRISB
EECON1
EECON2
INTCON
كل مسجل يقوم بوظائف محددة
وفي المتحكم PIC16F887A موضوع دورة الستاذ فتح الله عبدالعزيز مسجلات أكثر بكثير للقيام بوظائف أكثر .
سعة كل مسجل 8 بت أو 1 بايت.
المسجلات مذكورة باسمائها في داتا شيت كل متحكم.
3- كل مسجل Portيقابله مسجل tris

كمثال وظيفة المسجل trisb هي برمجة أطراف portb كدخل أو كخرج
trisb يتكون من 8 بت
إذا أسندنا لأي بت من المسجل TRISB القيمة 0 منطقي فهذا معناه أن البت المقابل في PORTB سيبرمج كخرج .
وإذا أسندنا له القيمة 1 منطقي فمعناه أن البت المقابل في PORTB سيبرمج كدخل.
مثال في الميكروسي :
;TRISB=0b01011101
معناه : إجعل المنفذ "ب" هكذا :
الطرف الاول RB0 دخل (البداية من اليمين)
الثاني RB1 خرج
الثالث والرابع والخامس RB2 RB3 RB4 دخول
السادس RB5 خرج
السابع RB6دخل
الثامن والاخير RB7 (وهو المحاذي للحرف b) خرج
0b ليست ضمن عدد بتات السجل هي مجرد كتابة اصطلاحية في الميكروسي .
علما أن تسمية وترتيب الأطراف الاصطلاحي هو الذي وضعته بالانجليزية حيث يسمى الطرف الاول RB0 والطرف الأخير RB7
أي ما مجموعه 8 أطراف.
هكذا ترى أن العبارة trisb تعني اسم مسجل في ذاكرة الرام وفي نفس الوقت تعني تعليمة برمجة هذا السجل.
بالنسبة لطريقة التحويل من دخل إلى خرج والعكس فهي تتم طبعا الكترونيا بواسطة متأرجحات (قلابات) وبوابات
وهذا موضح في الداتا شيت.
مثال:

احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 1 اعجاب
اعجاب F.Abdelaziz ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 09-06-2017, 04:14 PM المشاركة 3   
افتراضي


شكرا لك اخي محمد .
بالنسبة للرسم الذي ارسلته انما اردت به التشبيه لا الدقة كي يتيسر الفهم لي .
لا اعلم عن رقم بالمتحكمات يتعامل معه الاخ فتح الله .
هل يلزمني ان اتعلم الوظائف التي ذكرتها عن السجلات الخاصة.


محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 230
نشاط [ محمد إلياس ]
قوة السمعة:0
قديم 09-06-2017, 05:16 PM المشاركة 4   
افتراضي


بالنسبة للرسم الذي ارسلته انما اردت به التشبيه لا الدقة كي يتيسر الفهم لي
طبعا أخي أنت مهندس الكترونيات ولديك من الخبرة والمعرفة ما يجعلك تدرك بتلقائية أن توجيه الطرف نحو الدخل أو الخرج سيعمل بواسطة سويتشات الكترونية.
ترانزيستورات تعمل كمفتاح أو غيرها ومعززة بذاكرات تحفظ الوضع المطلوب.
لا اعلم عن رقم بالمتحكمات يتعامل معه الاخ فتح الله .
قصدت المتحكم الذي يتناوله الأستاذ فتح الله في الدورة التالية :
http://www.qariya.info/vb/showthread.php?t=209131
هل يلزمني ان اتعلم الوظائف التي ذكرتها عن السجلات الخاصة
إذا كنت تتبع دورة لتعلم البرمجة فأثناء التعلم ستظهر أسماء هذه المسجلات تباعا بحسب تقدم الدورة
بعد التعلم سيكون الاطلاع عليها بحسب الحاجة إليها حسب ما يتطلبه مشروعك وحسب ما يتضمنه البيك:
كلما أردت كتابة كود معين لتنفيذ مهمة معينة ببيك معين ستبحث عن المسجل أو المسجلات التي تقوم بالمهمة المطلوبة.
وبذلك تتعرف على المسجل وما هو دور كل بت من بتاته الثمانية.


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 09-06-2017, 05:23 PM المشاركة 5   
افتراضي


جيد جدا
اذا نترك الوظائف الخاصة بالذاكرة الخاصة تاتي تباعا كما تفضلت
لست مهندسا احمل شهادة ثانوية فقط 😁😁😁
=============================
void main ()
{
TRISB.F0=0;
PORTB=0;
while (1)
{
BORTB.F0=1;
DELAY_MS (1000);
PORTB.F0=0;
DELAY_MS (1000);
}
}
هذا البرنامج الاول وهو عمل وميض ليد بتاخير زمني قيمته واحد ثانية .
لماذا وضعت كلمة (1 )while هنا... عند ماذا سيعمل الليد
ولماذا الرقم واحد بين قوسين بعدها .
لم يوضع لها فاصلة منقوطة while هل سهوا ام يقبل المتحكم فقط لهذه الكلمة بدون فاصلة منقولة .
ارجو منك اخي الكريم ان تشرح لي طريقة عمل المتحكم في تنفيذ هذا الكود فقط
يعني كيفية قراءة المتحكم لهذا الكود .
بارك الله بك


محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 230
نشاط [ محمد إلياس ]
قوة السمعة:0
قديم 09-06-2017, 05:41 PM المشاركة 6   
افتراضي


أخي
1- الخبرة والعلم ليست بالشهادات حصرا ..
2- بالنسبة للاستفسارات حول الكود:
كود:
void main () { TRISB.F0=0; PORTB=0; while (1) { PORTB.F0=1; DELAY_MS (1000); PORTB.F0=0; DELAY_MS (1000); } }
لغة الميكروسي كباقي اللغات لها طريقة كتابة ورموز خاصة بها:
بالنسبة للميكروسي فواصل منقوطة واقواس ومعقوفات وغيرها رموز ينبغي التقيد
وإلا سيعتبر الكومبيلر كل كتابة أو رمز مخالف كخطأ ولن تتم الترجمة أي لن يتم استخراج ملف Hex.
يمكن يريد الاطلاع عليها كاملة لمن يريد في دليل الميكروسي الذي سبق لي أن وضعت لك رابطه .
لكن لا ضرورة لذلك فكل تلك المعطيات تأتي مع الدروس بتدرج وبالقدر الضروري
مما يسهل الحفظ على المتعلم .
كما أن الممارسة ستجعل من ذلك إجراء روتينيا لا يطرح أي مشكل.


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,795
نشاط [ مسلم11 ]
قوة السمعة:183
قديم 09-06-2017, 05:53 PM المشاركة 7   
افتراضي


حياك الله
اخي الكريم افهم منك ان الكلمة او الامر او التعليمة while هي من اساس البرنامج مع العلم انني لا اراها في اكواد اخرى .
وماهو الكومبيلر .
وكيف يقرأ المتحكم هذا الكود لست اقصد آلية العمل التي تجري بداخله .
طيب انت كيف تقرأ هذا الكود .


محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 230
نشاط [ محمد إلياس ]
قوة السمعة:0
قديم 09-06-2017, 06:12 PM المشاركة 8   
افتراضي


[/quote]
ارجو منك اخي الكريم ان تشرح لي طريقة عمل المتحكم في تنفيذ هذا الكود فقط
يعني كيفية قراءة المتحكم لهذا الكود
أعتقد أنك بحاجة للاطلاع على شكل البنية العامة لبرنامج مكتوب للكومبيلر ميكروسي
هذا أحد مواضيع الأخ فتح الله بالقرية إذا عثرت عليه سأضع لك رابطه .
عموما برنامجك سيبدأ بتحديد الطرف RB0 كخرج وذلك بواسطة التعليمة:
; TRISB.F0=0
(داخل التعليمة F0 تعني الخرج الأول للمنفذ "ب" )
بعد ذلك طلبت من البرنامج أن يمسح كل أطراف المنفذ "ب" بواسطة التعليمة:
; PORTB=0
وهذا إجراء احتياطي جيد
هنا انتهى إعداد الخرج
وهذان السطران سيتم تنفيذهما لمرة واحدة ولن يعود البرنامج لهما لانه سيدخل
في الحلقة اللانهائية while (1):
كود:
while (1)
{
PORTB.F0=1;
DELAY_MS (1000);
PORTB.F0=0;
DELAY_MS (1000);
}
هنا سيبقى تنفيذ البرنامج مقصورا على التعليمات الموجودة داخل المعقوفتين التي جعلهتهما بالازرق في الكود

إضافة رد

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

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

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


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

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