|
موضوع اصبح صعب اخي و الكود كتابته صعبة و انا احاول ان افهم
1- اشرح لي كيف قمت باعلام الميكرو بتغزين النتيجة و كيف تم استدعائها من البروم
2-المشروع الى حد الساعة يعمل بكفائة و لاكن ان تضغط على سليب ثم تريد الرجوع الى الاول لا تعمل معي الكود صحيح و ممكن المشكل من البروتس
3- طيب اخي ساشرح لكم طلب
التاكسي يعمل بها موضف و ياخد اجره
اجر الموضف هو 1/3 من الحاصل
طيب هنا الموضف ينقر على سليب 3 مرات فيعرض له اجره
مثلا ان كان الحاصل 30.000 ف-------- نصيب الموضف هو10.000
فعند الضغط المرة الولى يعرض السرعة و الثانية يعرض الحاصل و الثالثة نصيب الموضف
|
يتم أستدعاء القيم مخزونه أثناء التشغيل البرنامج
تلاحظ ضمن main قبل دخول الى while
حيث القيم مخزونه في العنوان 0 و1و2و3 >> العنوان 0 هو flag للدلاله على انه وجود بيانات مخزونه في ايبروم حيث تم خزن الرقم 0 كـــ flag
فمثلا الرقم 123456 حيث تنخزن رقم 12 في موقع 1 و 34 في موقع 2 و 56 في موقع 3
كود:
if(EEPROM_Read(0)==0)// reading Price from eeprom
{
store_total_price= EEPROM_Read(1) ;
store_total_price =(store_total_price*100) +EEPROM_Read(2);
store_total_price =(store_total_price*100) +EEPROM_Read(3);
if(store_total_price>=999999)
{
led_full_price=1;
Price_enable=1; // flashing led for full price
store_total_price=999999;
}
else led_full_price=0;
led_clear=1;
}
else
{
store_total_price=0;
led_clear=0;
}
===============================================
وكذلك يتم أستدعاء مسافه
حيث القيم مخزونه في العنوان 4,5,6 >> العنوان 4 هو flag للدلاله على انه وجود بيانات مخزونه في ايبروم وفي نفس الوقت يتم خزن الرقم لانه من مستحيل وصول الرقم في عنوان 4 الى 255 وعليه في حاله عدم وجود بيانات يتم وضع قيمه 255 في العنوان 4 اما اذا توجد بيانات فأكيد الرقم سوف يتغير
فمثلا الرقم 123456 حيث تنخزن رقم 12 في موقع 1 و 34 في موقع 2 و 56 في موقع 3
كود:
if(EEPROM_Read(4)!=0xFF)// reading Price from eeprom
{
distance_km = EEPROM_Read(4) ;
distance_km =(distance_km*100) +EEPROM_Read(5);
distance_km =(distance_km*100) +EEPROM_Read(6);
if(distance_km>=999999)
{
led_full_distance=1;
distance_km_enable=1;// led flashing for full distance
distance_km=999999;
}
else led_full_distance=0;
led_distance_cont=1;
}
else distance_km=0;
==========================================
ام خزن عند الضغط على ستارت 3 مرات سوف يتم خزن البيانات
كود:
else if(start2>=3 )
{ // return to main code " display date , clock
kk=255;
if(start==3)// store Price value in eeprom
{
store_total_price += value_start;
if(store_total_price>=999999)
{
store_total_price=999999;
Price_enable=1;
}
EEPROM_Write(0,0);// store 0 in address 0 this flag mean the data storing in eeprom
EEPROM_Write(1,store_total_price/10000);//123456 /10000=12
EEPROM_Write(2,store_total_price/100%100);//123456 /100 =1234%100=34
EEPROM_Write(3,store_total_price%100); //123456 /100 =1234%100=34
distance_km +=distance;
EEPROM_Write(4,distance_km/10000);//123456 /10000=12
EEPROM_Write(5,distance_km/100%100);//123456 /100 =1234%100=34
EEPROM_Write(6,distance_km%100);
led_clear=1;
led_distance_cont=1;
}
start=0;
start2=0;
led_buzzy=0;
led_empty=1;
transfer_display=0;// now start display date and clock;
}
الكود بلون أحمر هو لاضافه البيانات الجديده الى البيانات القديمه لكي تخزن في ايبروم