اقرأوا في كوتار - מיקרו-בקרים ושפה עילית - כרך ב
176
   6 . 3 מערכים ומחרוזות במרחב התכנית Code  מרחב זיכרון התכנית Code נועד לאחסון של תכנית ההפעלה של המיקרו-בקר , וכן לאחסון  מידע קבוע הנחוץ להפעלת התכנית . תוכן מרחב הזיכרון הזה ״ נצרב״ באמצעות תכנית  מיוחדת , ולא ניתן לשנותו אלא באמצעות ״ צריבה״ מחודשת . הגדרה של משתנים , מערכים  או מחרוזות במרחב הזיכרון Code היא למעשה דרך להגדרת מרחב בזיכרון המאחסן מידע  קבוע שלא ניתן לשנותו . שימוש במונח ״ משתנה ״ בהקשר של מרחב זיכרון זה הוא מטעה ,  שכן לא ניתן לשנות את ערכו . במרחב זיכרון זה מאחסנים טבלאות מידע קבוע ומחרוזות  קבועות . כל הגדרה של משתנים במרחב זה צריכה להכיל את ערכי האתחול שלהם , שאם  לא כן אין משמעות להגדרה זו . על אף שמותר להגדיר משתנים במרחב זה ללא ערכי  אתחול , נחליף במשפט הקודם את המילה צריכה במילה חייבת כדי לתת משמעות להגדרה .  דוגמה 6 . 2 הגדרת מחרוזת  הגדירו מחרוזת בגודל 60 תווים במרחב הזיכרון החיצוני . המחרוזת ריקה בתחילה .  פתרון :  xdata Char str [ 60 ] = ״״ ;  הסבר :  הוגדר מערך בגודל 60 תווים . התא הראשון מכיל , str [ 0 ] = ' \ 0 ' כדי לציין סוף מחרוזת . טבלה 6 . 1 פונקציות לטיפול במחרוזות
   דוגמה 6 . 3 שימוש במערך שערכיו קבועים לביצוע פעולות חשבון  למפתח p 1 מחוברים שמונה לחצנים . בעת לחיצה על הלחצנים מופיע ״ 1 ״ במוצאיהם .  למפתח p 3 מחוברות שמונה נוריות . הנוריות מופעלת כאשר מספקים להן . ״ 1 ״  כתבו תכנית הקוראת את מצב ארבעת המפסקים p 1 . 0-p 1 . 3 ומציגה את ריבוע הערך  המספרי הנוצר ממצבם בנוריות מפתח . p 3  פתרון :  ניתן לחשב את ריבועו של מספר באמצעות פעולת כפל רגילה , או להשתמש בטבלת ערכי  ריבועים מוכנה . בפתרון זה בחרנו להציג את השימוש בטבלה שערכיה קבועים ולכן נגדיר  מערך בגודל 16 המכיל את ריבועי המספרים 0-מ עד : 15  שימו לב כי אינדקס משמש לפנייה לתאי המערך ובאמצעותו נוכל לאחזר את ריבועו של  האינדקס .  + include < Reg 51 . H >  Code unsigned Char Square [ 16 ] =  { 0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 , 100 , 121 , 144 , 169 , 196 , 225 };  void Main ()  {  While ( 1 )  {  p 3 = Square [ p 1 & 0 x 0 f ];  }  {  מצב המפסקים נקרא לאחר ביצוע פעולת מסכה של ארבע הסיביות הנמוכות : . p 1 & 0 x 0 f  ערך זה משמש כאינדקס למערך . באמצעות האינדקס נשלף ערך ריבועו של האינדקס ונשלח לנוריות .
   דוגמה 6 . 4  למפתח p 3 מחוברות שמונה נוריות . הנוריות מופעלת כאשר מספקים להן . ״ 1 ״  ארבע הסיביות הנמוכות של מפתח p 2 מחוברות לארבע סיביות המוצא של מפענח ללוח  מקשים בגודל . 4 x 4 המפענח מתאים לכל מקש שנלחץ קוד בינארי בן ארבע סיביות , כפי  שמופיע בטבלה הבאה :  כתבו תכנית הקולטת םמפתח p 2 את קוד המקש שנלחץ , ומציגה בנוריות , המחוברות  למפתח , p 3 את קוד ה- ASCII של המקש .  פתרון :  תחילה נגדיר את תוכנו של מערך המקשים כאשר קוד המקש הוא אינדקס המערך ותוכנו  הוא קוד ASCII של המקשים :  + include < Reg 51 . H >  Code unsigned Char Keys [ 16 ] =  { ' 0 ' , ' 6 ' , ' 9 ' , ' 7 ' , ' * ' , ' 2 ' , ' 3 ' , ' 1 ' , ' 8 ' , ' 4 ' , ' + ' , 'b' , ' 5 ' , 'C' , 'D' , 'A' };  void Main ()  {  While ( 1 )  {  p 3 = Keys [ p 2 & 0 x 0 f ]; } } }
الرجاء الانتظار... جارٍ تحميل الكتاب