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

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

العفاف
:: مهندس ::
تاريخ التسجيل: May 2012
المشاركات: 11
نشاط [ العفاف ]
قوة السمعة:0
قديم 06-06-2014, 10:58 AM المشاركة 1   
ha مساعدة في تصحيح الكود Twitter FaceBook Google+



السلام عليكم
لدي دائرة بين real time clock DS1307 وبين pic18f4520
وأريد تعديل او كتابة الوقت في RTC عن طريق استخدام زرين بحيث قمت بتوصيل زرين عن طريق b5 , b6

كود:
if(portb.f5==0) //if B5 interrupt occured
     {
       if(count>6)
            {  Lcd_Cmd(_Lcd_CLEAR);
              get_time_date();
              count=0;
             }
             count++ ;
     }
       while (count<6)
       {
       get_time_date();
       _i2c_write_RTC(0,0x80); //Reset second to 0 sec. and stop Oscillator
         if(count==1)
            {
            Lcd_Out(1,1,"    set min      ");
            if(portb.f6==0) //if B6 interrupt occured ->
             {
             _i2c_write_RTC(1,(0x01+_i2c_read_RTC(1))); //increment min
             if( _i2c_read_RTC(1)== 60)
             _i2c_read_RTC(1)=0x01;
              }
             }
         else if(count==2)
             {
                Lcd_Out(1,1,"    set hour         ");
                if(portb.f6==0) //if B6 interrupt occured ->
                  {  _i2c_write_RTC(2,(0x01+_i2c_read_RTC(2))); //increment hour
                    if(_i2c_read_RTC(2)==60)
                         _i2c_read_RTC(2)=0x00;
                               }
              }
          else if(count==3)
               {
                  Lcd_Out(1,1,"    set date        ");
                 if(portb.f6==0) //if B6 interrupt occured ->
                   {
                    _i2c_write_RTC(4,(0x01+ _i2c_read_RTC(4))); //increment date of week
                    if(_i2c_read_RTC(4)==31)
                   _day=0x01;
                    }
                   }
           else if (count==4)
             {
                 Lcd_Out(1,1,"    set month    ");
                 if(portb.f6==0) //if B6 interrupt occured ->
                 {
                  _i2c_write_RTC(5,(0x01+ _i2c_read_RTC(5))); // increment month
                 if (_mon==31)
                 _day=0x01;
                  }
             }
        else if(count==5)
         {
           Lcd_Out(1,1,"   set year     ");
            if(portb.f6==0) //if B6 interrupt occured ->
            {
               _i2c_write_RTC(6,(0x01+ _i2c_read_RTC(6))); // increment year
             if(_yr==13)
                _yr=0x01;
              }
             }
             }
              _i2c_write_RTC(0,0x00);
بحيث اذا ضغط مرة واحدة على زر b5 يقوم بتعديل الدقيقة و زر b6 يقوم بزيادة الدقيقة
واذا ضغط مرتين على b5 يقوم بتعديل الساعة وزر b6 يقوم بزيادة الساعة


المشكلة انه عندما اضغط على الزر b5 مرة واحدة يقوم بتعدل السنة وفي بعض الاحيان يقوم بتعديل الشهور
والمشكلة الثانية عندما أقوم بتعديل الأوقات فانه بعد الرقم 9 يقوم باظهار الرموز ولا يتوقف ابد

ارجو مساعدتي في تصحيح الكود

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 06-06-2014, 11:40 AM المشاركة 2   
افتراضي


بعد كل ضغطة مفتاح نجعل البك لا ينفذ الامر الا بعد رفع يدنا من المفتاح فتصبح العبارة كالتالي :
كود:
if(portb.f5==0) { while(portb.f5==0) {}
.
.
.}
و تعني انه اذا كان المنفذ يساوي صفر , فلا تعمل اي شيء طالما هو يساوي صفر .
وبذلك بمجرد ان نرفع يدنا من المفتاح سيتحول الى واحد و يستمر البك في تنفيذ الاوامر التالية ..

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

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

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

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


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

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