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

   

Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:
قديم 21-09-2014, 12:26 PM المشاركة 9   
افتراضي



السلام عليكم
اخي كريم يمكنك تغير ذلك برمجيا يعني مره تريد خرج على RB0 ومره أخرى على RB3 (( ولكن أختيار واحد فقط )) انظر الصوره
السلام عليكم
مستحيل أخي العزيز تغيره داخل الكود مرة على RB0 ومره أخرى على RB3 ..
السبب بسيط :
في الأسمبلي تعلمنا أن هذا المسجل (config) هو مسجل "الفيوزات" ولا يسمح للمبرمج الولوج إليه إلا من مكان واحد ووحيد هو صفحة الإعدادات في الكومبيلر

لاحظ في صورتك المرفقة أنه مسجل كل الاعدادات مثل تحيد نوع المذبذب وتحديد RA5 كدخل عادي أو ك MCLR و تفعيل حماية البيك وغير ذلك من الاعدادات ..
انت تعرف أن هذه الاعدادات غير ممكنة "برمجيا" والسبب أن المسجل المدكور موجود في العنوان 2007 لذاكرة الكود وهي محجوبة عن المبرمج :

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 21-09-2014, 03:56 PM المشاركة 10   
افتراضي


السلام عليكم
مستحيل أخي العزيز تغيره داخل الكود مرة على RB0 ومره أخرى على RB3 ..
السبب بسيط :
في الأسمبلي تعلمنا أن هذا المسجل (config) هو مسجل "الفيوزات" ولا يسمح للمبرمج الولوج إليه إلا من مكان واحد ووحيد هو صفحة الإعدادات في الكومبيلر

لاحظ في صورتك المرفقة أنه مسجل كل الاعدادات مثل تحيد نوع المذبذب وتحديد RA5 كدخل عادي أو ك MCLR و تفعيل حماية البيك وغير ذلك من الاعدادات ..
انت تعرف أن هذه الاعدادات غير ممكنة "برمجيا" والسبب أن المسجل المدكور موجود في العنوان 2007 لذاكرة الكود وهي محجوبة عن المبرمج :
شكرا جزيلا لك أخي على معلومه القيمه ظننت انها بالامكان تغيرها برمجيا
شكرا مره أخرى
عندي سؤال لك وأعتذر من أخ سعيد لانها قد تكون مداخله على موضوعه
هو هل يمكن ربط ريلي مباشره الى 74hc595 ام يحتاج الى ترانزستورات
وشكر جزيلا لكم

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:
قديم 21-09-2014, 05:39 PM المشاركة 11   
افتراضي


عندي سؤال لك وأعتذر من أخ سعيد لانها قد تكون مداخله على موضوعه
هو هل يمكن ربط ريلي مباشره الى 74hc595 ام يحتاج الى ترانزستورات
وشكر جزيلا لكم
بعد إذن الأخ سعيد
أخي حسن هادي الريليهات المشهورة تطلب تقريبا 40 أو 50 ميلي أمبير وبعضها أكثر
و 74hc595 غير مؤهل لإخراج هذا التيار وسيكون الحمل ثقيلا عليه وربما يتلفه.
ضروري إضافة ترانزيستور أو ULN 2xxx وهذه الاضافة لها ميزتان :
1- تقوية الخرج
2- حمايته من أثر التيار العكسي لملف الريلي ( بإضافة ديود مع كل ترانزيستور - أما ULN 2xxx فيتضمن هذه الديودات ).


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 21-09-2014, 09:14 PM المشاركة 12   
افتراضي


شكرا لكم ولردودكم اخوانى


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 22-09-2014, 08:16 PM المشاركة 13   
not funny


السلام عليكم

كتبت هذا الكود لرمونت كنترول الكود يعمل على البروتيوس بدون مشاكل ولاكن فى الواقع لايعمل اذا كان اكثر من ثلاث سويشات ؟؟ لو اضفنا كود لسويش الرابع يتوقف عن العمل ؟؟ مالسبب ؟؟




[IMG][/IMG]

الكود


كود:
#define       is              ==
#define       preseed         0
#define       sw1             porta.b0
#define       sw2             porta.b1
#define       sw3             porta.b2
#define       sw4             porta.b3
#define       sw5             porta.b4
#define       sw6             porta.b5
#define       sw1_dir         trisa.b0
#define       sw2_dir         trisa.b1
#define       sw3_dir         trisa.b2
#define       sw4_dir         trisa.b3
#define       sw5_dir         trisa.b4
#define       sw6_dir         trisa.b5
#define       on                1
#define       off               0
#define       input             1
#define       output            0
/*******************************************/
char code_1[]={0,0,0,0,1,0,1,0,0,1};
char code_2[]={0,0,0,0,1,0,1,0,1,1};
char code_3[]={0,0,0,0,1,0,1,1,0,1};
char code_4[]={0,0,0,0,1,0,1,1,1,1};
char code_5[]={0,0,0,0,1,1,0,0,0,1};
char code_6[]={0,0,0,0,1,1,0,0,1,1};
char x=0;
/*****************************************/
void send_code(char my_code[])
{
 for(x=0;x<10;x++)
                {
                 if(my_code[x] is 0){pwm1_start();}
                 if(my_code[x] is 1){pwm1_stop() ;}
                 delay_ms(20);
                 }
/*****************************************/
}
void init()
{trisa.b7=input;
 trisa.b5=input;
 sw1=input;
 sw2=input;
 sw3=input;
 sw4=input;
 sw5=input;
 sw6=input;
 trisb=0;
 portb=0;
 ANSEL=0;
 OSCCON= 0b01000000;  
 cmcon=7;
}

/*****************************************/
void main()
{
         init();
         pwm1_init(38000);
         pwm1_set_duty(178);
         while(1)
                {
                 if(sw1 is preseed)
                 {delay_ms(10);
                 while(sw1 is preseed);
                 delay_ms(10);
                 send_code(code_1);
                 }
 else  if(sw2 is preseed)
                    {
                     delay_ms(10);
                     while(sw2 is preseed);
                     delay_ms(10);
                     send_code(code_2);
                    }

  else  if(sw3 is preseed)
                  {
                   delay_ms(10);
                   while(sw3 is preseed);
                   delay_ms(10);
                   send_code(code_3);

                  }
 else if(sw4 is preseed)
                   {
                    delay_ms(10);
                    while(sw4 is preseed);
                    delay_ms(10);
                    send_code(code_4);
}
else if(sw5 is preseed)
                   {
                    delay_ms(10);
                    while(sw5 is preseed);
                    delay_ms(10);
                    send_code(code_5);
                   }
else if(sw6 is preseed)
                   {
                     delay_ms(10);
                     while(sw6 is preseed);
                     delay_ms(10);
                     send_code(code_6);
                   }
  }
}

الملف

http://www.gulfup.com/?Lrm2Dr


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 22-09-2014, 09:38 PM المشاركة 14   
افتراضي




الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 23-09-2014, 05:34 AM المشاركة 15   
افتراضي


السلام عليكم

كتبت هذا الكود لرمونت كنترول الكود يعمل على البروتيوس بدون مشاكل ولاكن فى الواقع لايعمل اذا كان اكثر من ثلاث سويشات ؟؟ لو اضفنا كود لسويش الرابع يتوقف عن العمل ؟؟ مالسبب ؟؟




[IMG][/IMG]

الكود


كود:
#define       is              ==
#define       preseed         0
#define       sw1             porta.b0
#define       sw2             porta.b1
#define       sw3             porta.b2
#define       sw4             porta.b3
#define       sw5             porta.b4
#define       sw6             porta.b5
#define       sw1_dir         trisa.b0
#define       sw2_dir         trisa.b1
#define       sw3_dir         trisa.b2
#define       sw4_dir         trisa.b3
#define       sw5_dir         trisa.b4
#define       sw6_dir         trisa.b5
#define       on                1
#define       off               0
#define       input             1
#define       output            0
/*******************************************/
char code_1[]={0,0,0,0,1,0,1,0,0,1};
char code_2[]={0,0,0,0,1,0,1,0,1,1};
char code_3[]={0,0,0,0,1,0,1,1,0,1};
char code_4[]={0,0,0,0,1,0,1,1,1,1};
char code_5[]={0,0,0,0,1,1,0,0,0,1};
char code_6[]={0,0,0,0,1,1,0,0,1,1};
char x=0;
/*****************************************/
void send_code(char my_code[])
{
 for(x=0;x<10;x++)
                {
                 if(my_code[x] is 0){pwm1_start();}
                 if(my_code[x] is 1){pwm1_stop() ;}
                 delay_ms(20);
                 }
/*****************************************/
}
void init()
{trisa.b7=input;
 trisa.b5=input;
 sw1=input;
 sw2=input;
 sw3=input;
 sw4=input;
 sw5=input;
 sw6=input;
 trisb=0;
 portb=0;
 ANSEL=0;
 OSCCON= 0b01000000;  
 cmcon=7;
}

/*****************************************/
void main()
{
         init();
         pwm1_init(38000);
         pwm1_set_duty(178);
         while(1)
                {
                 if(sw1 is preseed)
                 {delay_ms(10);
                 while(sw1 is preseed);
                 delay_ms(10);
                 send_code(code_1);
                 }
 else  if(sw2 is preseed)
                    {
                     delay_ms(10);
                     while(sw2 is preseed);
                     delay_ms(10);
                     send_code(code_2);
                    }

  else  if(sw3 is preseed)
                  {
                   delay_ms(10);
                   while(sw3 is preseed);
                   delay_ms(10);
                   send_code(code_3);

                  }
 else if(sw4 is preseed)
                   {
                    delay_ms(10);
                    while(sw4 is preseed);
                    delay_ms(10);
                    send_code(code_4);
}
else if(sw5 is preseed)
                   {
                    delay_ms(10);
                    while(sw5 is preseed);
                    delay_ms(10);
                    send_code(code_5);
                   }
else if(sw6 is preseed)
                   {
                     delay_ms(10);
                     while(sw6 is preseed);
                     delay_ms(10);
                     send_code(code_6);
                   }
  }
}

الملف

http://www.gulfup.com/?Lrm2Dr
السلام عليكم
1- أخي الكريم أخزن الكود في روم وليس رام طالما هو كود ثابت لتقليل أستهلاك الرام
2-لم تعرف السويجات مربوطه على porta على أنها input

كما أنا أفضل أستخدام بروتوكولات لارسال اشاره تحت الحمراء مثلا برتوكول سوني او NEC


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,892
نشاط [ سعيد قادر ]
قوة السمعة:
قديم 23-09-2014, 09:10 AM المشاركة 16   
افتراضي


السلام عليكم
1- أخي الكريم أخزن الكود في روم وليس رام طالما هو كود ثابت لتقليل أستهلاك الرام
2-لم تعرف السويجات مربوطه على porta على أنها input

كما أنا أفضل أستخدام بروتوكولات لارسال اشاره تحت الحمراء مثلا برتوكول سوني او NEC

وعليكم السلام ورحمة الله

شكرا لك مهندس حسن

جربت اخزنها فى الروم ولاكن البرنامج اعطانى ايرر لم يقبلها وثانيا انا عرفت السويشات على انها دخل ومربوطة على بورت a كتبتها فى الديفاينات


كود:
#define       is              ==
#define       preseed         0
#define       sw1             porta.b0
#define       sw2             porta.b1
#define       sw3             porta.b2
#define       sw4             porta.b3
#define       sw5             porta.b4
#define       sw6             porta.b5
#define       sw1_dir         trisa.b0
#define       sw2_dir         trisa.b1
#define       sw3_dir         trisa.b2
#define       sw4_dir         trisa.b3
#define       sw5_dir         trisa.b4
#define       sw6_dir         trisa.b5
#define       on                1
#define       off               0
#define       input             1
#define       output            0



كود:
}
void init()
{trisa.b7=input;
 trisa.b5=input;
 sw1=input;
 sw2=input;
 sw3=input;
 sw4=input;
 sw5=input;
 sw6=input;
 trisb=0;
 portb=0;
 ANSEL=0;
 OSCCON= 0b01000000;  
 cmcon=7;
}

الكود الذى كتبته هو من شروحات الاستاذ احمد سمير فى دورته وهو مجربه وكما قلت الكود فى البرنامج اى برنامج بروتيوس يعمل ولاكن فى الحقيقة وعلى ارض الواقع يعمل اذا كتبت كود لثلاث سويشات ولاكن لو كتبت كود لسويش الرابع المايكرو يتوقف عن العمل ؟؟ ولم اعرف السبب حتى الان ؟؟



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