قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

النعمي
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 207
نشاط [ النعمي ]
قوة السمعة:0
قديم 29-06-2012, 12:33 PM المشاركة 1   
افتراضي مساعد في كود 12 ساعة .. 12 ساعة Twitter FaceBook Google+



السلام عليكم ..

ابي مساعدة في كود للبيك .. 16F84A

يشغل ريله 12 ساعة ويطفيها 12 ساعة ..لجميع المخارج ..

وهلى هذا الكود صحيح لهذه العملية ؟!
كود:
void main()
{
trisb=0;
loop:
portb=0;
delay_ms(43200000);
portb=0xff;
delay_ms(43200000);
goto loop;
}


التعديل الأخير تم بواسطة : النعمي بتاريخ 29-06-2012 الساعة 12:36 PM
اعلانات

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 29-06-2012, 01:21 PM المشاركة 2   
افتراضي


بسم الله الرحمن الرحيم
تفضل اخى


كود:
char x=0;

void main() {

trisb=0;

loop:
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=0;delay_ms(5000);}}
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=255;delay_ms(5000);}}
goto loop;
}


وهذا هو هو نفس الكةد لكن علشان تعرف تنسخة

char x=0;

void main() {

trisb=0;

loop:
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=0;delay _ms(5000);}}
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=255;del ay_ms(5000);}}
goto loop;
}


التعديل الأخير تم بواسطة : funky112233 بتاريخ 29-06-2012 الساعة 01:26 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

النعمي
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 207
نشاط [ النعمي ]
قوة السمعة:0
قديم 29-06-2012, 01:41 PM المشاركة 3   
افتراضي


ربي يبآرك فيك ..

بس استفسآرين بسيطه ..

1- ياليت لو تشرح الكود خآصتآ هذا الكود
كود:
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=0;delay_ms(5000);}}
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=255;delay_ms(5000);}}
2- البيك 16f84a هل يقبل الكتابة والمسح

متشكر يآ بآش مهندس


النعمي
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 207
نشاط [ النعمي ]
قوة السمعة:0
قديم 29-06-2012, 01:58 PM المشاركة 4   
افتراضي


انا وضعت اعدادات المآيكرو سي كذآ هل هي صحيحه !؟!؟



الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 29-06-2012, 04:20 PM المشاركة 5   
افتراضي


بسم الله الرحمن الرحيم
انت تامر اخى

اولا
الامر دة
كود:
for(x=0;x<144;x++){ هنا الاوامر}
هذا الامر سوف تتعرف علية فى الدورة باذن الله
وفائدتة هو عمل تكرار للاوامر بحسب العدد الذى تضعه
هنا سوف يتم تكرار االوامر 144 مرة


ثانيا
قمت بحساب كم من الدقائق نحتاج لكى نصل الى 12 ساعه
وكان الحساب كا الاتى

12*60 = 720 دقيقة

اى انك اذا انتظرت 720 دقيقة هكذا تكون انتظرت 12 ساعة

وبعد ذلك حسبت اذا كانت سوف اعد 5 دقائق فى المرة الواحدة فكم مرة نكرر حتى نصل الى 720 دقيقة

720/5 = 144 مرة

اذن نحتاج ان نكرر امر الانتظار 5 دقائق 144 مرة لكى نصل الى 12 ساعة

ولكن هنا مشكلة وهى ان الميكرو سى لا تسطيع ان تعطى امر انتظار 5 دقائق مرة واحدة اى هكذا

كود:
delay_ms(50000);
ولكن ما الحل ؟؟؟

الحل هو ان نكرر مدة 5 ثوانى عدد من المرات حتى تصل الى 5 دقائق
وبعد ذلك نكرر 5 دقائق 144 مرة لنصل الى 12 ساعة

وبالحساب هكذا
نحول ال5 دقائق الى ثوانى

5*60 = 300 ثانية

اذن كم نكرر 5 ثوانى حتى تصبح 300 ثانية اى 5 دقائق

نحسب

300/5 = 60 مرة

وهكذا وضعت الاوامر هكذا

كود:
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=0;delay _ms(5000);}}
for(x=0;x<144;x++){for(x=0;x<60;x++){portb=255;del ay_ms(5000);}}
الامر الذى يتكرر 60 مرة يعد حتى يصبع الوقت 5 دقائق وبعد ذلك يكرر هذا 144 مرة فنصل الى 12 ساعة

ارجوا ان تكون وضحت الفكرة


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 29-06-2012, 04:22 PM المشاركة 6   
افتراضي


انا وضعت اعدادات المآيكرو سي كذآ هل هي صحيحه !؟!؟



نعم هذا صحيح
ولكن يفضل استخدام كريستال
وسوف تعرف هذا من خلال الدورة
ولكن اذا اردت التنفيذ هكذا فلا مشكلة صحيح ان شاء الله



اما عن الميكرو pic16f84a
فنعم يقبل المسح والكتابة


النعمي
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 207
نشاط [ النعمي ]
قوة السمعة:0
قديم 29-06-2012, 04:34 PM المشاركة 7   
افتراضي


بآرك الله فيك ..


طيب سؤآل بسيط وانآ تعبتك معي ..

كود:
char x=0;
void main()
{trisb=0;
loop:
for(x=0;x<2;x++){for(x=0;x<60;x++){portb=0;delay_ms(1000);}}
for(x=0;x<2;x++){for(x=0;x<60;x++){portb=255;delay_ms(1000);}}
goto loop;
}
انا سويت الأمر هذآ .. غيرت الـ 5 ثواني .. وجعلتها 1 ثانية ..
وغيرت عدد التكرار من 144 مره الى 2 مره ..

وجربتها على المحاكي .. بروتوس.. اعطاني دقيقة تشغيل دقيقه يطفي ..

المفروض يطفي دقيقتين .. ويشتغل دقيقتين ؟!!


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 29-06-2012, 07:11 PM المشاركة 8   
افتراضي


بسم الله الرحمن الرحيم
نعم للاسف حدث خطا معى فى الكود اعذرنى سهوت عنة

هذا هو الكود السليم



كود:
char d=0;
char x=0;
void main() {

trisb=0;

while(1){
for(x=0;x<144;x++){for(d=0;d<60;d++){portb=0;delay_ms(5000);}}
for(x=0;x<144;x++){for(d=0;d<60;d++){portb=255;delay_ms(5000);}}

}

}

وهذا هو نفس الكود ولكن حتى تسطيع ان تنسخه بسهولة

char d=0;
char x=0;
void main() {

trisb=0;

while(1){
for(x=0;x<144;x++){for(d=0;d<60;d++){portb=0;delay _ms(5000);}}
for(x=0;x<144;x++){for(d=0;d<60;d++){portb=255;del ay_ms(5000);}}

}

}



والفرق هنا انى كنت مخلى المتغير x هو الى يقوم بعملية العد فى الجملتين for
ودة كان مسبب مشكلة لان المتغير لازم يحتفظ بقيمتة
فعدلتها
وخليت مرة يعد المتغير x ومرة يعد المتغير d كما ترى فى الكود واعذرنى على السهو دة

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 11:41 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025