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

   

sunsong
:: مهندس متواجد ::
تاريخ التسجيل: May 2011
المشاركات: 98
نشاط [ sunsong ]
قوة السمعة:
قديم 13-10-2011, 11:49 PM المشاركة 9   
افتراضي



ارجوا المساعدة بخصوص البرمجة

اعلانات

somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 221
نشاط [ somood ]
قوة السمعة:
قديم 14-10-2011, 12:52 AM المشاركة 10   
افتراضي


اخي الحبيب هذا كود كنت كتبته وجربته على البروتس وبدون مشاكل وهو عبارة عن مفتاحين متصلين على البوررت C الاول PORTC.F0 والثاني PORTC.F1
بحث كل ضغطة على المفتاح الاول تزيد الرقم الظاهر بمقدار واحد حتى تصل الى الرقم تسعة فتعود الى صفر ... والمفتاح الثاني بنفس الطرقة ينقص الرقم حتى الصفر وبعدها نجعله يساوي تسعة المميز في هذا الكود انه يقوم عند كل عملية زيادة او نقصان بتخزين القيمة الجديد في موقع في ذاكرة ال EEPROM وفائدة ذلك انه عند فصل القدرة عن الدائرة لأي سبب من الاسباب ثم التشغيل من جديد فإنك سوف تجد البك بدأ من حيث انتهيت قبل فصل القدرة

كود:
char i;
bit a,b;
void main() {
ADCON1=0x07;
UART1_Init(9600);
TRISB=0;
TRISC=3;
PORTB=EEPROM_Read(5); /*  هذا السطر يجعل بورت بي يأخذ قيمته عند بداية التشغيل من مكان تخزين المتغير آي وبذك يبدا العد من حيث انتهى اخر مرة    */
i=EEPROM_Read(5);

a=0;
b=0;
 while(1){

 a=!PORTC.F0||a; /*هذا السطر للتعامل مع المفتاح فبذلك لن يتم زيادة الرقم على الشاشة او انقاصه الا عند الظغط على المفتاح ثم ازالة الضغط */
 if(PORTC.F0&&a){if(i==9)i=0; else i=i+1;a=0; EEPROM_Write(5,i); Delay_ms(50);}  //هنا يتم اختبار هل تم الضغط على المفتاح
 //ظظلمفتاح التصل ببورت سي البت رقم صفر فإذا تتحقق
 //ق الشرط فإنه يقوم مرة اخرى بإختبار اذا كان وصل للرقم تسعة فأن وصل فإنه يجعله 
 //يعود الى الصفر ثم يقوم بزيادة المتغر آي ثم تصفير المتغير ايه ثم يخزن هذا المت
 //غير في الموقع رقم 5 من الذاكرة ثم ينتظر زمن قليل وهذا الانتظار مهم حتى ينتهي البك من الكتابة في الذاكرة

 b=!PORTC.F1||b;
 if(PORTC.F1&&b){if(i==0)i=9; else i=i-1;b=0; EEPROM_Write(5,i);
 Delay_ms(50);}

 
 PORTB=EEPROM_Read(5);// ثم نجعل بورت بي يقرا من الموقع الذي خزنا فيه المتغير ولو جعلناه يقرا المتغير مباشرة لا مشكلة هنا

 }
 

}


اما بالنسبة للسطر
كود:
 a=!PORTC.F0||a;
 if(PORTC.F0&&a)
فالسطر الاول عبارة عن دائرة منطقية حيث الاشارة ( ! ) تمثل بوابة ( NOT ) والاشارة ( || ) تمثل بوابة ( OR ) اما الاشارة ( && ) فهي بوابة ( AND )

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

somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 221
نشاط [ somood ]
قوة السمعة:
قديم 14-10-2011, 12:58 AM المشاركة 11   
افتراضي


اخي يمكنك حذف السطر
كود:
UART1_Init(9600);
حيث وضع بالخطأ
اما السطر
كود:
ADCON1=0x07;
فهو خاص بالمتحكم 16f877a لايقاف المقارنات والمداخل التماثلية


sunsong
:: مهندس متواجد ::
تاريخ التسجيل: May 2011
المشاركات: 98
نشاط [ sunsong ]
قوة السمعة:
قديم 14-10-2011, 08:54 PM المشاركة 12   
افتراضي


شكرا لكم على الردود.
انا مشكلتى الاساسية ليست فى اظهار الارقام من 0 الى 9 على المايكرو بل اريد اظهار الارقام من 0 الى F يعنى بعد 9 يظهر A,B,C,D,E,F وانا كتبت هذا الكود على MikroC لكن بعد9 تظهر اشياء غريبة
كود:
void main() {
trisa=0xff;
trisb=0;
portb=0;
while(1){
   if(porta.f0==0) {
   portb++;
    if(portb==0x0f)
   portb=0;
   delay_ms(100);
   }
}
}


sunsong
:: مهندس متواجد ::
تاريخ التسجيل: May 2011
المشاركات: 98
نشاط [ sunsong ]
قوة السمعة:
قديم 15-10-2011, 02:40 PM المشاركة 13   
افتراضي


نرجوا من الخبراء تصحيح الكود لاظهار الارقام من 0 الى F


somood
:: مهندس جيد ::
تاريخ التسجيل: Jan 2011
الدولة: نابلس
المشاركات: 221
نشاط [ somood ]
قوة السمعة:
قديم 15-10-2011, 06:28 PM المشاركة 14   
افتراضي


اخي اعتقد ان المشكلة ليست بالبرنامج للأني عدلت على برنامجي ليعد حتى يظهر الرقم F على الشاشة فلم يعمل من خلال المتكاملة والشاشة المربوطة معه ولكنت جربت اداة موجودة في البروتوس للمحاكاة فقط و هي 7 سجمنت تشبك على البورت مباشرة وتحول الارقام الثنائية الى عشرية اكتب في برنامج البروتس 7seg-bcd وجرب هذه الاداة حيث لها 4 اطراف توصل بالبك مباشرة وتاكد ان المشكلة ليست من البرنامج هذا ما اسطيع ان اساعدك به وان ظهر معي جديد فسأعلمك المهم ان لا تيأس فمجال الميكروكنترلر اهم شيء فيه المثابرة والهمة العالية فأنا مثلا حتى الان لم ينجح معي شي الا بعد عناء طويل يستمر لأيام في كل مرة لكتابة كود بشكل صحيح وفعال


الصورة الرمزية mahmosha
mahmosha
:: مهندس جيد ::
تاريخ التسجيل: Sep 2011
الدولة: مصر
المشاركات: 213
نشاط [ mahmosha ]
قوة السمعة:
قديم 15-10-2011, 06:35 PM المشاركة 15   
افتراضي


نرجوا من الخبراء تصحيح الكود لاظهار الارقام من 0 الى F
استطيع المساعده اذا لم تنم تستعمل متكامله اسف


sunsong
:: مهندس متواجد ::
تاريخ التسجيل: May 2011
المشاركات: 98
نشاط [ sunsong ]
قوة السمعة:
قديم 15-10-2011, 07:09 PM المشاركة 16   
افتراضي


استطيع المساعده اذا لم تنم تستعمل متكامله اسف
لم افهم اخى ارجو التوضيح



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