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

   

زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 2,945
نشاط [ زكي شاكر ]
قوة السمعة:
قديم 03-05-2009, 04:07 PM المشاركة 513   
افتراضي



السلام عليكم
أخي ابوزكوور :
في انتظار التكملة من الاخوة المهتمين ببرمجة الميكروسي ..تفضل هذه بداية أتمنى ان تساعدك ..
بالعودة إلى البرنامج الأصلي المعمول ب PIC16F84A (هنا)

يتضح إن الخاصية المطلوبة (أن يتوقف العد عند أعلى قيمة تصاعديا وأدنى قيمة تنازليا) مشروطة بإعداد المنفذ A كخرج
وإسناد قيم توقف العد له في كل حالة (الصعود و النزول) ..
من هنا كان لابد من إضافة التعليمات المشابهة الخاصة بالمنفذ "أ" إلى برنامجك ب PIC16F630 ..
هذه الإضافة كانت ضرورية لكنها لم تعط نتيجة فكان لابد من الرجوع الى الداتا شيت ..
في الداتا شيت نقرأ ان أطراف المنفذ A متعددة الوظائف:
1- المنفذ A ذو وظيفة مزدوجة: ادخال رقمي digital أو تناظري analog فهو يتوفر على مقارن مثل PIC16F62x
ينبغي تحييده بالأمر المعروف :
Cmcon = 0x07
2- بعض الأطراف تتحول إلى نهايات للمذبذب إذا تم اختياره كمذبذب خارجي للتمكين من اضافة اعناصر الضرورية ..
اخترت المذبذب الداخلي فزالت هذه المشكلة : كل الأطراف A ( تقريبا) اصبحت I/O ..
كل هذه التعديلات لم تعط نتيجة كاملة ك
فقط العد التنازلي كان يقف عند الصفر ويحقق المطلوب ..أما العد التصاعدي فكان لا يريد التوقف ..
ما هي المشكلة؟
نلاحظ أولا في بروتوس ان RA3 لا يفعل ابدأ (يبقة بلون رمادي )
من أجل ذلك لابد من عودة للداتا شيت للتعرف أكثر على طبيعة هذا الطرف في المنفذ "أ"
حينها سنقرأ معلومة مهمة :
3.2.3.4 RA3/MCLR/VPP
Figure 3-3 shows the diagram for this pin. The RA3 pin is configurable to function as one of the following
a general purpose input
as Master Clear Reset
معنى هذا ان A3 لا يمكن أن تكون مخرجا فقط مدخل..
لذلك فإن العدد 15 (1111) لا يمكن ان يظهر على المنفذ" أ" وبتوسع أكبر كل الأعداد التي تحتاج القيمة الثنائية "1" في البيت 3bit من المنفذ" أ" لن تنفع..
الحل اما حصر العد الاعلى في رقم لا يحتاج "1" في البيت 3bit من المنفذ" أ"
او البحث عن طريقة أخرى نبتعد بها عن شرط عمل البرامج بدون الحاجة الى المنفذ "أ" إعداد متغير داخلي بدل المنفذ أ مثلا ..
والى هنا انتهى دور الاسمبلي وفلوكود وسيبدا دور المهتمين بالميكروسي ..
ملف التجارب:
http://filaty.com/f/905/34356/new.rar.html

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 03-05-2009, 09:18 PM المشاركة 514   
افتراضي


السلام عليكم :
بالنسبة لسؤال ال set و reset هو كالاتي:
اذا ضغطت على احد الكبسات لمدخل على ال pic ان تحفظ رقم 1 واذا لم اضغط يكون الحفظ رقم صفر ويتم الفحص للقيمة بعد مرور زمن يساوي دقيقة مثلا فاذا كان واحد نفذ البرنامج التالي واذا كان صفر يبقى كما هو يقف عند نفس الامر لا يتحرك.
وشكرا
اختي رانية هذا هو الكود
كود:
int x=0; void interrupt() { x=1; intcon.f1=0; } void main() { intcon=0b10010000; option_reg.f6=0; TRISd = 0; PORTd = 0; delay_ms(16000); intcon.f1=0; while(x==0){} portd.f0=1; }
هنا جعلنا زمن الانتظار 15 ثانية يمكنك تغييره من عبارة delay وهذه ملفات المشروع كاملة . بعد عناء طويل و مجهود كبير من الاخوين احمد و فادي جزاهم الله خيرا في الحصول على الكود الخاص بالمقاطعات والتعامل معه

http://www.***********/download/168058/d.rar.html
البرنامج الذي سينفذ اذا ضغطنا على المفتاح هو تشغيل الليد
ملاحظة:يرجى تعديل الجملة بعد عبارة delay بهذا الشكل
كود:
intcon=0;
لكي يتوقف البرنامج في حال عدم الضغط على المفتاح خلال الفترة المحددة


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 04-05-2009 الساعة 01:02 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 428
نشاط [ أبو زكووور ]
قوة السمعة:
قديم 03-05-2009, 10:01 PM المشاركة 515   
attension السلام عليكم


الخاصية المطلوبة (أن يتوقف العد عند أعلى قيمة تصاعديا وأدنى قيمة تنازليا) مشروطة بإعداد المنفذ A كخرج

شكرا لك أستاذ زكي شاكر دائماً و بارك الله فيك

لقد تبين لي ذلك يوم أمس بعد أن يأست من المتحكم PIC16F630 وجعل البورت A يعمل ك خرج توازياً مع البورت C

عملت بالمتحكم PIC16F84A بعد أن لفت نظري مناقشتك مع الأستاذ حيدر
حيث كان سؤالك ( لماذا البورت A موجود في الكود أصلا مع أنه غيرمستخدم في الدارة )
فقمت بإلغاء كل شيء يتعلق بالبورت A (لأننا لسنا بحاجة إليه)
فكانت النتيجة أن العداد يعمل بإنتظام تصاعدياً و تنازلياً
و لكن دون التوقف عند أعلى قيمة و أدنى قيمة ماهو السر ؟؟؟؟؟

http://filaty.com/f/905/11156/PIC16F84Aa.rar.html

(هل شرط توقف البورت B عن العد جعل البورت A خرج ) !!!!!!!!
كيف يمكن تشغيل المتحكم بدون إستخدام البورت A ?????
شكراً لكم و بارك الله فيكم .


التعديل الأخير تم بواسطة : أبو زكووور بتاريخ 03-05-2009 الساعة 10:03 PM السبب: إضافة رابط

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 03-05-2009, 10:15 PM المشاركة 516   
افتراضي


اخي ابو زكور انظر معي الى الكود
كود:
void main() {trisa=0;trisb=0b11000000;porta=0;portb=0b11000000; loop: if(portb.f6==0) {if(porta==9)goto loop; portb++;porta++;delay_ms(500);} if(portb.f7==0) {if(porta==0)goto loop; portb--;porta--;delay_ms(500);} goto loop; }
انت تقول انك الغيت المنفذ A من البرنامج فهل قمت بتغيير محتوى عبارة IF الذي يتعلق بالمنفذ A ؟وتستخدم بدلا منه المنفذ B ؟ لاحظ ان عبارات الشرط التي توقف البرنامج هي متعلقة بالمنفذ A وهي بالضبط التي تسبق عبارة goto loop الاولى والثانية . جرب واخبرنا


الصورة الرمزية hassan_ahmed
hassan_ahmed
:: مهندس ::
تاريخ التسجيل: Apr 2009
الدولة: EGYPT
المشاركات: 16
نشاط [ hassan_ahmed ]
قوة السمعة:
قديم 04-05-2009, 01:38 AM المشاركة 517   
افتراضي


السلام عليكم ورحمة الله وبركاته
اخواني واساتذتي الكرام :
اولا-بارك الله لكم جهدكم وتلبية رغبة الجميع بعدم التوقف
ثانيا-لي رجاء خاص عند الاستاذ حيدر والاستاذ فادي-طبعا بعد الشكر علي توضيح استخدام الكيباد والlcd-ارجوكم ان امكن وضع الفكرة الاساسية في ملف ورد او خلافه مع بعض التمارين البسيطة لتاكيد الفكرة وتثبيت المعلومة ولو هناك اي ملاحظات علي الهارد وير عند تنفيذه اكون من الشاكرين لكم لان سرعة اتصال النت عندي تكاد تكون معدومة فالتصفح بالنسبة لي معاناة

اسف علي الطلبات الكثيرة لكن ظني انكم لن تحرمونا من علمكم وجزاكم الله جميعا خير الجزاء


الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 428
نشاط [ أبو زكووور ]
قوة السمعة:
قديم 04-05-2009, 04:09 AM المشاركة 518   
attension السلام عليكم


شكرا للأستاذ زكي شاكر و للأستاذ حيدر

أرجوا الإطلاع على ملف التجربة للمتحكم PIC16F630
لقد عملت و بفضل الله و بفضلكم بنجاح بعد جهد جهيد
بإستخدا منفذ واحد فقط البورت C للمخارج و المفاتيح
ولكن بعد تعديل الكود أيضاً


http://filaty.com/f/905/45941/PIC16F630.rar.html

أخي حيدر لقد أجريت التعديل على الكود و ألغيت المنفذ A
و لكن العداد لم و لن يتوقف أبدا عن العد لا تصاعديا و لا تنازليا
لأنه في العد التصاعدي التوقف مشروط بأن يكون
portb==15 كيف ذلك ؟؟؟ هذا مستحيل و لن يتحقق
لأن b6 b7 حالتهم المنطقية متغيرة ( عند عدم الضغط على المفتاح تكون 1 و عند الضغط على أحد المفاتيح تكون 0
أي أنه عند الرقم 15 ( 00001111 ) شرط الوقوف تكون حالة المنفذ b 01001111 غير مطابقة للشرط
كذلك الحال بالنسبة للعد التنازلي
شكرا لكم و لجهودكم .


التعديل الأخير تم بواسطة : أبو زكووور بتاريخ 04-05-2009 الساعة 04:22 AM السبب: إضافة

زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 2,945
نشاط [ زكي شاكر ]
قوة السمعة:
قديم 04-05-2009, 03:08 PM المشاركة 519   
افتراضي


بارك الله فيك أخي ابو زكوور
شكرا لك ايضا على الفرصة التي منحتها لي للاطلاع
على خفايا المتحكم PIC16F630
قصد الاستفادة منه


التعديل الأخير تم بواسطة : زكي شاكر بتاريخ 25-05-2009 الساعة 08:26 PM

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 04-05-2009, 08:41 PM المشاركة 520   
افتراضي


السلام عليكم

شكرا لك اخي ابو زكور على التوضيح..لقد حاولت ان اشغل البورت C ولكنه لم يعمل..وعندما نويت ان اضع استفسار عن البرنامج وارفق البروتوس اشتغل لوحده مش عارف ليش...ههههههه..بارك الله فيكم على الفكرة..وجزاكم الله خيرا جميعا بما فهم مشرفنا الغالي زكي..بالتوفيق جميعا..

واخر دعوانا ان الحمدلله رب العالمين..وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..



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