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

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

aziz_botta2002
:: مهندس ::
تاريخ التسجيل: May 2011
المشاركات: 10
نشاط [ aziz_botta2002 ]
قوة السمعة:0
قديم 30-12-2012, 06:38 PM المشاركة 1   
ha كيف اجعل هذا الكود مختصرا Twitter FaceBook Google+



ارجو المساعدة انا مبتدى فى الميكرو كنترول واتمنى ان اجد المساعدة

انا برمجت كود لكن الكود كبير جدا على الاى سى وكنت حابب اعرف ازاى اقدر ابرمج

الكود ده بطريقة مختصرة اكتر من كده وده الكود فى الملف


مع العلم انا شغال على اى سى P16F628A

Code.txt - 4.46
KB

اعلانات

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


اخي عزيز ...
اعتقد تم حل هذا الموضوع وارسلت لك الحل ....

كود:
char i=0;
char matrixa[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
char matrixb[]={2,4,6,8,10,1,3,5,7,9,11,14,20,34,56,43,12};
void main()
 {cmcon=07;
 trisa=0;trisb=0;porta=0;portb=0;
 while(1)
         {for(i=0;i<=17;i++)
                            {porta=matrixa[i];
                             portb=matrixb[i];
                             delay_ms(250);
                             }
         }

}


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 30-12-2012 الساعة 11:11 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

aziz_botta2002
:: مهندس ::
تاريخ التسجيل: May 2011
المشاركات: 10
نشاط [ aziz_botta2002 ]
قوة السمعة:0
قديم 31-12-2012, 02:56 PM المشاركة 3   
ha


يا اخى بالله عليك انا مش فاهم انت بتقول تم الحل لكن اولا الكود مش نفس الى انا بعته ثانيا انا مش فاهم على اى اساس حضرتك كتبت الكود الى انت بعته وانا مش بطلب منك اكتر من انك تشرحه لى وانا احاول انظم الكود بتاعى بطريقتى لكن افهم ازاى اقدر انظمه وافهم الكود الى انت بعته


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


طبعا لم يشبه الكود الذي انت كتبته .. ولو كان كذلك فلا تزال المشكلة قائمة ...
كل ما ستجريه من تغيير انك تضع بيانات المنفذين A,B داخل المصفوفتين في الكود و تنتهي المشكلة ...


masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:0
قديم 31-12-2012, 07:08 PM المشاركة 5   
افتراضي


اضافة لما قدمه اخي حيدر من استخدام المصفوفات
هناك
معلومه صغيره تساعد في تنقيص الحجم المخصص للكود في ذاكره البيك
وهي ان تغير تعريف المتغير من int الى char او لى unsigned short
يعني بدلا من ان تكتب
كود:
 int x=0;
اكتب
char x=0;
او اكتب
unsigned short x=0;
اتمنى ان اكون وفقت في الفائده


aziz_botta2002
:: مهندس ::
تاريخ التسجيل: May 2011
المشاركات: 10
نشاط [ aziz_botta2002 ]
قوة السمعة:0
قديم 01-01-2013, 08:47 PM المشاركة 6   
افتراضي


طيب اخى انا دلوقتى هبدا اغير فى بيانات المصفوفتين على اى اساس لانه المشكلة عندى انى مش قادر افهم نظام المصفوفة او ازاى اكتبها


masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:0
قديم 02-01-2013, 12:31 PM المشاركة 7   
افتراضي


حياك لله
معلوماتي قليلة وبسيطه ولست متخصص فيها ، وساحاول توضيح ما اعرفه
انت عملت حوالي اثناعشر متغير من النوع int وهذا يأخذ الكثير من ذاكرة البيك لذلك غيره الى النوع unsigned short
كود:
  unsigned short m,y,k,a,g,z,f,s,n,b,h;
نكتفي بذكر نوع المتغير unsigned short مرة واحدة ثم نضع الفاصلة , بين المتغيرات.

المصفوفة ببساطة
اولا : الاعلان عن نوع المتغير هل هو int أو char أو غير ذلك
ثانيا : اكتب اسم للمصفوفة (اي اسم تختاره)
ثاثا : عمل قوسين [ ]
رابعا : عمل يساوي
كود:
 int Ahmad[]=
نحن الان اعلنا عن مصفوفة من نوع int اسمها احمد
بعد ذلك نكتب محتوى المصفوفة والذي يكون بين قوسين { } ولا ننسى الفاصلة المنقوطة ;
كود:
 int Ahmad[]={a,b,c,d,e,f,g,h};
الآن انتهينا من عمل مصفوفة ثم ماذا؟

للنظر في هذه المصفوفة المكونة من ثمان 8 خانات (من a الى h )
الخانة الاولى المحتوية على الحرف a هي تعتبر الخانة رقم صفر
الخانة الثانية المحتوية على الحرف b هي تعتبر الخانة رقم واحد
.
.
.
الخانة الثامنة المحتوية على الحرف h هي تعتبر الخانة رقم سبعة
هذه هي الخانات الثمان الموجوده في هذه المصفوفة (من الصفر الى السبعة)
وهذا يعني اني لو كتبت (في اي مكان في الكود)
كود:
  Ahmad[0];
اعرف ان رقم صفر في المصفوفة هو الخانة الاولى وتحتوي هنا على الحرف a
ولو كتبت
كود:
  Ahmad[6];
اعرف ان الرقم ستة في المصفوفة هي الخانة السابعة المحتوية على الحرف g

كيف استفيد من هذا ؟
نستطيع الاستفادة من ذلك بالاعلان عن متغير ما وليكن مثلا
كود:
 char x;
ثم اجعل هذا المتغير يتمثل في المصفوفة كما يلي:
كود:
  Ahmad[x];
وهنا كلما تغير المتغير x تغيرت معنا الخانة المطلوبة من المصفوفة

مثلاً لو عملنا المصفوفة التالية
كود:
 char matrix[]={0B00000000,0B10000000,0B01000000,0B00100000,0B00010000};
ثم قلنا
كود:
 portb= matrix[0];
هنا سوف يأخذ المنفذ portb القيمة الموجوده في الخانة الاولى من المصفوفة matrix وهي القيمة 0B00000000

ملاحظة مهمه جداً
يجب الاعلان عن المصفوفة في أول الكود (بداية البرنامج)

هذا تقريباً ما اعرفه اتمنى ان اكون وفقت في توضيحه



aziz_botta2002
:: مهندس ::
تاريخ التسجيل: May 2011
المشاركات: 10
نشاط [ aziz_botta2002 ]
قوة السمعة:0
قديم 02-01-2013, 02:35 PM المشاركة 8   
افتراضي


حياك لله
معلوماتي قليلة وبسيطه ولست متخصص فيها ، وساحاول توضيح ما اعرفه
انت عملت حوالي اثناعشر متغير من النوع int وهذا يأخذ الكثير من ذاكرة البيك لذلك غيره الى النوع unsigned short
كود:
  unsigned short m,y,k,a,g,z,f,s,n,b,h;
نكتفي بذكر نوع المتغير unsigned short مرة واحدة ثم نضع الفاصلة , بين المتغيرات.

المصفوفة ببساطة
اولا : الاعلان عن نوع المتغير هل هو int أو char أو غير ذلك
ثانيا : اكتب اسم للمصفوفة (اي اسم تختاره)
ثاثا : عمل قوسين [ ]
رابعا : عمل يساوي
كود:
 int Ahmad[]=
نحن الان اعلنا عن مصفوفة من نوع int اسمها احمد
بعد ذلك نكتب محتوى المصفوفة والذي يكون بين قوسين { } ولا ننسى الفاصلة المنقوطة ;
كود:
 int Ahmad[]={a,b,c,d,e,f,g,h};
الآن انتهينا من عمل مصفوفة ثم ماذا؟

للنظر في هذه المصفوفة المكونة من ثمان 8 خانات (من a الى h )
الخانة الاولى المحتوية على الحرف a هي تعتبر الخانة رقم صفر
الخانة الثانية المحتوية على الحرف b هي تعتبر الخانة رقم واحد
.
.
.
الخانة الثامنة المحتوية على الحرف h هي تعتبر الخانة رقم سبعة
هذه هي الخانات الثمان الموجوده في هذه المصفوفة (من الصفر الى السبعة)
وهذا يعني اني لو كتبت (في اي مكان في الكود)
كود:
  Ahmad[0];
اعرف ان رقم صفر في المصفوفة هو الخانة الاولى وتحتوي هنا على الحرف a
ولو كتبت
كود:
  Ahmad[6];
اعرف ان الرقم ستة في المصفوفة هي الخانة السابعة المحتوية على الحرف g

كيف استفيد من هذا ؟
نستطيع الاستفادة من ذلك بالاعلان عن متغير ما وليكن مثلا
كود:
 char x;
ثم اجعل هذا المتغير يتمثل في المصفوفة كما يلي:
كود:
  Ahmad[x];
وهنا كلما تغير المتغير x تغيرت معنا الخانة المطلوبة من المصفوفة

مثلاً لو عملنا المصفوفة التالية
كود:
 char matrix[]={0B00000000,0B10000000,0B01000000,0B00100000,0B00010000};
ثم قلنا
كود:
 portb= matrix[0];
هنا سوف يأخذ المنفذ portb القيمة الموجوده في الخانة الاولى من المصفوفة matrix وهي القيمة 0B00000000

ملاحظة مهمه جداً
يجب الاعلان عن المصفوفة في أول الكود (بداية البرنامج)

هذا تقريباً ما اعرفه اتمنى ان اكون وفقت في توضيحه



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

إضافة رد

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

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

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


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

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