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

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

mahmoudlegend
:: مهندس ::
تاريخ التسجيل: Nov 2012
المشاركات: 6
نشاط [ mahmoudlegend ]
قوة السمعة:0
قديم 08-12-2012, 09:33 PM المشاركة 1   
ha مشكلة فى برنامج بسيط بإستخدام PIC16F84A Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته

فى البداية انا مبتدئ جدا فى مجال الالكترونيات و المايكروكنترولر
فكرت فى عمل دارة تقوم بتتبع الضوء بمحورين بإستخدام 4 LDR

ما فعلته ببساطة هو تصويل ال 4 ldr على كومباراتور LM339 و أخذت الخرج على الدخل بتاع المايكروكنترولر

ثم الخرج على بورت B0,B1,B2,B3 على 4 ريلاى للتحكم فى اتجاه حركة محركين (شمال , جنوب , شرق , غرب)

المشكلة عند تنفيذ البرنامج على بروتوس يعطى رسالة خطأ
Simulation is not running in real time due to excessive CPU load.
و عند النظر فى التاسك مانجر للويندوز يكون cpu usage لا يزيد عن 30 بالمائة


هذا هو الكود المستخدم و هو بسيط جدا لأنى مبتدئ جدا فى المايكرو سى ولا اعرف غيره


كود:
void main() {
trisa=0b00011111;
trisb=0;
aa:
if (porta==0b00001111)
{
portb=0;
}
if (porta==0b00000001)
{
portb=0b00000001;
}
if (porta==0b00000010)
{
portb=0b00000010;
}
if (porta=0b00000100)
{
portb=0b00000100;
}
if (porta=0b00001000)
{
portb=0b00001000;
}
if (porta=0b00000101){
portb=0b00000101;
}
if (porta=0b00000110){
portb=0b00000110;
}
if (porta=0b00001010){
portb=0b00001010;
}
if (porta=0b00001001){
portb=0b00001001;
}
goto aa;
}
ارجوا المساعدة فى معرفة اين المشكلة

مع العلم انى جربت نفس الكود لكن بإستخدام 2 ldr و موتور واحد و 2 ريلاى للتحكم فى اتجاه حركة الموتور وعند التجربة كان يعمل بطريقة جيدة جدا




اعلانات

Mohammedalharbi
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2012
المشاركات: 58
نشاط [ Mohammedalharbi ]
قوة السمعة:0
قديم 09-12-2012, 06:39 AM المشاركة 2   
افتراضي


وعليكم السلام ورحمة الله وبركاتة..
اخي انا شايف بعض الاخطاء في الكود:
1-
if (porta=0b00000100
لازم يكون (==) وليس (=) ..واعتقد في السطور الاولى كتبتها صح بس في اخر 6 كتبتها خطا.

2- انا استخدم برنامج MPLAB
ومايسمحلي استخدم trisb او portb بحروف صغيرة لازم تكون PORTB , TRISB
لااعرف عن البرنامج الي تستخدمة..بس اتوقع انها لازم تكون بحروف كبيرة لانها اسماء ريجستري في المايكروكنترولر.

3- يفضل تصفير كل البورتات قبل قراءتها او الكتابة اليها..لانها تكون بعض الاحيان 1 او 0 عند البداية.. فمثلاً :
TRISA=0b00011111;
TRISB=0;
PORTA=0;
PORTB=0;
:
:

جرب وان شاءالله تنفع معاك

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 409
نشاط [ banna1980 ]
قوة السمعة:0
قديم 09-12-2012, 07:03 AM المشاركة 3   
افتراضي


جزاك الله خيرا اخ محمد الحربي:::

احيط بعلمكم ان (لغة الميكرو سي ) غير حساسة بالحروف الصغيرة والكبيرة


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 09-12-2012, 07:24 AM المشاركة 4   
افتراضي


تفضل اخي هذا الكود شغال باستخدام البك PIC16f84a

كود:
void main() 
{trisa=0x0f;trisb=0;portb=0;
while(1)
        {if(porta==0x0f)portb=0;
        else portb=porta;
        
        }

}


mahmoudlegend
:: مهندس ::
تاريخ التسجيل: Nov 2012
المشاركات: 6
نشاط [ mahmoudlegend ]
قوة السمعة:0
قديم 09-12-2012, 09:08 AM المشاركة 5   
افتراضي


وعليكم السلام ورحمة الله وبركاتة..
اخي انا شايف بعض الاخطاء في الكود:
1-
if (porta=0b00000100
لازم يكون (==) وليس (=) ..واعتقد في السطور الاولى كتبتها صح بس في اخر 6 كتبتها خطا.

2- انا استخدم برنامج MPLAB
ومايسمحلي استخدم trisb او portb بحروف صغيرة لازم تكون PORTB , TRISB
لااعرف عن البرنامج الي تستخدمة..بس اتوقع انها لازم تكون بحروف كبيرة لانها اسماء ريجستري في المايكروكنترولر.

3- يفضل تصفير كل البورتات قبل قراءتها او الكتابة اليها..لانها تكون بعض الاحيان 1 او 0 عند البداية.. فمثلاً :
TRISA=0b00011111;
TRISB=0;
PORTA=0;
PORTB=0;
:
:

جرب وان شاءالله تنفع معاك
جزاك الله خيرا اخى الكريم ,, فعلا الكود كان فيه الخطأ اللى حضرتك قولت عليه اتبعت نصائحك و هو الآن يعمل بكفآءة

جزاك الله خيرا اخ محمد الحربي:::

احيط بعلمكم ان (لغة الميكرو سي ) غير حساسة بالحروف الصغيرة والكبيرة
تفضل اخي هذا الكود شغال باستخدام البك PIC16f84a

كود:
void main() {trisa=0x0f;trisb=0;portb=0; while(1) {if(porta==0x0f)portb=0; else portb=porta; } }
جزاكم الله خيرا على مجهودكم الكبير


الصورة الرمزية Elhachmivb
Elhachmivb
:: مهندس ::
تاريخ التسجيل: Sep 2013
الدولة: Algeria
المشاركات: 40
نشاط [ Elhachmivb ]
قوة السمعة:0
قديم 09-10-2013, 08:18 PM المشاركة 6   
افتراضي


ممكن مخطط الدارة من فضلكم

إضافة رد

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

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

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


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

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