يتم أستخدام المكتبه
1- في حاله القراءه
يتم أستدعائها بهذه الطريقه
كود:
Show_Time(hours,minutes,seconds,day,week,month , 255);
اما السنه فتحتاج في البدايه الى أعاده ضبط
2- في حاله الضبط
هنا نقم بتعريف متغير في البرنامج لقد سميته set بالبدايه قيمته =0 فعند الضغط على مفتاح setting وقيمه set=0 عندها يتم استدعاء الداله set_PCF8583 لغرض خزن البيانات الوقت والتاريخ في مصفوفه setting_PCF8583 لغرض كتابتها بعد ذلك في PCF8583
طبعا في حاله الضبط داله مسؤوله عن الضبط القيم والموجوده في مكتبه هي
كود:
static void set_PCF8583(unsigned char set_switch,unsigned char inc_dec_system_12_24)
{
if(set_switch==0)// start value before apdate setting
{
setting_PCF8583[0]=hours;
setting_PCF8583[1]=minutes;
setting_PCF8583[2]=seconds;
setting_PCF8583[3]=day;
setting_PCF8583[4]=week;
setting_PCF8583[5]=month;
setting_PCF8583[6]=year;
}
if(set_switch==9)//write new data to PCF8583
{
if(inc_dec_system_12_24==24)
{
kw_12_24=24;
if(k_12_24==1 && setting_PCF8583[0]<12)setting_PCF8583[0]=setting_PCF8583[0]+12;
// to change hours from system 12 to 24 for example if hours = 17 then change hours to sys 12
// then hours = 05 PM now I wanted change sys to sys24 then must hours return to 17
}
else if(inc_dec_system_12_24==12)kw_12_24=12;
Show_Time(setting_PCF8583[0],setting_PCF8583[1],setting_PCF8583[2],setting_PCF8583[3],
setting_PCF8583[4], setting_PCF8583[5],0);
}
if (inc_dec_system_12_24==0) // inc switch
{
setting_PCF8583[set_switch-1]++;
if(setting_PCF8583[0]>=24)setting_PCF8583[0]=23;// houres
if(setting_PCF8583[1]>=60)setting_PCF8583[1]=59;// minute
if(setting_PCF8583[2]>=60)setting_PCF8583[2]=59;// second ,
if(setting_PCF8583[3]>=32)setting_PCF8583[3]=31;// days
if(setting_PCF8583[4]>=7)setting_PCF8583[4]=7;// week
if(setting_PCF8583[5]>=13)setting_PCF8583[5]=12;// month
if(setting_PCF8583[6]>=99)setting_PCF8583[6]=99;// year
}
if (inc_dec_system_12_24==1) // dec switch
{
if(setting_PCF8583[set_switch-1]>0)setting_PCF8583[set_switch-1]--;
if(setting_PCF8583[3]==0)setting_PCF8583[3]=1;// days
if(setting_PCF8583[4]==0)setting_PCF8583[4]=1;// week
if(setting_PCF8583[5]==0)setting_PCF8583[5]=1;// month
}
}
طبعا هذه الداله ممبرمجه على set_switch ويمثل مفتاح اختيار الداله وهو يقابل متغير set باعتبار اننا نريد ضبط وقت والتاريخ كلا على حدا
يعني بالضبط ساعه وبعدها دقائق وثواني وايام واسابيع والاشهر والسنه وصيغه الوقت هل بل 24 او 12 وبتالي لدينا 8 اختيارات
لذا لما يصبح set=9 معناها اعطي امر بالكتابه
inc_dec_system_12_24 اما هذا متغير فلهو وظائف منها
اذا كان يساوي 0 فمعناه قم بالزياده واذا كان يساوي 1 قم بالنقصان واذا كان لايساوي 1 ولايساوي 0 فلا ينفذ اي شيئ
ملاحظه // في داله show اخر متغير اذا تم وضعه بقيمه 0 معناها سوف يتم كتابه في متكامله PCF8583 واذا وضعنا غير ذلك مثلا 255 فقط يقوم بالقراءه ولهذا يتم برمجتها بوضع قيمه 0 عندما يتم الضغط على مفتاح setting لتسعه مرات عندها يتم كتابه شاهد الكود
كود:
if(set_switch==9)//write new data to PCF8583
{
if(inc_dec_system_12_24==24)
{
kw_12_24=24;
if(k_12_24==1 && setting_PCF8583[0]<12)setting_PCF8583[0]=setting_PCF8583[0]+12;
// to change hours from system 12 to 24 for example if hours = 17 then change hours to sys 12
// then hours = 05 PM now I wanted change sys to sys24 then must hours return to 17
}
else if(inc_dec_system_12_24==12)kw_12_24=12;
Show_Time(setting_PCF8583[0],setting_PCF8583[1],setting_PCF8583[2],setting_PCF8583[3],
setting_PCF8583[4], setting_PCF8583[5],0);
}