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

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 11-09-2015, 10:16 AM المشاركة 1   
افتراضي مقترح اضافه معلومات مهمه عن البرمجه بلغه مايكروسي Twitter FaceBook Google+



السلام عليكم

عندي مقترح بسيط هو اضافه اوامر اكثر الاحترافيه في البرمجه بلغه مايكروسي برو
مثلا
الامر
strlen

هذا الامر يحسب لك طول اي مصفوفه



الصيغه

كود:
int strlen(char *s);
مثال

كود:
char txt[] = "mikroElektronika"; 
int result;  
result = strlen(txt);  // calculates the length of the 'txt' string, result = 16
============================================

الامر memcmp
هذا الامر مهمته عمل مقارنه بين مصفوفتين ويرجع 0 اذا كانت مصفوفتين متساويتين

الصيغه الامر
كود:
int memcmp(void *s1, void *s2, int n);

مثال
كود:
char *mess="HASSAN";
memcmp(mess+3, "SS", 2));
في مثال اعلاه راح يبدء مقارنه بين مصفوفه mess ابتداءا من عنصر رقم 3 مع مصفوفه "SS" ورقم 2 يشير الى ان عدد الاحرف مقارنه هي 2 فقط
هنا سوف يرجع 0 لان مصفوفتين متساويتين

=========================================
الامر memcpy

هذا الامر مهمته عمل نسخ مصفوفه بمصفوفه اخرى

الصيغه الامر
كود:
void *memcpy(void *d1, void *s1, int n);
حيث يتم نسخ محتويات S1 بمصفوفه d1 وبعدد عناصر تساوي n

مثال

كود:
char * mess1="Hel";
  char * mess2="lo";
  memcpy(mess1+3,mess2,2);


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 11-09-2015 الساعة 10:50 AM
اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 11-09-2015, 10:57 AM المشاركة 2   
افتراضي


طبعا مقترح هو كل شخص لديه فكره برمجيه او الامر مهم موجود في مايكروسي يضعه هنا لغرض تجميع الافكار لاستفاده منها في بناء مشاريع

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:136
قديم 11-09-2015, 11:07 AM المشاركة 3   
افتراضي الارسال بيانات خلال uart


طبعا اسهل طريقه لارسال عدد كبير من البيانات عن طريق الكود التالي

كود:
void Send_data(const char *s)
{
// Send command or data string
   while(*s) {
    UART1_Write(*s++);
   }

}
هنا لما تضع مصفوفه في داله Send_data فانه سوف تبدأ بأرسال مصفوفه ضمن حلقه while وعندما ترسل داله اخر بايت من مصفوفه فانه سوف يتم خروج من

while
طبعا داله تأخذ مصفوفه من نوع const اي مخزونه في روم اما اذا كانت في رام فانه فقط الغي كلمه const


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 13-09-2015, 09:15 PM المشاركة 4   
افتراضي


بارك الله فيك


الصورة الرمزية motoman2010
motoman2010
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2012
الدولة: مصر
المشاركات: 117
نشاط [ motoman2010 ]
قوة السمعة:0
قديم 14-09-2015, 03:55 AM المشاركة 5   
افتراضي


بارك الله فيك
وزودك من علمه علما ينفعك وينفع الناس


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 14-09-2015, 11:56 PM المشاركة 6   
افتراضي أمر لأستدعاء الأوامر .. #define


هذا الأ مر مهم جداااا فى البرامج اللتى يحتاج المبرمج لتكرار أمر معين فى عدد من مواقع البرنامج

ومن خلال هذا الأمر يمكن للمبرمج اختصار الكود ...


تعالو نشوف هذا الامر ونعمل مثالين لتوضيح الفكرة ..


كود:
       #define D3 delay_ms(320);

ودة مثال لأستخدام هذا الامر ..


كود:
  #define D3 delay_ms(320);
   
      void main() {
      
      trisb = 0 ;  portb = 0 ;


         while(1){

    portb = 1 ; D3    portb = 4 ;  D3

    portb = 4 ; D3    portb = 8 ;  D3
     
    portb = 16; D3    portb = 32 ; D3
     
    portb =64 ; D3   portb = 128 ; D3
     
}
}


فى هذا البرنامج تم استدعاء أمر الأنتظار 8 مرات

فى هذا البرنامج تم عمل عنوان لأمر ; (delay_ms (320 وأسم هذا العنوان هو D3


طبعاااا لك حريه الكتابه فى العنوان ...




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




كود:
   
      void main() {
      
      trisb = 0 ;  portb = 0 ;


         while(1){

    portb = 1 ;  delay_ms(320);    portb = 4 ;   delay_ms(320);

    portb = 4 ;  delay_ms(320);    portb = 8 ;   delay_ms(320);
     
    portb = 16;  delay_ms(320);    portb = 32 ;  delay_ms(320);
     
    portb =64 ;  delay_ms(320);   portb = 128 ;  delay_ms(320);
     
}
}



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


تعالو نشوف طريقه كمان لأختصار اكثر للبرنامج ....


تخيل أن تكتب برنامج يفعل بعض التعليمات والأوامر من خلال 3 حروف فقط .. وهم كلمه LED ... تخيل هذا الأمر الرائع ..


تعالو نشوف طريقة أخر لختصار البرنامج



كود:
     
  #define D3   delay_ms(320);
  
  #define LED portb = 1 ;  D3    portb = 4 ; D3  portb = 4 ; D3   portb = 8 ; D3   portb = 16; D3 portb = 32 ; D3  portb =64 ; D3 portb = 128 ; D3


      void main() {
      
      trisb = 0 ;  portb = 0 ;


         while(1){

          LED
}
}




فقط الدالة الرأيسية للبرنامج يوجد بها كلمة واحدة وهى LED ..... وبكدة ....

اعتقد أن هذا الأمر اصبح واضحااااا للجميع



تحياتى




التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 15-09-2015 الساعة 12:10 AM

بوغنيم
:: مهندس ::
تاريخ التسجيل: Apr 2015
المشاركات: 29
نشاط [ بوغنيم ]
قوة السمعة:0
قديم 17-09-2015, 09:12 PM المشاركة 7   
افتراضي


بارك الله فيك

إضافة رد

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

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

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


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

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