السلام عليكم
كيف حال الجميع ؟ اتمنى ان تكون الصحة بخير واموركم على خير ما يرام..
اخي Moi12 :
قد بحثت عن الداتاشيت للمتحكم لديك فوجدت ان هناك تشابه بين
(PIC16f876A&PIC16F877A) وبالتالي التعامل معهما متشابه ..وللتحويل من دخل تشابهي الى رقمي(على البورت A) تستخدم سجل (CMCON) لتحويله الى دخل او خرج رقمي..[لا اعرف القيمة ان كانت تشبه المتحكم PIC16F628A هل هي (0x07) ام تحتلف فهذا يعتمد على الداتا شيت للمتحكم ولم اتعامل معه فعليا...]..وعندما تريد حرق برنامج الى البيك فان اول خطوة يعملها البرنامج هي مسج البرنامج القديم ومن ثم نسخ البرنامج الجديد فلا تشغل بالك بهذه النقطة كثير..حدود الجهد للمتحكم موجود ضمن الداتا شيت وهي بحدود (2فولت- 5.5 فولت ) تقريبا تبعا للداتا شيت للعنصر الذي لديك... اما المبرمجة التي وضعتها فستعمل معك باذن الله تعالى شريطة الاستعانه بالله وحده ..وان شاء الله ستحصل على كل خير..ولاي استفسار فالجميع ان شاء الله جاهزون للمساعدة..
موضوع زمن تنفيذ الاوامر :
ان موضوع زمن تنفيذ التعلميات يشغل الكثير من الناس وانا منهم..فكيف اعمل ساعة مع دقة التوقيت ؟؟وكيف احصل على عداد ثواني لتطبيق معين؟ هذا يشغلني الى الان...ولكن يجب عدم الخلط بين ازمنة تنفيذ التعليمات في الاسيمبلي مع لغات البرمجة عالية المستوى مثل الميكروبيسك والميكروسي..فالاسمبلي تبرمج مثل الطفل تماما يعمل فقط ما تامره به حرفيا وبالخطوات التي تامره بها ...ولتوضيح الفرق بين تنفيذ التعليمات بين الاسيبملي واللغات الاخرى مثل الميكروسي ساطرح مثالا بسيطا...
ان كان لديك طفل (رقم 1)عمره سنه والجو في عز البرد وهو يبكي وانت تريده ان يخرج خارج الغرفة التي لديك ليصل الى والدته التي في المطبخ مثلا..طبعا لن يستطيع الا اذا كان عبقري زمانه...
فيكون الخطوات التي يجب ان تعملها ليصل الى النتيجة هي كالتالي:
1-تخبره انك تريد منه الذهاب للمطبخ (حتى يفهم عليك والا بدك اياه يطلع في هالبرد من الغرفة ويترك لك المدفأة)
2-يقف الولد على قدميه.
3-يمشي باتجاه الباب.
4-يفتح الباب.
5-يتحرك خارج الغرفة.
6-يغلق الباب.
7-يسير بالتجاه المطبخ.
8-عندما يصل الى المطبخ تكون وصلت لمرادك(وهو انك حلللت مشكلة صراخه المزعج وتقدر تنام بهدوء).
طبعا نلاحظ كم الخطوات السابقة..وهكذا تتعامل الاسيمبلي بالخطوات البسيطة والمتسلسلة..طبعا كل خطوة من السابقة تاخذ فترة زمنية معينه ولنسمها (نبضة الساعة) اي نحتاج تقريبا 8 نبضات ساعة لتنفيذه في الاسيمبلي..اما لو كان لديك ولد عاقل وراشد (رقم 2)فاخطوات كالتالي:
1-تخبره انك تريد ان يخرج من الغرفة.
2-يقوم ويتجه الى الباب.
3-يخرج من الغرفة .
4-يصل الى المطبخ.
نلاحظ كمية الاختصار في التعليمات..فهي اصبحت 4 تعليمات..فليس هناك داعي لتوقف الولد بنفسك وتذكره ان يفتح الباب(والا كيف بدو يطلع وهو مغلق) وبعدها لازم يطلع ويغلق الباب خلفه ويتجه الى المطبخ وهناك يصل الى والدته..فهو يفهم انه ليذهب هناك يجب ان يخرج خارج الغرفة ويتجه الى المطبخ ..
وبالتالي نلاحظ ان هناك اختصار كبير في التعليمات وهذا ما تفعله اللغات مثل الميكروسي وغيرها تختصر ذلك في تعليمات بسيطة وسريعة..الان اذا سالتك كم نبضة ساعة عمل يحتاج الولد الثاني؟؟؟ ستقول 4 نبضات..هذا طبعا غير صحيح؟؟ فالخطوات التي عملها الولد في المثال الثاني هي نفس الاولى(مثل الوقوف وفتح الباب والخروج من الغرفة واغلاق الباب...الخ) وبالتالي فهو يحتاج الى 8 نبضات ساعة ايضا..اعتقد الان ظهر الفرق بين الاثنين..
فاللغات مثل الميكروسي تختصر الكثير من الخطوات في تعليماتها على عكس الاسيمبلي والتي يجب ان توضح كل الخطوات وتسلسلها والا لن تصل الى النتيجة الصحيحة والمرجوة من البرنامج..
ان المتحكم يحتوي بداخله على حجرات ذاكرة ويحتاج لاوامر للانتقال بين الحجرة والتي بجانبها..كما ان اخراج الارقام يحتاج خطوات ليوصل المعلومات من مكانها في الحجرات الى المعالج المركزي ومن ثم اخراجها الى المخارج مثلا..وبالتالي المقياس الفعلي هو العمل في الاسيمبلي وليس العمل في الميكروسي وغيرها .فهي تختصر عدة خطوات في امر واحد .وهذا ما يسبب الخطأ في حساب ازمنة تنفي التعليمات في الميكروسي وغيرها...ارجو ان اكون اوصلت الفكرة واي استفسار يمكن طرحه وان شاء الله تحصل على اجابة من جميع المشاركين..
واخر دعوانا ان الحمدلله رب العالمين..وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..