الان ندخل في لوب مستمر
هنا سوف يتم أختبار جميع سويجات هل تم ضغط عليها ام لا
كود:
if ( sw_set==0 ) // set switch
هذا سويج يستخدم لضبط الساعه
وهذا سويج لنقصان الرقم
كود:
else if (sw_dec == 0)
اما هذا سويج لزياده
طبعا هذه مشروحه مع مكتبه ds1307
=========================================
كود:
else if (sw_alarm ==0) // alarm switch
{
delay_ms(20);
while(sw_alarm==0);
delay_ms(20);
lcd_cmd(1);
cont2=1;
lcd_out(1,1,"Fajr ");
hours_alarm=EEPROM_Read(5);
minutes_alarm=EEPROM_Read(6);
alarm_setting();
display_const_text();
}
هنا يتم أختبار سويج انذار هل تم ضغط عليه اذا كان جواب نعم
هذا من اجل حل مشكله debounce كما انه لاينفذ طالما انت ضاغط على سويج
كود:
delay_ms(20);
while(sw_alarm==0);
delay_ms(20);
=======================================
كود:
lcd_cmd(1);
cont2=1;
lcd_out(1,1,"Fajr ");
hours_alarm=EEPROM_Read(5);
minutes_alarm=EEPROM_Read(6);
وبعدها يمسح شاشه
ويجعل متغير cont2=1 وهذا متغير يحدد اي من وقت الصلاه الفجر او ظهر او ..
لذا cont2=1 معناها سوف يتم ضبط وقت الفجر
وبعدها سوف يظهر رساله Fajr للدلاله انه نريد ضبط وقت فجر
ثم نستدعي داله ضبط منبه
بعد ما ينتهي من ضبط المنبه لابد من أعاده عرض النص على شاشه
راجعو كود داله
كود:
display_const_text();
=============================================
كود:
else if (sw_alarm_stop==0) // stop alarm switch
{
delay_ms(250);
buzzer=0;
flag_alarm=0;
stop_alarm=255;// stop alarm
}
هنا يختبر هل سويج sw_alarm_stop تم ضغط عليه
وهو يستخدم لايقاف منبه حيث يوقف منبه وصفر متغير خاص بأنذار
===========================================
كود:
else if (clear_all_alarm==0) // clear_all_alarm switch
{
delay_ms(250);
for(x=0;x<5;x++)EEPROM_Write(x,255);
delay_ms(250);
for(x=0;x<5;x++)
{
prayer_alarm[x]=EEPROM_Read(x);
alarm[x]=0;
}
flag_alarm=0;
led_alarm=0;
}
هذا سويج يستخدم لايقاف جميع أنذار سواء كان للفجر او ظهر او ....
طبعا يكفي كتابه اي رقم عدا 100 في مواقع خمسه من ايبروم لماذا لانها خصصت لخزن flags لكي نعرف هل تم تشغيل منبه للفجر وظهر و...
طبعا انا خزنت رقم 100 للدلاله على انه تم تفعيل منبه وعكس ذلك منبه متوقف
===============================================
كود:
else if(kk ==255)
{
Show_Time(0,0,0,0,0,0,0,255);
LCD_Out(1,1, txt_day);
Lcd_Chr(1, 5, (day / 10) + 48); // Print tens digit of day variable
Lcd_Chr(1, 6, (day % 10) + 48); // Print oness digit of day variable
Lcd_Chr(1, 8, (month / 10) + 48);
Lcd_Chr(1,9, (month % 10) + 48);
Lcd_Chr(1,13, (year / 10) + 48);
Lcd_Chr(1,14, (year % 10) + 48);
Lcd_Chr(2, 5, (hours / 10) + 48);
Lcd_Chr(2, 6, (hours % 10) + 48);
Lcd_Chr(2, 8, (minutes / 10) + 48);
Lcd_Chr(2,9, (minutes % 10) + 48);
Lcd_Chr(2,11, (seconds / 10) + 48);
Lcd_Chr(2,12, (seconds % 10) + 48);
if(k_12_24==0)lcd_out(2,14,"AM");
else if(k_12_24==1)lcd_out(2,14,"PM");
else if(k_12_24==24)lcd_out(2,14," ");
}
كود:
Show_Time(0,0,0,0,0,0,0,255);
هذا الكود لقراءه الوقت والتاريخ من متكامله ds1307
وبقيه الكود هو لاظهار البيانات على الشاشه
==========================================