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

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

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:110
قديم 12-05-2017, 08:04 PM المشاركة 1   
افتراضي اريد مساعده في التعامل مع EEPROM لل pic12f675 Twitter FaceBook Google+



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


لقد عملت علي مشروع بستخدام ال pic 12f 675 ..... و المشرو يعمل بشكل جيد ولكن اريد استخدام ذاكرة الأبروم .. وعندما اضع أوامر الأبروم ... البرنامج يتوقف ولا يستجيب ..


فما هو الحل ...


اليكم الكود ...


كود:
       #define  FOSC_HS    0X31FB ;
   #define  LATSH_HIGH  GP2_bit = 1;
   #define  DATA_HIGH   GP4_bit = 1;
   #define  CLOCK_HIGH  GP5_bit = 1;
   #define  LATSH_LOW   GP2_bit = 0;
   #define  DATA_LOW    GP4_bit = 0;
   #define  CLOCK_LOW   GP5_bit = 0;
   #define  LAMP_ON    GP1_bit=1;
   #define  LAMP_OFF    GP1_bit=0;
   #define  SWETSH_ON    GP0_bit==1
   #define allof    GP2_bit = 0; GP4_bit = 0; GP5_bit = 0;
   #define ZERO_PAET  for(m=0; m<8; m++){ DATA_LOW  SAEV_DATA(); DATA_SHWO(); }

    unsigned timer=0,m=0,x =0;
    unsigned long int TCOUNT;
    unsigned long int take;



//*******************  -----------------------  ********************//

        void SAEV_DATA()
    {

     LATSH_LOW  delay_ms(1);
     LATSH_HIGH  delay_ms(1);

    }

  
            void DATA_SHWO()
    {

     CLOCK_LOW   delay_ms(1);
     CLOCK_HIGH  delay_ms(1);

    }

    //-----------------------------------------//
         void owen(){
         ZERO_PAET
         DATA_HIGH  SAEV_DATA();
         DATA_HIGH  SAEV_DATA();
         DATA_LOW   SAEV_DATA();
         DATA_SHWO(); delay_ms(550);  x=2; }
     //--------------------------------------//

         void tow(){
         ZERO_PAET
         DATA_HIGH     SAEV_DATA();
         DATA_LOW      SAEV_DATA();
         DATA_HIGH     SAEV_DATA();
         DATA_HIGH     SAEV_DATA();
         DATA_LOW      SAEV_DATA();
         DATA_HIGH     SAEV_DATA();
         DATA_HIGH     SAEV_DATA();
         DATA_SHWO();  delay_ms(550); x=4;}
       //---------------------------------------//

       void thre(){
       ZERO_PAET
       DATA_HIGH      SAEV_DATA();
       DATA_LOW       SAEV_DATA();
       DATA_LOW       SAEV_DATA();
       DATA_HIGH      SAEV_DATA();
       DATA_HIGH      SAEV_DATA();
       DATA_HIGH      SAEV_DATA();
       DATA_HIGH      SAEV_DATA();
       DATA_SHWO();   delay_ms(550); x=6;}
      //---------------------------------------//
      
     void foer(){
     ZERO_PAET
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_SHWO();    delay_ms(550); x=8;}
  //-------------------------------------------//
  
     void faev(){
     ZERO_PAET
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_SHWO();    delay_ms(550); x=10;}
   //-------------------------------------------//
   
     void sex(){
     ZERO_PAET
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_SHWO();    delay_ms(550);  x=12; }
    //------------------------------------------//
    
     void seven(){
     ZERO_PAET
     DATA_LOW        SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_LOW        SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_HIGH       SAEV_DATA();
     DATA_SHWO();    delay_ms(550);x=14;}

     void eet(){
     ZERO_PAET
     DATA_HIGH        SAEV_DATA();
     DATA_HIGH        SAEV_DATA();
     DATA_HIGH        SAEV_DATA();
     DATA_HIGH        SAEV_DATA();
     DATA_HIGH        SAEV_DATA();
     DATA_HIGH        SAEV_DATA();
     DATA_HIGH        SAEV_DATA();
     DATA_SHWO();     delay_ms(550);x=16;}

     void naen(){
     ZERO_PAET
     DATA_HIGH         SAEV_DATA();
     DATA_HIGH         SAEV_DATA();
     DATA_LOW          SAEV_DATA();
     DATA_HIGH         SAEV_DATA();
     DATA_HIGH         SAEV_DATA();
     DATA_HIGH         SAEV_DATA();
     DATA_HIGH         SAEV_DATA();
     DATA_SHWO();      delay_ms(550); x=18;}


   //------------------  &#199;&#225;&#202;&#218;&#209;&#237;&#221;&#199;&#202; &#225;&#225;&#200;&#209;&#228;&#199;&#227;&#204;  ---------------------//
   


   
   

   
       void main() {
      // FOSC_HS
       VRCON = 0X00;  // Shut off the Voltage Reference
       ADCON0 = 0x00; // Shut off the A/D CONVERTR
       ANSEL = 0X00; // Set ports as digital I/0, not analog input
       TRISIO = 0b00001001;
       CMCON = 0x07;  // Shut off the Cmparator
       GPIO = 0X00;
    //-------------------!!!!!!!!!!!!!!!!!!!!!-------------------//
    





            //-------  &#205;&#225;&#222;&#201; &#200;&#207;&#199;&#237;&#229; &#199;&#225;&#200;&#209;&#228;&#199;&#227;&#204;  -------//

                          while(1){
                        

                          
     if( GP3_bit==0 ) {  x++;  delay_ms(350);   }
     if(    x==19   ) {  ZERO_PAET x=0;  delay_ms(150);   }
   
     if( x==1  ) { owen();  }  if( x==3  ) { tow();  }  if( x==5  ) { thre(); }
     if( x==7  ) { foer();  }  if( x==9  ) { faev(); }  if( x==11 ) { sex();  }
     if( x==13 ) { seven(); }  if( x==15 ) { eet();  }  if( x==17 ) { naen(); }
   //--------------------------------------------------------------------------//

      if( x==2  && GP0_bit==1  ) { GP1_bit=1; delay_ms(48000); LAMP_OFF }
      if( x==4  && GP0_bit==1  ) { GP1_bit=1; delay_ms(96000); LAMP_OFF }
      if( x==6  && GP0_bit==1  ) { GP1_bit=1; delay_ms(169900); LAMP_OFF }
      if( x==8  && GP0_bit==1  ) { GP1_bit=1; delay_ms(216000); LAMP_OFF }
      if( x==10 && GP0_bit==1  ) { GP1_bit=1; delay_ms(292400); LAMP_OFF }
      if( x==12 && GP0_bit==1  ) { GP1_bit=1; delay_ms(312000); LAMP_OFF }
      if( x==14 && GP0_bit==1  ) { GP1_bit=1; delay_ms(360000); LAMP_OFF }
      if( x==16 && GP0_bit==1  ) { GP1_bit=1; delay_ms(396000); LAMP_OFF }
      if( x==18 && GP0_bit==1  ) { GP1_bit=1; delay_ms(499000); LAMP_OFF }
      
   //--------------------------------------------------------------------------//



  }
}




هذا الكود يعمل جيداااا ولكن عندما أضيف اليه اكواد استخدام الأبروم البرنامج يتوقف ولا يستجيب ..

وهذة هي أوامر الأبلروم المستخدمه ...


كود:
     eeprom_Write(0,0);
  eeprom_Write(1,0);
  eeprom_Write(2,0);
  eeprom_Write(3,0);
  eeprom_Write(4,0);
  eeprom_Write(5,0);
  eeprom_Write(6,0);
  eeprom_Write(7,0);
  eeprom_Write(8,0);
  eeprom_Write(9,0);



وهذا اقتباس جزء من الكود مع اضافه أمر الكتابه علي الإبروم

كود:
           if( GP3_bit==0 ) {  x++;    eeprom_Write(1, x);delay_ms(10);  delay_ms(350);   }
     if(    x==19   ) {  ZERO_PAET x=0;  delay_ms(150);   }




ما اريده هنا تخزين قيمه المتغير "" x "" في ذاكرة الأبروم .... وبعد فصل التيار عن الدائره استعيد قيمه المتغير "" x "" من ذاكرة الإبروم ....


طبعاااا هذا الأمر للكتابه علي ذاكرة الإبروم
كود:
  eeprom_Write(1, x);delay_ms(10);

وهذا الأمر للقرأه من ذاكرة الإبروم
كود:
  x= eeprom_read(1); delay_ms(10);




ولكن عن ادخال هذة الأوامر للكود يتوقف البرنامج ولا يستجيب ابداااا للأوامر الشرطيه ..




أرجو الحل ..



وشكرااا للجميع

اعلانات

الصورة الرمزية assed
assed
:: عضو فضي ::
تاريخ التسجيل: Jul 2014
الدولة: العراق - بغداد
المشاركات: 1,036
نشاط [ assed ]
قوة السمعة:96
قديم 13-05-2017, 11:58 AM المشاركة 2   
افتراضي


السلام عليكم
انا ضعيف جداً بلغة ال microc ولاكن ......
أخ عبدالله دعني اذكرك بشيء لعلك نسيته هل فعلت رجيستري الاييبروم ؟؟؟
وهم
EECON1
EEDATA
EEADR

الاول :خاص بالكونترول ويحوي على اربع بت
الثاني : من 8 بت للقراءة والكتابة
الثالث : من 7 بت تعيين عنوان موقع ايبروم

والله اعلم

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

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

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

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


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

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