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

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,841
نشاط [ مسلم11 ]
قوة السمعة:186
قديم 16-05-2017, 02:06 PM المشاركة 1   
افتراضي تعلم برمجة الpic Twitter FaceBook Google+



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


التعديل الأخير تم بواسطة : مسلم11 بتاريخ 16-05-2017 الساعة 02:09 PM
احصائية الشكر والاعجاب - 1 شكراً, 1 عدم اعجاب, 0 اعجاب
شكراً F.Abdelaziz ( شكر العضو على هذه المشاركة )
عدم اعجاب abu-thabit ( لم تعجبه المشاركة )
اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:334
قديم 16-05-2017, 06:05 PM المشاركة 2   
افتراضي ما هو الميكروكونترولر Microcontroller ؟


ما هو الميكروكونترولر Microcontroller ؟
الميكروكونترولر هو كمبيوتر صغير مدمج فى شكل دائرة متكاملة (شريحة) واحدة ، فهو يحتوى بداخلة ، فى الأساس ، على وحدة معالجة مركزية CPU وذاكرات ( ذاكرة البرنامج من نوع الفلاش Flash ، وذاكرة البيانات من نوع RAM ، وذاكرة البيانات الثابتة من نوع EEPROM ) ، ووحدات (منافذ) الدخل / الخرج I/O Ports بالإضافة إلى العديد من الوحدات الأخرى كما هو موضح بالشكل التالى :







وحدة المعالجة المركزية هى قلب الميكروكونترولر ، وهى الجزء الخاص بتنفيذ التعليمات من برنامج المستخدم .
ذاكرة البرنامج الفلاش Flash هى المكان الذى يتم فيه حفظ البرنامج ، وذاكرة البيانات RAM هى مواقع حفظ البيانات المتغيرة أثناء تشغيل البرنامج ، كل موقع من مواقع هذه الذاكرة مكون من بايت واحد ( البايت مكون من 8 بتات bit0-bit7 ) ، هذه المواقع تسمى "السجلات Registers وهى مقسمة إلى جزأين : "سجلات الوظائف الخاصة" SFR ، وسجلات الوظائف العامة GPR . كل سجل من سجلات الوظائف الخاصة يقوم بوظيفة محددة ، فعلى سبيل المثال "سجلات التحكم فى اتجاه منافذ الدخل / الخرج" وتسمى TRISx ، كل منفذ له سجل تحكم خاص به ( TRISAالسجل للمنفذ PORTA والسجل TRISB للمنفذ PORTB وهكذا) . كل سجل TRIS مكون من 8 بتات وكل بت تتحكم فى اتجاه طرف منفذ دخل/خرج ، فعندما تكون بت السجل TRIS بواحد “1” فإن ذلك يجعل طرف المنفذ المناظر يعمل كدخل Input (لاحظ الحرف “I” وقيمة الواحد “1” )، وعندما تكون بت السجل TRIS بصفر “0” فإن ذلك سوف يجعل طرف المنفذ المناظر يعمل كخرج Output ( لاحظ الحرف “O” وقيمة الصفر “0” ) .



ذاكرة البيانات الثابتة من النوع EEPROM تحتفظ بالبيانات التى بداخلها حتى مع غياب القدرة الكهربية عن الميكروكونترولر على خلاف البيانات التى يتم حفظها فى ذاكرة RAM فإنه يتم محوها (فقدها) بمجرد غياب القدرة أو حتى إعادة تشغيل الميكروكونترولر .
وحدات الدخل/الخرج هى وسيلة الربط Interface بين العالم الخارجى وداخل الميكروكونترولر . وحدات أو منافذ الدخل / الخرج يمكن أن تستقبل بيانات (مداخل) ، أو ترسل بيانات (مخارج ) أو تقوم بوظيفة خاصة تبعا لسجلات التحكم الموجودة بذاكرة RAM .
برنامج الميكروكونترولر هو مجموعة من التعليمات التى يتم تنفيذها عن طريق وحدة المعالجة المركزية . لغة البرمجة التى سوف نستخدمها هى لغة السى مع المترجم ميكروسى برو والتى سوف نتناولها لاحقا .
بعد كتابة البرنامج وترجمته نحصل على ملف بالامتداد "هكس" (.hex) وهو الذى يتم تحميله داخل ذاكرة البرنامج للميكروكونترولر عن طريق جهاز برمجة خاص بذلك .

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,841
نشاط [ مسلم11 ]
قوة السمعة:186
قديم 16-05-2017, 10:50 PM المشاركة 3   
افتراضي


بارك الله بك بارك الله بك تابع اخي الكريم


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,841
نشاط [ مسلم11 ]
قوة السمعة:186
قديم 17-05-2017, 03:08 AM المشاركة 4   
افتراضي


]ما هو الميكروكونترولر Microcontroller ؟ [/COLOR]
الميكروكونترولر هو كمبيوتر صغير مدمج فى شكل دائرة متكاملة (شريحة) واحدة ، فهو يحتوى بداخلة ، فى الأساس ،
على وحدة معالجة مركزية CPU .
وذاكرات ( ذاكرة البرنامج من نوع الفلاش Flash ، وذاكرة البيانات من نوع RAM ،
وذاكرة البيانات الثابتة من نوع EEPROM ) ، ووحدات (منافذ) الدخل / الخرج I/O Ports بالإضافة إلى العديد من الوحدات الأخرى .
وحدة المعالجة المركزية هى قلب الميكروكونترولر ، وهى الجزء الخاص بتنفيذ التعليمات من برنامج المستخدم .
ذاكرة البرنامج الفلاش Flash هى المكان الذى يتم فيه حفظ البرنامج ،
وذاكرة البيانات RAM هى مواقع حفظ البيانات المتغيرة أثناء تشغيل البرنامج .
كل موقع من مواقع هذه الذاكرة مكون من بايت واحد ( البايت مكون من 8 بتات bit0-bit7 ) .
هذه المواقع تسمى "السجلات Registers وهى مقسمة إلى جزئين :
١_ "سجلات الوظائف الخاصة" SFR .
٢_ وسجلات الوظائف العامة GPR .
كل سجل من سجلات الوظائف الخاصة يقوم بوظيفة محددة ، فعلى سبيل المثال "سجلات التحكم فى اتجاه منافذ الدخل / الخرج" وتسمى TRISx ، كل منفذ له سجل تحكم خاص به ( TRISAالسجل للمنفذ PORTA والسجل TRISB للمنفذ PORTB وهكذا) . كل سجل TRIS مكون من 8 بتات وكل بت تتحكم فى اتجاه طرف منفذ دخل/خرج ، فعندما تكون بت السجل TRIS بواحد “1” فإن ذلك يجعل طرف المنفذ المناظر يعمل كدخل Input (لاحظ الحرف “I” وقيمة الواحد “1” )، وعندما تكون بت السجل TRIS بصفر “0” فإن ذلك سوف يجعل طرف المنفذ المناظر يعمل كخرج Output ( لاحظ الحرف “O” وقيمة الصفر “0” ) .



ذاكرة البيانات الثابتة من النوع EEPROM تحتفظ بالبيانات التى بداخلها حتى مع غياب القدرة الكهربية عن الميكروكونترولر على خلاف البيانات التى يتم حفظها فى ذاكرة RAM فإنه يتم محوها (فقدها) بمجرد غياب القدرة أو حتى إعادة تشغيل الميكروكونترولر .
وحدات الدخل/الخرج هى وسيلة الربط Interface بين العالم الخارجى وداخل الميكروكونترولر . وحدات أو منافذ الدخل / الخرج يمكن أن تستقبل بيانات (مداخل) ، أو ترسل بيانات (مخارج ) أو تقوم بوظيفة خاصة تبعا لسجلات التحكم الموجودة بذاكرة RAM .
برنامج الميكروكونترولر هو مجموعة من التعليمات التى يتم تنفيذها عن طريق وحدة المعالجة المركزية . لغة البرمجة التى سوف نستخدمها هى لغة السى مع المترجم ميكروسى برو والتى سوف نتناولها لاحقا .
بعد كتابة البرنامج وترجمته نحصل على ملف بالامتداد "هكس" (.hex) وهو الذى يتم تحميله داخل ذاكرة البرنامج للميكروكونترولر عن طريق جهاز برمجة خاص بذلك .
[/B][/SIZE][/QUOTE]
اخي الكريم
مالمقصود بالسجلات الخاصة والعامة والاحرف الانكليزية الى ماذا تدل هل هي اختصار لجملة.
وبالنسبة للسجل TRIS ما هو وماذا يعني هل هو اختصار لجملة ايضا ام مجرد تعليمة وكذلك المنفذ port.
كما ارجو منك ان تتوقف الى ان افهم ما ذكرت مشكورا حتى اخبرك بالمتابعة .
شكرا لك على سعة صدرك.☺😘


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:112
قديم 19-05-2017, 01:45 AM المشاركة 5   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


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



لكل مهتم وملم التعلم برمجه الميكرو كنترولر اليكم هذا الشرح المتواضع ..


اولا اللغه المستخدمه هي لغه ال ( C ) والمترجم هو


والمتحكم اللذي سوف يتم الشرح عليه واستخدامه في مشاريع للمستول الأول أو المبتدأ ..

هو الميكرو كنترولر
...

وهو من انتاج شركه ميكرو شيب العالميه ..

ويسمي بال "" pic ""




ونبدأ بالأساسيات أو خلينا نقول الأوامر الضروريه اللتي تستخدم في كل برنامج وهي اعدادات تهيئه الميكرو كنترولر ...



اولا يوجد في جميع لغات البرمجه قواعد اساسيه ... وللعلم لغه "" السي "" هي أم اللغات وجميع الغات البرمجيه الموجوده حاليااا هي مشتقه من لغه "" السي "" ولذالك انصح في البدايه ان نبدأ بالغه السي .. للأهميتها كما وضحت سلفاااا ..


أولا اليكل الأساسي للبرنامج وهى يسمي الداله الرأيسيه ..

وصيغتها كالتالي ...


كود:
  
     void main() {
     
   

     }  

لكل داله في لغه البرمجه يحكمها قوسين قوس بدايه الداله وقوس نهايه الداله كما هو واضح اعلاه ..


خلينا نبدأ في عمل مشروع بسيط .. وهو برنامج يضئ ليد بستخدام الميكرو كنترولر PIC16F877A >>


نبدأ في اضافه اكواد التعريفات في هيكل البرنامج .. أو خلينا نقول الداله الرأيسيه ..

كود:
  void main() {
     
    
       TRISB = 0B00000000 ; 
     
       PORTB = 0B00000000 ; 

        PORTB = 0B00000001 ;


   } 
خلينا نشوف الأضافات اللتي ادخله علي الداله الرأيسيه ..


وهي هذه الأكواد
كود:
     TRISB = 0B00000000 ; 
هذا الأمر هو أمر "" تعريف "" أي بمعني أكثر وضوحااا """ نحن من خلال هذا الأمر نخبر البك بأننا نريد استخدام البورت "" B "" بالكامل نستخدمه ك خرج أي بمعنى أوضع البورت "" B "" استخدام البورت "" B "" في اخراج "" 1 "" منطقي " أو "" 0 "" منطقي "" وللتوضيح أكثر الواحد منطقي يساوي " 5 فولت " والصفر منطقي يساوي " 0 فولت "" يعني البورت "" B "" هيكون استخدامه في اخراج 5 فولت علي ارجه ال 8 أو أخراج صفر فولت ..


ونأتي الي الأمر الثاني وهو ""
كود:
  PORTB = 0B00000000 ;
وهذا الأمر يخبر البك أن يخرج " 0 فولت علي ال 8 أرجل من البورت " B " وهذا الأمر يستخدمه المبرمجين لضمان عدم حدوث مشاكل في بدايه تشغيل البرنامج ولضمان أن الميكرو كنترولر لم يخرج أى فولتيات عل البورت " B " في بدايه البرنامج ..


ونأتي الأن الي الأمر المهم وهو اساسا اللذي يخبر البك بما نريده وهو تشغيل الليد الموصل علي الرجل رقم ( 1 ) في البورت ( B ) وهو ك التالي
كود:
   PORTB = 0B00000001 ; 
نلاحظ اختلاف بسيط في الأمر وهو وضع رقم ( 0B00000001 ) ماذا يفسر هذا كما نعلم أن الميكرو كنترولر يحتوي عل 8 بيت لكل بورت وتتمسل هذه في ال 8 أرجل وكل رجل نريد استخدامها في الميكرو كنترولر نسند اليها ما نريد من أوامر ..


مثال
كود:
   PORTB = 0B00000111 ; 
نلاحظ أن تم اسناد 3 وحايد مكان ال 3 أصفار في البورت " B " وهذ ا نخبر الميكرو كنترولر أننا نريد أخراج ( 5 فولت علي كل من الرجل رقم واح "" و الرجل رقم اثنان "" والرجل رقم ثلاثه ... وباقي الأرجل تخرج ( 0 فولت وهم الرجل رقم اربعه وخمسه الي الوصل للرجل رقم 8 ..

الي هذا الحد جميل جداااا ..

خلينا نجرب هذ الكود علي برنامج المحكاه ..




تم توصيل الليد فى البن رقم واحد علي البورت "" B "" كما هو واضح في الدائرة ..

الكود المستخدم هو..


كود:
code]   void main() {
     
     
     
       TRISB = 0B00000000 ;
     
       PORTB = 0B00000000 ;


        PORTB = 0B00000001 ;


   } 


تحياتي والقادم أحسن ان شاء الله


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 19-05-2017 الساعة 02:55 AM
احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 1 اعجاب
اعجاب مشتاق الله ( أعجبته المشاركة )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:112
قديم 19-05-2017, 02:28 AM المشاركة 6   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


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


اليكم الإضفات الجديده علي البرنامج المستخدم في إضائه الليد ..

كود:
  void main() {
     
       TRISB = 0B00000000 ;
       PORTB = 0B00000000 ;

        while(1)
        
        {
        
          PORTB = 0B00000001 ;
        
          delay_ms(1000);
         
          PORTB = 0B00000000 ;

          delay_ms(1000);
         
         
       }

   }  
كما ذكرنااا في السابق وشرحنا الأساسيات الضروريه لأنشاء أي برنامج للتحكم في الميكرو كنترولر ..

ولم نكرر الحديث عنها ..
.

ونأتي الي الأوامر الجديده وهي ...
كود:
  while(1)
هذا الأمر هو حلقه تكرار تجعل الميكرو كنترولر ينفذ الأوامر الموجوده داخل قوسين هذة الحلقه الي ما لا نهايه ... وهذا الأمر مهم جدااا لأن بدونه الميكرو كنترولر لم ينفذ الأوامر الا مره واحد فقط .. وعند فص التيار عن الدائرة وتشغيلها مرة اخري ينفذ الأوامر ايضاااا مره واحده فقط ولهذا يأتي اهميه هذا الأمر أو خلينا نقول هذة الحلقه التكراريه ...
كود:
 while(1) 
وهي ايضااااا لها قوسين قوس بدايه وقوس نهايه ..


نأتي الي الأوامر المهمه اللتي سوف ينفذها الميكرو كنترولر ...وهي ك التالي ..
كود:
     void main() {
     
       TRISB = 0B00000000 ;
       PORTB = 0B00000000 ;

        while(1)
        
      {
        
          PORTB = 0B00000001 ;
        
          delay_ms(1000);
         
          PORTB = 0B00000001 ;

          delay_ms(1000);
         
         
       }

   } 

نلاحظ ايضاااا وجود أمر جديد وهو ""
كود:
   delay_ms(1000);
هذا الأمر مهم جداااا لأنه يجعل الميكرو كنترولر أن يتوقف أو ينتظر لوقت نحددة نحن من خلال هذا الأمر ...


نأتي لشرح البرنامج ..

ملحوظه مهمه جداااا ما هي طريه سريان البرنامج أو الكود ؟؟؟


في بدايه تشغيل الدائرة يبدأ البرنامج بقرأة الكود من أول الداله الرأيسيه نزولا الي أسفل لكي يقرأ كل ما هو قادم في طريقه ..



وهنا بعد قرأه التعريفات والدخول في حلقه التكرار ..

نلاحظ أن أول أمر هو إضائه الليد الموصل في البن رقم واحد من البورت "" B "" وهو ك التالي
كود:
 PORTB = 0B00000001 ; 
هذا الأمر كما ذكرناااه هو لأخبار الميكرو كنترولر بأن يخرج 5 فولت علي الرجل رقم واحد من البورت "" B "" وبعد ذالك يأتي دور الأمر التالي ""
كود:
  delay_ms(1000);
وهو أمر يجعل الميكرو كنترولر أن ينتظر ال ( واحد سانيه ) ... وبعد ذالك ندخل عل الأمر التالي ""
كود:
   PORTB = 0B00000000 ;  
وهذا الأمر يأمر الميكرو بأن يخرج ( صفر فولت علي جميع أرجل البورت "" B "" وبالتالي اطفاء الليد ..

وبعد ذالك ندخل في أمر الأنتظار من جديد
كود:
     delay_ms(1000);  
وهو يجعل الميكرو كنترولر ان ينتظر ال واحد سانيه بعد ما تم اطفاء الليد ...



وبد ذالك يذهب البرنامج الي حلقه التكرار الا نهائي ..
كود:
    while(1)
لكي يبدأ في تنفيذ البرنامج والأوامر من جديد ... وهكذا ال ما لا نهايه ..




لمحه سريعه علي هذا الأمر المهم جدااااا ..
كود:
   delay_ms(1000);

في الحقيقه الميكرو كنترولر ينفذ الأوامر بشكل سريع جداااا وتعتمد سرعه تنفيذ الأوامر عل الكرساله المستخدمه .. قد تصل سرعه البرنامج الي 4 مليون في السانيه الواحده ..

لتفسير هذاا خلينا نعطي مثال علي البرنامج اعلاه وهو برنامج فليشر يجعل الليد يضي وينتظر واحد سانيه وينطفئ وينتظر واحد سانيه بشكل دائم لا نهائي ..



وهنا .. خلينا نتخيل أننا كتبنا البرنامج بدون استخدام أمر الإنتظار هذا
كود:
delay_ms(1000);
؟؟


ايه اللي ممكن يحدث في هذة الحاله ؟؟؟؟


اللذي سوف يحدث هو ك التالي ..

البرنامج سوف يضئ الليد من خلال هذا الأمر
كود:
   PORTB = 0B00000001 ; 
وبسرعه كبيرة جدااا يذهب الي الأمر التالي وهو اطفاء الليد
كود:
  PORTB = 0B00000000 ; 
وبالتالي هذة السرعه الرهيبه لا نستطيع ملاحظه اطفاء وتشغيل الليد لأن سرعه اطفاء وتشغيل الليد سريعه جداااا قد تصل الي 4 مليون مرة في السانيه الواحدة ..


وهذا يأتي دور هذا الأمر المهم وهو أمر الإنتظار
كود:
    delay_ms(1000);  

وهو كماذكرنااا أن الميكرو سوف يضئ الليد وينتظر الي واحد سانيه وينطفئ الليد وايضااا ينتظر واحد سانيه ..

أرجو أن يكون الشرح واضح

والقادم أحسن ان شاء الله


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 19-05-2017 الساعة 03:10 AM
احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً عريبى محمود ( شكر العضو على هذه المشاركة )

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


[QUOTE=عبدالله حجازى;1097358][SIZE="3"]السلام عليكم ورحمه الله وبركاته ..






نلاحظ أن أول أمر هو إضائه الليد الموصل في البن رقم واحد من البورت "" B "" وهو ك التالي
كود:
 PORTB = 0B00000001 ; 
هذا الأمر كما ذكرناااه هو لأخبار الميكرو كنترولر بأن يخرج 5 فولت علي الرجل رقم واحد من البورت "" B

ولاكنك اخ عبدالله في الشرح تقول بن رقم واحد من البورت B والمثال ينطبق على بورت B 0 والبن 33 ؟؟؟؟


الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,841
نشاط [ مسلم11 ]
قوة السمعة:186
قديم 19-05-2017, 07:45 AM المشاركة 8   
افتراضي


اخي عبد الله تحية طيبة
من اين تاتي بهذه الاوامر او التعليمات .
well .delay وكل امر الارد وينو يوجد لها صفحة اوامر فهل يوجد لاي برنامج للPic مثل هذه الصفحة اخوتي الاكارم
لا اعتقد ان طلبي غامض اريد فقط الاوامر ماعدت اريد التعلم فقط الاوامر .

احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 1 اعجاب
اعجاب يعرب مطر ( أعجبته المشاركة )
موضوع مغلق

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

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

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


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

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