لا أظن أنك تحتاج لاستخدام while بدلا من if, أو لاستخدام return, و لكن إذا كنت متأكدا فعلا من أن دالة cck لا يتم تنفيذها, فهذا معناه أن دالة charge بداخلها ما يمنع الميكروكنترولر من المواصلة, غالبا جملة while محتوية علي شرط يتحقق دائما مثل
ابحث بداخل دالة charge عن هذه الحلقة التكرارية loop ثم ضع داخلها الكود التالي:
كود:
if(ADC_Read(0)<147) break;
بالنسبة لسؤال الأخ حسن: قيمة 147 ليست قيمة الجهد و لكنها قيمة ADC بداخل الميكروكنترولر, أي أنها حسب الكود المكتوب تتراوح ما بين 0 و 1023*5.4\10 أي ما بين 0 و 536