لحد دلوقتي مش فاهم المشكله فين .. هو ليه لازم اكتب الرساله بحجم معين ثابت ؟
|
لانك لو قمت بخزن رسائل كثيره في رام ستواجه مشكله في عمل مايكروكترولر اي ستبدء هناك مشاكل في عرض الرسائل لماذا يحدث ذلك انظر الى الصوره
http://upload.qariya.info/images/qar...7211427a00.png
تلاحظ في bank0 يحتوي على 96 بايت هنا لو لوكانت لديك 10 رساله طولها 10 احرف
اذا عدد بايت مطلوب =100 هنا ستبدء مشكله في عرض معلومات على شاشه
لانه حسب ماتلاحظه مواقع رام غير مرتبه بشكل تسلسلي
كما انه اذا استخدمت خزن رسائل كلها في رام فانها سوف تنفذ منك لان مساحتها صغيره مقارنه مع روم لذا قمت بخزن كل رسائل في روم كيف يتم خزن في روم
بمجرد كتابه امام اسم متغير او مصفوفه كلمه const وهذه طريقه مفضله
ولكني اواجه مشكله لما اريد عرض رساله لابد ان تكون رساله من نوع متغير وليس
من نوع ثابت
http://flash01.arabsh.com/uploads/im...4d4b61f502.png
كيف احول ثابت الى متغير اعمل مصفوفه ولكن كم هي ابعادها
جواب = اقصى طول رساله لديك في مشروع وبالتالي انا فقط استهلكت من رام سوى حجم هذه مصفوفه
هنا اخي كان سؤالي هو انني سوف استهلك بايتات من روم على فاضي يعني اقصد لو كان اقصى طول رساله لديه =16 حرف ولديه رساله طولها 4 احرف هنا انا مجبور ان اكون مصفوفه ابعادها 16
اريد تنظر الى هذا مثال
كود:
const char welcome[] =" Welcome! ";
const char check_pass[] ="check password ";
const char correct_pass[] ="correct password" ;
const char input_pass[] ="input password ";
const char new_pass[] ="new password ";
const char uncorrect_pass[] ="vaild password ";
const char old_password[] ="old password ";
const char change_password[] ="password changed";
const char enter[] =" press enter ";
const char admin[] ="input admin old ";
const char vaild_admin[] ="vaild admin ";
const char new_admin[] ="new admin ";
const char admin_changed[] ="admin is changed";
const char securty_equation[] ="securty equation";
const char my_name[] ="my name is: ";
const char loading[] ="LOADING ";
const char master_password[] ="master code ";
const char press_enter[] =" PRESS ENTER ";
const char closed[] =" CLOSED ";
const char open[] =" OPEN ";
const char clear[] =" ";
كيف ياخي خزن هذه رسائل في رام !!
اذن لابد من تحويلها الى روم
ولكن كيف اعرضها انظر الى داله عرض رسائل
كود:
void message(const char *message,char zz)
{
for(x=0;x<16;x++) my_txt[x]=message[x];
lcd_out(zz,1,my_txt);
}
تلاحظ بداله اني كلما اريد ان عرض رساله لابد من تحويلها الى رام ومن ثم اقوم بعرضها
اكرر لك اخي كريم مشكله
هي ان كل رساله لها ابعاد مختلفه ولكني مجبور اخذ اقصى طول رساله لكي تكون هذه هي ابعاد مصفوفه لضمان عرض كل معلومات بدون نقص هنا الرسائل الاقل من اقصى طول لابد ان اقوم بمساواه ابعاد بترك فراغ وتلاحظ برسائل وجود فراغ وكل ابعاد متساويه انا اريد اسأل هل توجد امكانيه اتحكم بطول مصفوفه يعني رساله طولها 10 اخلي ابعادها 10 ورساله طولها 16 خلي ابعادها 16 ورساله طولها 2 اخلي ابعادها 2 وهكذا ........ انا بعتقادي لايمكن ذلك انا ليس متأكد
ولكني كحل لهذه مشكله هو استخدام ايبروم كما ذكرت في رد سابق والغايه منها تقليل حجم كود لاني الم افعل ذلك فان في كل رساله لو افترضت اقصى طول رساله=16 فاني سحتاج الى 16 بايت لوكانت عندي 10 سحتاج الى 160 بايت لكن لو استخدمت طريقه اتحكم بابعاد مصفوفه او ايبروم لربما احتاج فقط 90 بايت هذا مااريده