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

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

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:113
قديم 07-04-2015, 02:23 PM المشاركة 1   
افتراضي مساعدة فى حفظ القيم ومراحل تنفيذ البرنامج عند انقطاع التيار عن الدائرة Twitter FaceBook Google+



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

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


وهذا كود البرنامج

كود:
unsigned short mask(unsigned short num);
unsigned int  a1=0,m1=0,e1=0,w1=0;
void interrupt(){

 portb=1;
portd=mask(a1);
delay_ms(2);
portb=2;
portd=mask(m1);
delay_ms(2);
portb=4;
portd=mask(e1);
delay_ms(2);
portb=8;
portd=mask(w1);
delay_ms(2);

INTCON=0b00100000;
TMR0=0;
}


#define D3 porte.f1=1;delay_ms(60);porte.f1=0;

void main() {
    int m=0;
    int a=0;
    int e=0;
    int w=0;
    int x;
    int k=0;
    
OPTION_REG=0b10000101;
INTCON=0b10100000;
TMR0=217;
trisb=0; portb=0;
trisd=0; portd=0;
trisc=1; portc=0;
trisa=0; porta=0;
trise=0; porte=0;

   

for(;;){
    abdalla:
    k=0;
  if(k==0){porta.f0=0;}
  porte.f1=0;
if(portc.f5==1){ porte.f1=1;delay_ms(300);porte.f1=0;porte.f1=1;delay_ms(300);porte.f1=0;porte.f1=1;delay_ms(300);porte.f1=0; k=1;if(k==1){ porta.f0=1;}   goto loop;}
if(portc.f4==1){D3 porte.f0=1; delay_ms(300);porte.f0=0; delay_ms(300);}


if(portc.f0==1){D3 m1++;m++;delay_ms(200); if(m1==10){m1=0;}}

if(portc.f1==1){D3 a1++;a++;delay_ms(200); if(a1==10){a1=0;}}

if(portc.f2==1){D3 e1++;e++;delay_ms(200); if(e1==10){e1=0;}}

if(portc.f3==1){D3 w1++;w++;delay_ms(200); if(w1==10){w1=0;}}

   /*a=a1;
     e=e1;
     w=w1;
     m=m1;*/

}
        start:

for(x=0;x<15;x++){porte.f1=1;delay_ms(30); porte.f1=0;delay_ms(30); }
  goto abdalla;

            loop:

        a1=0;e1=0;m1=0;w1=0;

      for(;;){

if(portc.f4==1){porte.f0=1; delay_ms(1);porte.f0=0; delay_ms(1);

a1++;
  //if(k==1){ porta.f0=1;}
  if(a1==10){a1=0;m1++;}
  if(e1==10){e1=0;w1++;}
  if(m1==10){m1=0;e1++;}
  if(w1==10){w1=0;}
  if(a1==a && e1==e && m1==m && w1==w){ goto start;}


}

}
}



unsigned short mask(unsigned short num){
switch (num){

case 0 : return 0xC0;
case 1 : return 0xCF;
case 2 : return 0xA4;
case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x83;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;

}
}


مشكورر جدااا لكل من يحاول المساعدة

اعلانات

abu-thabit
:: مهندس متميز ::
تاريخ التسجيل: Oct 2010
المشاركات: 339
نشاط [ abu-thabit ]
قوة السمعة:0
قديم 07-04-2015, 02:48 PM المشاركة 2   
افتراضي


http://www.qariya.info/vb/showthread.php?t=163612

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

zoro39
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 69
نشاط [ zoro39 ]
قوة السمعة:0
قديم 07-04-2015, 08:24 PM المشاركة 3   
افتراضي


تقوم بالتخزين في ذاكرة الايبروم داخل الميكرو وأحيانا عندما لا تكون هناك مساحة متاحة داخل الميكرو تقوم باضافة ايبروم خارجي مثلا ايبروم من فئة 24Cxx
لدي تطبيق مع الكود يقوم بالتخزين والقراءة باستعمال المتحكم PIC16F877A والايبروم الخارجي 24C08A وهو موجود في هذا الرابط والكود مكتوب بالـ MikroC:
http://elecnote.blogspot.com/2015/03...ller-with.html

بالتوفيق

إضافة رد

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

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

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


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

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