الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

delay loop

مغلق
بدأه eng47 في 16 أبريل 2007 · 2 رد · 536 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ،

كيف أعرف ال delay الناتج عن هذا الكود ؟؟

شكراً جزيلاً

DELAY_LOOP_Wait(30);

/*------------------------------------------------------------*-
DELAY_LOOP_Wait()
Delay duration varies with parameter.
Parameter is, *ROUGHLY*, the delay, in milliseconds,
on 12MHz 8051 (12 osc cycles).
You need to adjust the timing for your application!
-*------------------------------------------------------------*/
void DELAY_LOOP_Wait(const unsigned int DELAY_MS)
{
unsigned int x, y;
for (x = 0; x <= DELAY_MS; x++)
{
for (y = 0; y <= 120; y++);
}
}

تم تعديل هذه المشاركة بواسطة eng47 في 16 أبريل 2007 في 18:16

#2

السلام عليكم ,,

الدالة حسب ما ورد في الشرح المرفق معها! ,, تقوم بالتأخير 30 ms ,, إذا كنت تريد طريقة أسهل في ++C فأعرف طريقتين ,,

الأولى أن تستخدم الدالة ()time كالتالي ,,

#include <ctime>
using namespace std;
int main(){
   time_t secwait  = 5;
   // The number of seconds to be waited.
   for ( time_t TimeWait = time() + secwait; time() < TimeWait; );
   // Do what ever you want here after 5 seconds.
   return 0;
}

هذه الطريقة إحدى الحلول و لكنها ليست أفضلها ,,

الطريقة الأفضل هي استخدام دوال Win API عن طريق الدالة ()Sleep ,,

هذا مثال على الدالة ,, تحتاج إلى تضمين الملف windows.h فقط للتعامل معها ,

   Sleep( 5000 );
   // Do what ever you want here after 5 seconds.

ما عليك سوى تمرير الوقت الذي تريد تأخيره بالـ ms

تحياتي ,,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 16 أبريل 2007 في 19:13

#3

أنا قصدي لماذا هنا

for (x = 0; x <= DELAY_MS; x++)
{
for (y = 0; y <= 120; y++);

لماذا y<=120 بالذات؟ مش المفروض التأخير يساوي حاصل ضرب ال x,y ????

أي أنه هنا = 30 * 120 وهو لا يساوي 30msec !!

شكراً جزيلاً

هذا الموضوع مغلق.

مواضيع مشابهة