 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
13-09-2019, 04:03 PM
المشاركة 14
|
|
2- المفتاح Button2 :
فى البداية يعمل مثل المفتاح Button1 حتى يتم استدعاء دالة قائمة تغيير الزمن والتاريخ والعام MenuChangeTime .
كود:
if (Button1 == 0 && Button2 == 0){hold = 1;}
//Button2////////////////////////////
if (Button2 == 1 && hold == 1)
{
hold = 0;
convert = GotoTime; //Goto Time in Interrupt
MenuChangeTime();
////////////////////////////////////////////////////////////////////////////////////////////////////
//----Change Time & Date for Button2----------------------//
void MenuChangeTime()
{
char set;
set = 0;
while(1)
{
DisplayTime();// update after off for flashing item
SetChangeTime(set);////flashing item >>> set=0:hour, set=1:minute, set=2:date, set=3:month, set=4:year
if (Button2 == 0){hold = 1;}
if (Button2 == 1 && hold == 1)
{
hold = 0;
set ++;
if (set > 4) //Save Time
{
convert = GotoTime; //Goto Time in Interrupt
second = 0;
SaveTime();
break;
}
if (set > 1) convert = GotoDate; //Goto Interrupt
if (set > 3) convert = GotoYear; //Goto Interrupt
}
if (Button1 == 1) //Time & Date ++
{
//SetChangeTime(set);//flashing item >>> set=0:hour, set=1:minute, set=2:date, set=3:month, set=4:year
ChangeTime(set, 0); //Time & Date ++ sccording to set value : hr, min , date ,....
}
if (Button3 == 1) //No Save, Goto Normal Time
{
convert = GotoTime; //Goto Time in Interrupt
break;
}
}
}
//////////////////////////////////////////////////////////////////////////////////////
• فى بداية هذه الدالة يتم إعلان متغير عداد القائمة set وتصفيره والدخول إلى حلقة غير منتهية .
كود:
//----Change Time & Date for Button2----------------------//
void MenuChangeTime()
{
char set;
set = 0;
while(1)
{
• فى هذه الحلقة يتم استدعاء دالة عرض الزمن DisplayTime() لتحديث العنصر المعروض لتوصيل بياناته بعد عمل عملية فصلها لنحصل على وميض العنصر المطلوب بالدالة SetChangeTime(set)
كود:
DisplayTime();// update after off for flashing item
SetChangeTime(set);////flashing item >>> set=0:hour, set=1:minute, set=2:date, set=3:month, set=4:year
• عند الضغط على المفتاح Button2 يتم زيادة عداد القائمة set بواحد عند كل ضغطة
كود:
if (Button2 == 0){hold = 1;}
if (Button2 == 1 && hold == 1)
{
hold = 0;
set ++;
• تبعا لقيمة المتغير set ( تساوى القيمة 1 أو 2 أو 3 أو 4 ) يتم اتخاذ القرارات وفقا للدالة SetChangeTime(set) حيث يتم فصل العنصر المحدد والتأخير لمدة 500 ملى ثانية ثم إعادة توصيله بالدالة DisplayTime() لنحصل على وميض هذا العنصر (الساعات على سبيل المثال)
كود:
//----Change Time & Date for Button2----------------------//
void SetChangeTime(char set)
{
switch(set)
{
case 0:
hour_d1 = hour_d2 = 0xff; delay_us(500);
break;
case 1:
minute_d1 = minute_d2 = 0xff; delay_us(500);
break;
case 2:
date_d1 = date_d2 = 0xff; delay_us(500);
break;
case 3:
month_d1 = month_d2 = 0xff; delay_us(500);
break;
case 4:
year_d3 = year_d4 = 0xff; delay_us(500);
break;
}
}
• إذا كانت set > 4 يتم العودة لعرض الزمن (ساعة ودقيقة) ، وتصفير الثوانى second وحفظ التغيرات والخروج من الحلقة الغير منتهية .
كود:
if (set > 4) //Save Time
{
convert = GotoTime; //Goto Time in Interrupt
second = 0;
SaveTime();
break;
}
• إما إذا حدث أثناء الوميض (set =1 : set =4) أن تم الضغط على المفتاح Button1 فإنه يتم إستدعاء دالة تغيير العنصر المعروض ChangeTime لزيادة قيمته بواحد عند كل ضغطة :
كود:
if (set > 1) convert = GotoDate; //Goto Interrupt
if (set > 3) convert = GotoYear; //Goto Interrupt
}
if (Button1 == 1) //Time & Date ++
{
//SetChangeTime(set);//flashing item >>> set=0:hour, set=1:minute, set=2:date, set=3:month, set=4:year
ChangeTime(set, 0); //Time & Date ++ sccording to set value : hr, min , date ,....
}
• فى أى لحظة يتم فيها الضغط على المفتاح Button3 يتم العودة لعرض الزمن (ساعة ودقائق) من دون حفظ التغييرات والخروج من الحلقة الغير منتهية :
كود:
if (Button3 == 1) //No Save, Goto Normal Time
{
convert = GotoTime; //Goto Time in Interrupt
break;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
المفتاح Button3 والمفتاح Button4 تعمل بالطريقة العادية :
• الضغط على المفتاح Button3 يعرض الزمن (الساعة والدقائق) .
• الضغط على المفتاح Button4 يعرض العام year .
كود:
if (Button3 == 1)
{
convert = GotoTime; //Goto Time in Interrupt
}
/////////////////////
if (Button4 == 1)
{
convert = GotoYear; //Goto Year in Interrupt
delay_ms(10);
}
|