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

   

mar7aba_01
:: موقوف ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 739
نشاط [ mar7aba_01 ]
قوة السمعة:
قديم 09-05-2014, 04:45 PM المشاركة 17   
افتراضي



انا اسف اخي فلم اكتب برامج للبك ولم اعمل على الفلوكود ربما يدخل احد الاعضاء من خبراء البك او الفلوكود ونتساعد في تحويل الكود
شكرا لك أخي الكريم على المساعدة ,, سأحاول مع بعض الأساتذة في المنتدى إنشاء الله , وإن سنح لي الوقت سأحاول إنجازه بنفسي ,, شكرا لك

اعلانات

mar7aba_01
:: موقوف ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 739
نشاط [ mar7aba_01 ]
قوة السمعة:
قديم 12-05-2014, 05:39 PM المشاركة 18   
افتراضي


ممكن أخي أن تجري تعديلا على الكود كي أتمكن من تحويله , إنه لاحظت أن لا أحد يهتم بالبرمجة بالفلوكود ,,
التعديل :
+حذف المخارج الستة واقتصارها على مخرجين فقط
وشكرا لك أخي الكريم

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

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 12-05-2014, 06:08 PM المشاركة 19   
افتراضي


ممكن أخي أن تجري تعديلا على الكود كي أتمكن من تحويله , إنه لاحظت أن لا أحد يهتم بالبرمجة بالفلوكود ,,
التعديل :
+حذف المخارج الستة واقتصارها على مخرجين فقط
وشكرا لك أخي الكريم
تفضل اخي هذا هو التعديل كنت اتمنى ان استطيع مساعدتك اكثر لكن انشاء الله ستستطيع حل البرنامج الفكرة هي يتوليد التايمرين

كود:
#include <mega8.h>

unsigned char x0=0,x1=0,y0=0,y1=0,V0=0,V1=0;   //تعريف المتغيرات لاستخدامها في البرنامج
 
bit z=0,z1=0;
//////////////////////////////////////////////////////////////////////////

interrupt [TIM0_OVF] void timer0_ovf_isr(void) //هذا التايمر نحدد به اقل جزء نريد ان نقسم عليه 
    {                                          //الزمن الدوري الكامل وهنا اخترنا40ميكرو ثانية  
      TCNT0=0xD7;  
      z=1;  //هذا البت وضعناه في التايمر ليكون شرطا لتنفيذ التعليمات اللتى يجب ان تكون
    }       //داخل التايمرولكن ننفذها خارج التايمر 
/////////////////////////////////////////////////////////////////
interrupt [TIM1_OVF] void timer1_ovf_isr(void) // هذا التايمر نحدد به الزمن الدوري الكامل للنبضة 
  {                                            //وهنا اخترنا 10 ميلي ثانية 
    TCNT1H=0xFB1D >> 8;
    TCNT1L=0xFB1D & 0xff;    
    z1=1;   //هذا البت وضعناه في التايمر ليكون شرطا لتنفيذ التعليمات اللتى يجب ان تكون  
  }         //داخل التايمرولكن ننفذها خارج التايمر 
//////////////////////////////////////////////////////////////
void main(void)
{
PORTB=0x00;
DDRB=0xFF;             //هنا تعريف المداخل والمخارج

PORTD=0xFF;
DDRD=0x00;

TCCR0=0x02;
TCNT0=0xD7;

TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0xFB;
TCNT1L=0x1D;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

TIMSK=0x05;

#asm("sei")
///////////////////////////////////////////////////////////////////
while (1)    //البرنامج الرئيسي
      { 
        if(z==1) //هنا عند حدوث مقاطعة التايمر الاول كل 40ميكرو ثانية يتم الدخول الى هذا الشرط
         {       //y وتصفير البت من اجل بدء دورة جديدة وزيادة كل متغيرات 
            z=0;
            y0++;y1++;
         }
        ///////////////////////////////////////////////////// 
        if(z1==1) //عند حدوث مقاطعة التايمر الثاني كل 10 ميلي ثانية يتم الدخول الى هذا الشرط 
          {       //وتصفير البت من اجل بدء دورة جديدة ووضع 5 فولت على كامل البورت اللذي نريد 
                  //y او على اي قطب نريده من المايكروونقوم بتصفير جميع متغيرات 
                  // المسئولة عن التاخير الزمني بين كل زيادةV ونقوم بزيادة متغيرات 
             z1=0;
             PORTB.0=1;
             PORTB.1=1;
             y0=0;y1=0; 
             V0++;V1++;
          } 
        /////////////////////////////////////////////////////////////////  
        if(V0>=5){x0++;V0=0;}  // خمس مرات يعني كل 50ميلي ثانية سيدخل يصفر المتغير  V هناعند زيادة متغير 
          if(x0>=249)x0=0;    // y0 اللتي سيتم مقارنتها مع  x0 ويزيد 
                             //عند وصول متغير اكس الى 250يعني تقريبا كامل الزمن الدوري وهي 10ميلي تقسيم 40مايكرو نصفر اكس للبدء بدورة جديدة 
                     
        if(V1>=10){x1++;V1=0;}
         if(x1>=249)x1=0;
         
        /////////////////////////////////////////////////////////////////////  
         if(y0>=x0)PORTB.0=0;    // نقوم باطفاء المخرج الذي  x مساوية ل  y عند وصول قيمة
         if(y1>=x1)PORTB.1=0;    //شغلناه اثناء الدخول لتايمر الزمن الدوي 
        
        //////////////////////////////////////////////////////////////////// 
         
      }
}


mar7aba_01
:: موقوف ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 739
نشاط [ mar7aba_01 ]
قوة السمعة:
قديم 12-05-2014, 08:16 PM المشاركة 20   
افتراضي


لاعليك أخي لقد ساعدت أكثر مما تتصور , جزاك الله خيرا , سأحاول أن أنجزه


mar7aba_01
:: موقوف ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 739
نشاط [ mar7aba_01 ]
قوة السمعة:
قديم 12-05-2014, 08:18 PM المشاركة 21   
افتراضي


لاعليك أخي لقد ساعدت أكثر مما تتصور , جزاك الله خيرا , سأحاول أن أنجزه بواسطة الميكرو 18F4550
بعدما تم تقليص الكود وشكرا لك


mar7aba_01
:: موقوف ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 739
نشاط [ mar7aba_01 ]
قوة السمعة:
قديم 13-05-2014, 06:42 AM المشاركة 22   
افتراضي


سأثقل عليك أخي مرة أخرى بطلبي :
عندما احاول التعديل على الكود في الميكرو برو سي لا أجد الإمكانية للتعديل واستخراج الهيكس من الملف الذي أرفقته لي سابقا,
حاولت نسخ الكود الجديد الذي أرفقته لي ووضعه بدل الأصلي لكن دون جدوى ,,
فقمت بإنشاء مشروع جديد و وضعت به الكود وعند الضغط لتوليد ملف الهيكس يعلمني بمجموعة من الأخطاء مثل :
#include <mega8.h>
- bit z=0,z1=0;
-
#asm("sei")
وأخطاء أخري مما لا يمكنني من توليدملف هكس وتجربته


التعديل الأخير تم بواسطة : mar7aba_01 بتاريخ 13-05-2014 الساعة 06:52 AM

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 13-05-2014, 10:11 AM المشاركة 23   
افتراضي


سأثقل عليك أخي مرة أخرى بطلبي :
عندما احاول التعديل على الكود في الميكرو برو سي لا أجد الإمكانية للتعديل واستخراج الهيكس من الملف الذي أرفقته لي سابقا,
حاولت نسخ الكود الجديد الذي أرفقته لي ووضعه بدل الأصلي لكن دون جدوى ,,
فقمت بإنشاء مشروع جديد و وضعت به الكود وعند الضغط لتوليد ملف الهيكس يعلمني بمجموعة من الأخطاء مثل :
#include <mega8.h>
- bit z=0,z1=0;
-
#asm("sei")
وأخطاء أخري مما لا يمكنني من توليدملف هكس وتجربته
نعم اخي فهناك اختلاف في طريقة تهيئة المايكرو بين الكومبايلر اللذي اعمل عليه وبين المايكرو سي فيجب عليك تهيئة المشروع من مداخل ومخارج وتهيئة التايمرات وتنسخ فقط التعليمات البرمجية الى المشروع وليس كامل المشروع
هذا هو البرنامج مع الهيكس والبروتوث
http://up.top4top.net/downloadf-top4...fe5c1-rar.html


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 13-05-2014, 10:27 AM المشاركة 24   
افتراضي


سأثقل عليك أخي مرة أخرى بطلبي :
عندما احاول التعديل على الكود في الميكرو برو سي لا أجد الإمكانية للتعديل واستخراج الهيكس من الملف الذي أرفقته لي سابقا,
حاولت نسخ الكود الجديد الذي أرفقته لي ووضعه بدل الأصلي لكن دون جدوى ,,
فقمت بإنشاء مشروع جديد و وضعت به الكود وعند الضغط لتوليد ملف الهيكس يعلمني بمجموعة من الأخطاء مثل :
#include <mega8.h>
- bit z=0,z1=0;
-
#asm("sei")
وأخطاء أخري مما لا يمكنني من توليدملف هكس وتجربته
نعم اخي فهناك اختلاف في طريقة تهيئة المايكرو بين الكومبايلر اللذي اعمل عليه وبين المايكرو سي فيجب عليك تهيئة المشروع من مداخل ومخارج وتهيئة التايمرات وتنسخ فقط التعليمات البرمجية الى المشروع وليس كامل المشروع
هذا هو البرنامج مع الهيكس والبروتوث
http://up.top4top.net/downloadf-top4...fe5c1-rar.html



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