الإجابة نعم ولا
معذرة الأفضل البدء بعلاقة بسيطة حتى يسهل تحديد أين الخطأ و تكون أسرع فى الأداء
لماذا تجمع 48 على كل رقم؟؟ اجمعه على ما تريد ارساله للشاشة فقط
ثانيا 48 يجمع على رقم من 0 إلى 9 فقط ولا يصح على أعلى من ذلك و لم تحدد اصلا كم قيمة المتغير 48
أيضا && هنا لا تعلم على ماذا يطبق لذا يجب أن تجيط النتيجة الأولى بين قوسين و الثانية أيضا بين قوسين
رجاء إقرا ملف المساعدة للبرنامج المستخدم لتحدد الأولويات و ايها يطبق قبل ماذا
|
السلام عليكم
العلاقة التي اشرت اليها هي اكبر واصغر ,فأنا اريد تشغيل الـcooling او الــheating ,بواسطة المقارنة بين القيمة الــــTmin وTmax والمحفوظة أساسا على الـEEprom internal مع القـــــيمة المعروضة على الـشاشة LCD يعني بقى أن
كود:
if((48+eeprom_read(0))<=(48+(Temp/10)) &&(48+ eeprom_read(1))<=(48+(Temp%10))) {cooling=on;heater=off;lcd_out(2,1,"cold:On ");lcd_out_cp("Heater:off"); }
أما طول المتغير Tmin او(Tmax) هو 16 بيت يعني بأخذ القيمة الاولى 8بيت بعديين
8بت الثانية يعني لو المصفوفة بتاع الـTmin هي :
ولما احفضها على الايبروم تصير :
كود:
for (ii=0; ii<3; ii++)
{
mineeprom[ii] = EEPROM_Read(0x00+ii); // Start EEPROM Location,
}*/
اريد اقارن بين الـعنصر بالايبروم الاول -الى هو
و الـعنصر بالايبروم الاول للمصفوفة الـ [0]Temp المعروضة انفا على الlcd
وايضا نفس الشئ بالعنصر الثاني
و الـعنصر بالايبروم الاول للمصفوفة الـ [1]Temp
لقد قمت بزيادة 48 لكل عنصر لانascii code لايظهر على الشاشة
اما بالنسبة لـ && فانني اجمع الـعدد مثلا 19°c يعني 1+48 =49 و 9+48=57 بعني الشرط يكون كالاتي :
كود:
if((48+eeprom_read(0))<=(48+(Temp/10/* '1' in our exemple */)) &&(48+ eeprom_read(1))<=(48+(Temp%10/* '9' in our exemple */))) {cooling=on;heater=off;lcd_out(2,1,"cold:On ");lcd_out_cp("Heater:off"); }