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

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

اوشة محمود
:: مهندس ::
تاريخ التسجيل: Feb 2015
المشاركات: 38
نشاط [ اوشة محمود ]
قوة السمعة:0
قديم 22-01-2017, 11:16 PM المشاركة 1   
angry اضاءة 3 ليد بمفتاح واحد Twitter FaceBook Google+





ارجو مساعدتى فى برنامج لاضاءة 3 ليد بمفتاح واحد

يعنى بالضغط على المفتاح يضاء الليد الاول
بالضغط ثانية على المفتاح يضاء الليد الثانى مع استمرار اضاءة الليد الاول
وبالضغط تالثا على المفتاح يضاء الليد الثالث مع استمرار اضاءة الليد الثانى والثالث
وبالضغط رابعا على المفتاح يتم اطفاء الــ3 ليدات

وهكذا وياريت باستخدام البيك 84A او البيك 628A

ولكم جزيل الشكر لكل من ساعدنى

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

الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:0
قديم 23-01-2017, 12:56 AM المشاركة 2   
افتراضي


كود:
void main() {
TRISB = 0x00;
trisa = 0xFF;

portb=0;


        while(1) {
             if(porta.b0==1) {
             
             while(porta.b0==1) {  }
               
             portb  = (portb<<1)+1;
             if(portb==15)  { portb=0; }

          }
        }
وضعت الليدات على ال PORTB البت 0 و 1 و 2
المدخل هو PORTA.B0 ، لازم يعطي واحد أثناء الضغط على الزر

تحياتي..

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

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 23-01-2017, 01:21 AM المشاركة 3   
sun


كود:
void main() {
TRISB = 0x00;
trisa = 0xFF;

portb=0;


        while(1) {
             if(porta.b0==1) {
             
             while(porta.b0==1) {  }
               
             portb  = (portb<<1)+1;
             if(portb==15)  { portb=0; }

          }
        }
وضعت الليدات على ال PORTB البت 0 و 1 و 2
المدخل هو PORTA.B0 ، لازم يعطي واحد أثناء الضغط على الزر

تحياتي..
كود مختصر , الله يزيدك
جميييييييييييييييل


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

اوشة محمود
:: مهندس ::
تاريخ التسجيل: Feb 2015
المشاركات: 38
نشاط [ اوشة محمود ]
قوة السمعة:0
قديم 23-01-2017, 10:56 PM المشاركة 4   
افتراضي


شكرا كثيرا اخوانى على الرد السريع والاهتمام البالغ

قمت بوضع البرنامج على برنامج ميكروسى وكانت النتيجة ان


بهاخطـــأ مثل الصورة ادناه


وبتحليل برنامج حضرتك تبين ســـهوا عدم وجود قوس مثل الصورة ادناه وبوضعه لم يعد به خطأ



وبتطبيق البرنامج على الدائرة المذكورة ادناه وعلى الدخل A0 وعلى المخارج B0 -B1 B2 وبالبيك رقم 16F628A تبين انها تضىء الليد الاول

فقط ولا شىء غير ذلك



ارجو منك اخى تعديل البرنامج ولكم كل الشكر والسلام عليكم






















احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً عريبى محمود ( شكر العضو على هذه المشاركة )

الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:0
قديم 24-01-2017, 02:56 AM المشاركة 5   
افتراضي



وبتطبيق البرنامج على الدائرة المذكورة ادناه وعلى الدخل A0 وعلى المخارج B0 -B1 B2 وبالبيك رقم 16F628A تبين انها تضىء الليد الاول

فقط ولا شىء غير ذلك



ارجو منك اخى تعديل البرنامج ولكم كل الشكر والسلام عليكم



تأكد من مطابقة نفس البيك ونفس الاعدادات في الميكروسي وال ISIS
الكود شغال جربته على PIC16F628A , 16F84A ولا مشكلة

ملاحظة: لاداعي لوضع تلك المقاومات ودارة المذبذب في المحاكاة...


الصورة الرمزية salah56bachir
salah56bachir
:: مهندس متميز ::
تاريخ التسجيل: Nov 2012
الدولة: بلاد العرب
المشاركات: 497
نشاط [ salah56bachir ]
قوة السمعة:0
قديم 24-01-2017, 05:19 AM المشاركة 6   
x1


كود:
void main() {
TRISB = 0x00;
trisa = 0xFF;

portb=0;


        while(1) {
             if(porta.b0==1) {
             
             while(porta.b0==1) {  }
               
             portb  = (portb<<1)+1;
             if(portb==15)  { portb=0; }

          }
        }
وضعت الليدات على ال PORTB البت 0 و 1 و 2
المدخل هو PORTA.B0 ، لازم يعطي واحد أثناء الضغط على الزر

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


الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:0
قديم 24-01-2017, 02:31 PM المشاركة 7   
افتراضي


السلام عليكم أخي ياسين
هلا تفضلت بوضع تنويه أمام آخر سطرين حتى يتضح معنى الكود...أو تكرمت بشرح موجز للكود كله خصوصا وأنه مختصر ورائع حتى تتم الفائدة....تحياتي.
وعليكم السلام .. بالتأكيد أخي ، هذا شرح موجز أتمنى أن يفيدك ..

هذا الجزء الشائع :
كود:
if(porta.b0==1) {       
             while(porta.b0==1) {  }
              //كود
}
أعتقد واضح ,, يختبر حالة دخل المفتاح إذا ما وجد 1 (يعني الزر مضغوط) يدخل في حلقة فارغة لينتظر
حتى تنتهي الضغطة،، ثم ينفد التعليمات ..

------
الكود بسيط جدا أولا
كود:
portb=portb<<1;
//هذه التعليمة تعمل ازاحة للبور b بت واحد باتجاه اليسار
لو كان مثلا:
كود:
PORTB = 0B00000111
النتيجة:
كود:
PORTB = 0b00001110
- - -

في حالتنا هذه في البداية تكون قيمة ال portb = 0b00000000
-السطر الأول يعمل ازاحة نحو اليسار ثم يضيف واحد للنتيجة
مثال:
كود:
0b00000000 بعد الإزاحة 0b00000000 بعد إضافة واحد 0b00000001
مثال اخر
كود:
0b00000001 بعد الإزاحة 0b00000010 بعد إضافة واحد 0b00000011 ...
وهكذا في كل مرة تتحرك الوحدات إلى اليسار ويضاف واحد ليملئ الفراغ في اليمين..

-السطر الثاني ببساطة يختبر ال portb إذا ما وصل للقيمة 1111 يعيده للصفر .. وتتكرر الدورة من جديد

أتمنى أن تتضح الفكرة,,
تحياتي..

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

اوشة محمود
:: مهندس ::
تاريخ التسجيل: Feb 2015
المشاركات: 38
نشاط [ اوشة محمود ]
قوة السمعة:0
قديم 24-01-2017, 09:37 PM المشاركة 8   
win


تم تجربة البرنامج وكان شغال 100% على بيك 84 وبيك 626 شكرا لاخى ياسين الحانوتى اشكره من كل قلبى واسأل الله العلى الكريم ان يديم عليك نعمته ويزيدها عليك كما سرنى جدا شرحك للبرنامج لكن لى سؤال
ما هو وظيفة السطلر البرمجى الذى به 15 ..يعنى لماذا 15 ؟ اكرر شكرى لك مرة اخرى كما اكرر شكرى للاخ مشتاق الله على مساعدته للاخوة فى مواضيع اخرى ... دمتم لنا مع الشكر

إضافة رد

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

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

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


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

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