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

   

الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:
قديم 12-10-2009, 02:15 AM المشاركة 17   
افتراضي



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

ان شاء الله توصل واهي فرصة نتعلم منك برمجة البيك 16f876

وتقبل تحيتي ودمت في رعاية الله وحفظه

اعلانات

Mr.D
:: مهندس ::
تاريخ التسجيل: Sep 2006
الدولة: Egypt
المشاركات: 29
نشاط [ Mr.D ]
قوة السمعة:
قديم 12-10-2009, 02:52 PM المشاركة 18   
افتراضي


السلم عليكم اخواني

ما شاء الله علي ما اري و لكن لي رجاء هل يمكنكم تحويل الكود المكتوب بلغة الاسمبلي الي لغة السي حيث انني لا اعرف لغة الاسمبلي و اريد ان اقوم بنفس الموضوع في مشروع خاص بي يستخدم نفس التيمر و الانترابتر و اريد ان احسب الثانية بدقة في مشروعي. انا استخدم الـ pic16f84a و جزاكم الله خير بإذن الله.

ارجو سرعة الاستجابة

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

walid el masry
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 42
نشاط [ walid el masry ]
قوة السمعة:
قديم 12-10-2009, 05:57 PM المشاركة 19   
افتراضي


اليك اخي الكود و لكن لابد ان تعلم انه لا يعمل علي البروتس و لكن منطقيا الكود صحيح الا اذا فاتني شيء فانت استاذنا في السي فلتوضحه لنا
ثانيا اعتقد انك لا تستطيع ان تأكسس علي الورك ريجيستر او ال W و اذا لم تكن تعلم ما هو فلا تهتم
اليك الكود كالاتي

كود:
int status_temp;
int w_temp;
int cpt;
void interrupt() {
     w_temp = W;
     status_temp = STATUS;
     if (INTCON.T0IF = 1) {
          INTCON.T0IF = 0;
          cpt-=1;
          if (cpt = 0) {
               cpt = 0X3D;// D'61'
               if (PORTB = 0X00) {
                  PORTB = 0XFF;
               }
               else if (PORTB = 0XFF) {
                  PORTB = 0X00;
               }
               goto ENDI;
          }
          else {
               goto ENDI;
          }
     }
     else {
          goto ENDI;
     }
ENDI:;
STATUS = status_temp;
//W = w_temp;
}
void initialize() {
     TRISB = 0X00;
     OPTION_REG = 0X85;
     INTCON = 0XA0;
     PORTB = 0X00;
     cpt = 0X3D;// D'61'
}
void main() {
     initialize();
     start:;
     
     goto start;
     /*while(1) {
     
     }*/
}


Mr.D
:: مهندس ::
تاريخ التسجيل: Sep 2006
الدولة: Egypt
المشاركات: 29
نشاط [ Mr.D ]
قوة السمعة:
قديم 12-10-2009, 07:46 PM المشاركة 20   
Smile


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


16mofed84
:: مهندس متميز ::
تاريخ التسجيل: Jul 2009
الدولة: فلسطين
المشاركات: 318
نشاط [ 16mofed84 ]
قوة السمعة:
قديم 12-10-2009, 08:44 PM المشاركة 21   
Post mikro C


السلام عليكم
يمكنك اخي استخدام لغه المايكرو سي لانه يوجد فيها مجموعه اوامر بسيطه جدا
لل ال سي دي و التوقيت


walid el masry
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 42
نشاط [ walid el masry ]
قوة السمعة:
قديم 12-10-2009, 08:48 PM المشاركة 22   
افتراضي


هو اكيد عارف كده كويس لكن هو مش عاوز يعمل ديلاي فقط هو عاوز يعمل زي ما انا كنت عاوز اعمل اني اخلي الميكرو تنفذ البروسيس عادي لكن في نفس الوقت يوجد تايمر شغال لما يعد زمن معين و لنفرض واحد ثانيه يقوم بعمل مهمه و يعود لمهمته الاصليه و يستمر هكذا


Mr.D
:: مهندس ::
تاريخ التسجيل: Sep 2006
الدولة: Egypt
المشاركات: 29
نشاط [ Mr.D ]
قوة السمعة:
قديم 13-10-2009, 01:39 AM المشاركة 23   
افتراضي MikroC


السلام عليكم
يمكنك اخي استخدام لغه المايكرو سي لانه يوجد فيها مجموعه اوامر بسيطه جدا
لل ال سي دي و التوقيت
اشكر اخي الكريم علي ردك هل تقصد ال delay function انا اريد ان اعمل تيمر كما قال اخي walid el masry ولو عندك افكار اخري ارجو منك اضافتها. و جزاك الله خيرا

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


سؤال للاخ walid el masry ما هي الكريستال المستخدم مع الكود الذي تكرمت بإضافته و انا اريد ان احصل عن ثانية واحد هل يمكنك ان تمدني بالكود الازم لذلك ان امكنك ذلك؟ و جزاك الله خير بإذن الله.


walid el masry
:: مهندس ::
تاريخ التسجيل: Nov 2006
المشاركات: 42
نشاط [ walid el masry ]
قوة السمعة:
قديم 13-10-2009, 01:48 AM المشاركة 24   
افتراضي


عذرا ان نسيت ان اخبرك بهذه المعلومه
الكريستال 4 ميجا هرتزو و الحسابات تجري كالاتي
4mhz/4 = 10^6
و نحن نستخدم لتايمر 0 بريسكالر بمقدار 1:64 و كذلك التيمر يقوم بعد 256 بلس لانه 8 بت فبالتالي تجري الحسبه كالاتي


كود:
10^6 / 256 x 64 = 61
و لكن اعتقد انك تحتاج ان تزيد من قيمة الكريستال في حالة استخدام لغة السي و ذلك لان تنفيذ برنامج السي يكون ابطيء من الاسمبلي و الله اعلم
لكن اعتقد بالنسبه للشيب ال 84 فاعلي كريستال تتحملها هي 12 ميجا هرتز علي ما اعتقد



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