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

   

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 25-01-2017, 09:41 PM المشاركة 17   
sun خوارزمى_10



بسم الله الرحمن الرحيم

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

القاعدة_01: الفرق بين اعلان المتغيرات char - int8_t :

اعلان نوع المتغيرات الرقمية من نوع الاعداد الصحيحة يكون بتعريف حجمها و نوعها من حيث الاشارة فمثلا :
char var1 --> is 8-bit signed
unsigned int var2 --> is 16-bit unsigned
لكن هذا النوع من تعريفات المتغيرات الرقمية به عيب و هو عدم ثبات الحجم لنفس المتغير فى نفس البرنامج اذا تغير نوع الميكرو , نأخذ مثال :
unsigned int counter;
هذا المتغير له حجم 16 بت - فى اى ميكرو من نوع 8-bit او 16-bit , اى انك لو صممت برنامج و تم تشغيله على اى نوع من هذه الانواع فانه سيعمل بلا مشاكل ,
اما انك لو قمت بتشغيل هذا البرنامج على ميكرو من نوع 32-bit فان هذا المتغير سيظل نوعه كما هو int لكن حجمه سيتغير من 16 بت الى 32 بت ,
و بالتالى سيترتب على هذا عيبان :
1- اهدار للذاكرة و خصوصا فى البرامج الكبيرة التى تستخدم مئات المتغيرات او التى تستخدم مصفوفات محجوزة فى الذاكرة على انها int .
2- يمكن ان يؤدى الى مشكلة برمجية غير محسوسة , لانه فى الوقت الذى يظهر المتغير انه لم يتغير الا ان سعته التخزينية زادت من 65535 الى 4000000000 (4 مليار) .


ما الحل اذا ؟
الحل لجعل برنامجك يعمل على اى انظمة بنفس الثبات و المرونة بدون اى اخطاء فى احجام المتغيرات ,
هو ان تستخدم تعريفات المتغيرات بتحديد حجم المتغير بالذاكرة كالتالى :

المتغير char يستبدل int8_t و هنا يحدد ان المتغير من نوع signed int و حجمه 8 بت
المتغير unsigned char يستبدل uint8_t و نوعه unsigned int و حجمه 8 بت .
و المتغيرint تستبدل int16_t
unsigned int تستبدل uint16_t

و هكذا بالنسبة لكل تعريفات المتغيرات الرقمية من نوع الارقام الصحيحة .
هذه التعريفات الجديدة تسمى تعريفات قياسية ذات الحجم الثابت
Fixed width integer types


و لها ملف HEADER يسمى :
كود:
#include "stdint.h"
مع ملاحظة انه بعض المترجمات ليس بها تعريفات القياسية الجديدة اى لا يوجد بها هذا الملف لذا يتم تحميله من النت و اضافته للمترجم خاصتك .
يمكنكم الاطلاع على كل انواع التعريفات :
http://www.nongnu.org/avr-libc/user-...r__stdint.html


و الله ولى التوفيق
و افوص امرى الى الله ان الله بصير بالعباد




اعلانات

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 10-06-2017, 03:40 PM المشاركة 18   
افتراضي


ماشاء الله اسلوب مميز
هذه اللغة ليست ميكرو سي اليس كذلك
اخي مشتاق.

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

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 11-06-2017, 03:56 PM المشاركة 19   
sun


بسم الله الرحمن الرحيم

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

اهلا اخ مسلم ,
هذه القواعد عامة تصلح للغة السي مهما كان نوع المترجم مثلا ميكروسي او اردوينو او AVR STUDIO او IAR .
او غيرهم بغض النظر عن نوع الميكرو .




و الله ولى التوفيق
و افوص امرى الى الله ان الله بصير بالعباد




الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,679
نشاط [ مسلم11 ]
قوة السمعة:
قديم 11-06-2017, 06:46 PM المشاركة 20   
افتراضي


حياك الله
اتابع الان مع الاخ محمد ان شئت ان تساعد اهلا وسهلا في موضوع .MICROC



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