אינציקלופדיה של רדיו אלקטרוניקה והנדסת חשמל תכנות מודולרי של מערכות בקרה על MCS48. אנציקלופדיה של רדיו אלקטרוניקה והנדסת חשמל אנציקלופדיה של רדיו אלקטרוניקה והנדסת חשמל / מיקרו-בקרים ידוע שאותו מיקרו-בקר יכול לשלוט גם בציוד טכנולוגי מורכב וגם במטחנת קפה ביתית או בשעון אלקטרוני. התאמה לאובייקט מסוים מתבצעת על ידי שינוי תוכנית המיקרו-בקר; החומרה כמעט ואינה מושפעת. מאמר זה מוקדש לטכניקות תכנות עבור מיקרו-בקרים מסדרת MCS48, בשימוש נרחב במערכות בקרה למטרות שונות. ההוראות העיקריות שלו תקפות גם למכשירים מודרניים יותר. הפיתוח והמודרניזציה של תוכניות בקרה מקלים מאוד אם הן בנויות על בסיס מודולרי. במקרה זה, לאחר שרכשת קצת ניסיון, והכי חשוב - ספריית מודולים מנופאים משלך, תכנות מערכת בקרה חדשה (CS) מסתכמת בהחלפת מודולים מסויימים של תוכנית שכבר קיימת ומנופתת באגים, ואולי, השלמה עם פרגמנטים לקחת בחשבון את התכונות של מערכת מסוימת. עיקרון זה מוטבע במבנה של שפות רבות ברמה גבוהה (PASCAL, C++), והמתכנת ממש נאלץ לעקוב אחריו. למרבה הצער, ASSEMBLERS (כולל עבור MCS48), תוך שהם מספקים למתכנת חופש גדול יותר לבחור כלים ושיטות לפתרון בעיות, ככלל, אינם מפקחים כלל על עמידה במשמעת התכנות. זה מוביל לעתים קרובות ליצירת תוכניות כל כך מבלבלות שאפילו מחבריהן לא יכולים, לאחר זמן מה, להבין מה נעשה, שלא לדבר על להשתמש בפרגמנטים שנוגדו בתוכניות אחרות. היצמדות מודעת למושגים מודולריים כלליים הופכת את תכנות המיקרו-בקרים להרבה יותר קל ומהיר. דוגמה לתוכנית מודולרית טיפוסית למערכת בקרה ניתנת בטבלה. התחביר שלו מתאים לאסמבלר הטבלאי TASM בגרסה למיקרו-מעבד 8048. כפי שאתה יכול לראות, בתחילת טקסט התוכנית, קבועים מקבלים שמות וערכים על ידי הנחיות EQU. שימוש בקבועים בעלי שם עדיף תמיד על פני ציון ערכים מספריים ישירות בפקודות מעבד הניתנות להפעלה. לדוגמה, עיכוב הזמן המיושם על ידי אחת מתתי השגרות הנדונות להלן נקבע על ידי שלושה מספרים. הם מוגדרים על ידי הקבועים N1, N2 ו-N3. אם אתה צריך לשנות את מהירות התריס, זה מספיק כדי לציין ערכים חדשים בהצהרות EQU. אחרת, נצטרך לחפש בכל התוכנית הוראות עם אופרנדים השווים למספרים אלה, להחליט אם כל אחת מהן מתייחסת לעיכוב זמן, ובמידת הצורך, לציין ערכים חדשים. ברור שעבודה כזו דורשת זמן רב ולעתים קרובות אינה חפה מטעויות. מה שהופך את זה למסובך במיוחד הוא שחלק מהפקודות עשויות להשתמש לא בכל המספר, אלא, למשל, בבייט הגבוה או הנמוך שלו. האסמבלר, כבר בשלב תרגום התוכנית, מסוגל לחשב כמה קבועים על סמך ערכים של אחרים. תכונה זו מומחשת על ידי חישוב הבתים הגבוהים (N3N) והנמוכים (N3L) של המספר NXNUMX. לאחר מכן, התוכנית מקצה זיכרון למשתנים. זה נעשה באמצעות אותן הנחיות EQU, אבל בניגוד לתיאורים של קבועים, הם לא מציינים את הערכים המספריים של המשתנים, אלא את הכתובות של תאי הזיכרון שהם תופסים. אם ה- ASSEMBLY מאפשר, אין להזניח את האפשרות להשתמש בהוראות מאקרו. כל אחד מהם הוא כמו פקודה חדשה המבצעת פעולה שאינה מסופקת ישירות על ידי מערכת הפיקוד של המעבד. בעת תיאור פקודת מאקרו, המתכנת נותן לה שם (כמובן, לא זהה לשם של אף אחת מהפקודות ה"אמיתיות") ומציין את הפעולות הנדרשות בצורה של רצף של פקודות מכונה. בכל פעם שהוא נתקל במאקרו בתוכנית, ה- ASSEMBLY יחליף אותו ברצף שצוין. בדוגמה זו, נעשה שימוש בשתי פקודות מאקרו. אחד מהם שולח את תוכן המצבר לתא זיכרון הנתונים שצוין על ידי פרמטר המאקרו, והשני שולח אותו בחזרה. לאחר הפעלת המתח (או שליחת אות איפוס), המיקרו-בקר מתחיל להפעיל את התוכנית מכתובת אפס. הפקודה לקפוץ ללא תנאי לנקודת ההתחלה בפועל של התוכנית (במקרה זה, לתווית START) נכתבת בדרך כלל לכתובת זו. זה הכרחי מכיוון שפסיקות חומרה תמיד מעבירות את השליטה לכתובות קבועות 3 ו-7 (עבור סוגים אחרים של מיקרו-בקרים הכתובות עשויות להיות שונות, אך הן עדיין ממוקמות בתחילת זיכרון התוכנית). התוכנית הראשית חייבת "לעקוף" פקודות למעבר ללא תנאי לשגרות שירות ההפסקות המתאימות הממוקמות בכתובות אלו. השלב הבא הוא הגדרת מצבי הפעולה של הבקר (לדוגמה, בחירת מאגרי זיכרון ואוגרים), אתחול משתנים והתקנים חיצוניים. טעות אופיינית של מתכנתים מתחילים היא להניח שמיד לאחר תחילת התוכנית, למשתנים יש כבר ערכים מסוימים. תפיסה שגויה זו מתחזקת על ידי העובדה שחלק מהשפות ברמה גבוהה (לדוגמה, BASIC) מקצות אוטומטית ערך התחלתי של אפס לכל המשתנים. בתוכנות שפה ASSEMBLY (ובשפות רבות אחרות), המתכנת חייב לוודא שלפני הקריאה הראשונה של הערך של משתנה, משהו כבר נכתב למיקום הזיכרון שהוקצה לו. סגנון תכנות טוב מחייב להקצות ערכים ראשוניים למשתנים ממש בתחילת התוכנית. במקרה זה, זה נעשה על ידי תת-השגרה 1INIT. הסעיף לאתחול מכשירים חיצוניים נראה בדרך כלל כמו קריאה רציפה של תתי שגרות, שכל אחת מאפסת אחת מהן (ממיר אנלוגי לדיגיטלי, מחוון LED, שלט רחוק בלחיצת כפתור וכו') וניתן להחלפה בקלות בעת סיום ו שיפור המערכת. לעתים קרובות אותן שגרות בודקות את הפונקציונליות של מכשירים. לאחר מכן, רוב תוכניות הבקרה נכנסות ללולאה ראשית שחוזרת על עצמה ללא סוף, שביצועה מושעה רק כדי לטפל בהפרעות. המחזור מורכב מתתי שגרות לסקר את המקלדת וחיישנים אחרים, בדיקת דגלים שנקבעו על ידי תתי שגרות עיבוד פסיקה (לדוגמה, הדגל לפקיעת מרווח זמן מוגדר או סיום פעולתו של ממיר אנלוגי לדיגיטלי), עיבוד מידע נכנס בהתאם לאלגוריתם בקרה נתון, פלט פעולות בקרה למפעילים, הצגת מידע על מצב התהליך הטכנולוגי על גבי צג גביש נוזלי או מחוונים אחרים. יציאה מהלולאה הראשית ניתנת בדרך כלל רק במצבי חירום, למשל, אם על מנת לבטל את ההשלכות של כשל יש צורך לחזור על האתחול של כל המשתנים וההתקנים החיצוניים, כמו גם בעת עיבוד פסיקות. לפיכך, תוכנית הבנויה על עיקרון מודולרי, המייצגת קבוצה של תתי שגרות. אם, למשל, נעשה שימוש במקלדת אחרת במערכת הבקרה החדשה, זה יהיה מספיק כדי להחליף את תת-השגרה BUTT. על מנת שתחליף כזה יהיה פשוט וללא כאבים, יש לפתח כללים מסוימים ולפעול תמיד לפיהם. תת-שגרות, אם אפשר, צריכות לשמור את התוכן של כל אוגרי הבקר, לקבל נתוני מקור ולייצר תוצאות באותם אוגרים ותאי זיכרון, להשתמש באותו קידוד תווים וכו'. כדאי להילחם ברצון הטבעי (במיוחד עבור מתכנתים שהתגברו על הקשיים הראשונים ומתחילים להרגיש מקצוענים) לפשט את התוכנית על ידי התרחקות מחוקים נוקשים ושימוש בטכניקות לא סטנדרטיות. מה שנראה, במבט ראשון, כסיבוך לא מוצדק יפוצה במלואו על ידי הקלה על איתור באגים ועיבוד מחדש של התוכנית כולה. בואו נסתכל על כמה תכונות של תתי שגרות. I NCREM ו-DECREM מבצעים את הפעולות הנדרשות במקרים רבים כדי להגדיל או להקטין מספר בינארי של 16 סיביות בכמות נתונה (הביטים הגבוהים והנמוכים שלו ממוקמים באוגרים R6 ו-R5, בהתאמה). הקבועים המגדירים את התוספת מתוארים בתחילת התוכנית. מכיוון שכל מיקרו-בקר עובד הרבה יותר מהר מציוד טכנולוגי, חשוב מאוד להיות מסוגל לארגן עיכוב זמן בתוכנית. במקרה זה, נעשה שימוש במונה/טיימר הפנימי של המעבד. יש לו קיבולת מוגבלת והוא מתמלא באלפיות שניות. כל גלישה מייצרת בקשת פסיקה. שגרת שירות הפסקת הטיימר (TIME) סופרת אותם, וכאשר המספר שצוין הושג, מקצה ערך בודד לדגל פסק הזמן של FLT. כל תת-השגרה שעבודתם תלויה בזמן נותרות לנתח את מצב הדגל הזה. זה מאפשר לממש מהירויות תריס של מספר שניות ואפילו דקות. כדי להתחיל לספור מרווח חדש, עליך להזין את הערכים ההתחלתיים בתאי העבודה של תת-השגרה TIME ולהפעיל את הטיימר. תת-השגרה SET2M, למשל, מגדירה השהיית זמן של 2 דקות. לחישוב הערכים ההתחלתיים יש כמה דקויות. ידוע כי במיקרו-בקרים מסדרת MCS48 מסופקים פולסים לכניסת המונה/טיימר הפנימי בתדר נמוך פי 480 מתדירות מתנד הקוורץ. לדוגמה, עם תדר קוורץ של 7 מגה-הרץ, המספר שנרשם במונה משתנה כל 480/7000000 = 0,00006857 s = 68,57 μs. אז המונה יעלה על גדותיו (ותיווצר בקשת פסיקה) תוך 68,57 -(256-N1) µs, כאשר N1 הוא המספר שנכתב במקור למונה. אם תתחיל ספירה חדשה ממספר זה בכל פעם, בעוד 0,1 שניות (השהיית זמן מינימלית) יתרחשו הצפות N2 = 0,1 · 7000000/[1480 · (256-N1)]. ברור שניתן להשיג את אותו השהיית זמן עם N1 ו-N2 שונים, אך מכיוון שמספרים אלה אינם יכולים להיות חלקים, הוא ייושם עם שגיאה כלשהי. המשימה היא לבחור זוג ערכים שבהם השגיאה מינימלית. במקרה הנדון, האפשרות הטובה ביותר היא N1 = 13, N2 = 6. עיכוב זמן של 2 דקות מתקבל על ידי חזרה על ההליך המתואר N3 = 1200 פעמים. לעתים קרובות יש צורך להשתמש בהליכים שונים לעיבוד אותן פסיקות חומרה במצבי הפעלה שונים של תוכנית. דרך אחת לעשות זאת מומחשת על ידי תת-השגרה INTER. הוא מנתח את קוד סוג ההפסקה שהוזן על ידי התוכנית הראשית בתא INTT, ובהתאם לערכו, קורא לאחת משגרות שירות ההפרעה ISR1 או ISR2. שימו לב ששניהם מסתיימים בפקודה RET, לא RETR. קל להגדיל את מספר אפשרויות העיבוד ואף לגרום לכך שלערך קוד מסוים ייקראו בזו אחר זו כמה תתי שגרות שונות. זה בכלל לא הכרחי לכתוב את כל תתי השגרות הדרושות לקובץ טקסט של התוכנית הראשית. ניתן לאתר בקבצים נפרדים מודולים שעברו ניפוי באגים והשתמשו בהם שוב ושוב בתוכניות שונות ולחבר אותם לתוכנית הראשית באמצעות הנחיות INCLUDE. כל קובץ include יכול להכיל שגרה אחת או יותר. החיסרון של שיטה זו הוא שאין לחזור על שמות המשתנים, הקבועים והתוויות בכל המודולים בשימוש. השיטה של תרגום מודולים בנפרד ולאחר מכן שילובם ברמת קוד האובייקט, אשר נקייה מפגם זה, למרבה הצער אינה נתמכת על ידי ה-TASM ASSEMBLY. מחבר: D. Ryzhov, Vladimir ראה מאמרים אחרים סעיף מיקרו-בקרים. תקרא ותכתוב שימושי הערות על מאמר זה. חדשות אחרונות של מדע וטכנולוגיה, אלקטרוניקה חדשה: עור מלאכותי לחיקוי מגע
15.04.2024 פסולת חתולים של Petgugu Global
15.04.2024 האטרקטיביות של גברים אכפתיים
14.04.2024
עוד חדשות מעניינות: ▪ מכשיר המחקה את אופן פעולת המוח עדכון חדשות של מדע וטכנולוגיה, אלקטרוניקה חדשה
חומרים מעניינים של הספרייה הטכנית החופשית: ▪ חלק מהרכבת הקוביות של רוביק באתר. בחירת מאמרים ▪ מאמר שלושה דגמים של רוברים פלנטריים. טיפים לדוגמן ▪ מאמר מה היה באמריקה לפני גילויה על ידי קולומבוס? תשובה מפורטת ▪ מאמר Buer Blue bird. הובלה אישית ▪ מאמר מחולל על PIC16F84A ו-AD9850. אנציקלופדיה של רדיו אלקטרוניקה והנדסת חשמל ▪ מאמר מפלה רוחב הדופק. אנציקלופדיה של רדיו אלקטרוניקה והנדסת חשמל כל השפות של דף זה בית | הספרייה | מאמרים | <font><font>מפת אתר</font></font> | ביקורות על האתר www.diagram.com.ua |