פסיקות בבקר 1508 מהו תהליך פסיקה? – המילה פסיקה נגזרת מהפסקה .זהו תהליך בו הבקר יפסיק את הרצת התוכנית הנוכחית ויקפוץ לתוכנית אחרת ,הנקראת תוכנית פסיקה ונמצאת במקום קבוע בזיכרון .תהליך הפסיקה יתבצע כתוצאה מתהליכי חומרה. בבקר 1508יש חמש מבואות פסיקה. שתי מבואות של פסיקת חומרה . int0, int1רגלים חיצוניות הפעילות בנמוך. שתי מבואות פסיקת טיימר .כאשר הטיימר יסיים תהליך מנייה הוא יקפוץ לתוכנית פסיקה. פסיקת תקשורת טורית . uartאם סיום תהליך שידור\קליטה של תו אחד תתבצע קפיצה לתוכנית פסיקה. אוגרי הפסיקה ברירת המחדל של הבקר לאחר פעולת , resetחסימה של כל הפסיקות .על מנת לעבוד עם פסיקות יש תחילה לאפשר את הפסיקה בה אנו מעוניינים. – IEאוגר הפסיקות –' '8מאפשר ' '5לא מאפשר '8' – EAיאפשר את פעולת המיסוך של הפסיקות '5' ,לא תתקבל פסיקה. – EX0מבוא פסיקה . int0 – EX1מבוא פסיקה . int1 - ET0מבוא פסיקה טיימר .5 – ET1מבוא פסיקה טיימר .8 – ESמבוא פסיקה תקשורת טורית. כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 1 - IPאוגר העדיפויות '8' -עדיפות גבוהה ' '5עדיפות נמוכה מאפשר מתן עדיפויות כאשר פעולות כמה פסיקות. – PX0עדיפות פסיקת . int0 – PT0עדיפות פסיקה טיימר . 5 – PX1עדיפות פסיקה . int1 – PT1עדיפות פסיקה טיימר . 8 – PSעדיפות פסיקה תקשורת טורית. הערה -כאשר יש שתי פסיקות באותה עדיפות ,יש עדיפות מחדל של הבקר PX0 .עדיפות הגבוהה ביותר PS ,עדיפות נמוכה ביותר. – TCONניבל תחתון מתייחס לפסיקות int0, int1 סיביות אלה קובעות האם הפסיקה שתתקבל במבואות int0, int1תפעל בירידת שעון ,או ב- ' . '5 '8' – IT0פסיקת int0תפעל בירידת שעון '5' .הפסיקה תפעל ב ' '5לוגי. – IE0זוכר פסיקה בירידת שעון ב int0-אם לא הייתה מאופשרת. '8' – IT1פסיקת int1תפעל בירידת שעון '5' .הפסיקה תפעל ב ' '5לוגי. – IE1זוכר פסיקה בירידת שעון ב int1-אם לא הייתה מאופשרת. כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 2 שאלות – תשובות מבחנים חיצוניים 2582 אביב תשע"ב1 שאלה תשובה #include <8051.h> #include <absacc.h> int addr=0x40; void main() { IE=0X84; scon=0x04; while(1); } void func_in() interrupt 2 { EA=0; DBYTE[addr]=P1; addr++; if (addr==0x4a) if(addr!=0x4a) EA=1; } 3 עמוד יואל כהן:כתב /http://www.2all.co.il/Web/Sites/hayun שאלה 6תשע"א 2588 תשובה א .שורה – 3הכרזה על סיבית , P1_7ניתן לפנות אליה בשם זה. שורה -4כותרת לתוכנית פסיקה טיימר .5 שורה -85בצע היפוך ) (NOTלסיבית . P1_7 כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 4 שורה -22לולאה אין סופית הגורמת לתוכנית לקפוץ על עצמה ,למעשה לא עושה כלום ,וממתינה לפסיקת טיימר .5 ב. שורה -86איפשור פסיקת טיימר .5 שורה -81איפשור דגל הפסיקות הראשי( בלעדיו אין פסיקות כלל)ץ שורה -81איתחול טיימר 5לפעולה ב .MODE 1-טיימר בעל 86סיביות. שורה -81איפוס של החלק הנמוך ( 1סיביות נמוכות) בטיימר . 5 שורה -25איפוס של החלק הגבוהה ( 1סיביות גבוהות) בטיימר . 5 שורה -28הפעלת טיימר 5מרגע זה הטיימר פועל וסופר פולסי שעון של הגביש. ג .כל פעם שהטיימר יתמלא נקבל פסיקה. תוכנית הפסיקה תשנה את האות ב P1_7-כל 80פסיקות ( Cהוא מונה הפסיקות) . זמן מחזור מנייה של הטיימר תלוי בתדר הגביש חלוקה ב 82-לפיכך נקבל זמן מחזור של .1μs הטיימר מונה , 60036 =2^16לפיכך זמן מחזור 2*15*65536=1966080μs בערך שתי שניות. P1_7 v0 ]T[s 2s 1s שאלה 1תשע אביב 2585 כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 5 תשובה א .שורה -1כותרת לתוכנית פסיקה מבוא int1 שורה -1הכרזה על משתנה iמסוג intללא סימן (רק מספרים חיוביים). שורה -82הצבה ב. P2_2=1- שורה -86קריאה לפונקציה )(. Init שורה -81לולאה אין סופית ,התוכנית לא עושה כלום ממתינה לפסיקת . int1 ב .שורה -4פסיקה תפעל בירידת שעון. שורה -0איפשור פסיקת . int1 כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 6 ג .בכל קבלת פסיקה ב ,int1-תוכנית הפסיקה מייצרת פולס שלילי בסיבית P2_2למשך זמן שלולאת ה for-קובעת .לא ניתן לדעת את הזמן במדויק .אם לא תופיע פסיקה ,ההדק P2_2=1והתוכנית "תקועה" בלולאה אין סופית על עצמה. שאלה 4תשס"ג 2553 תשובה – אני אפתור את התרגיל בשפת Cואסמבלר. הערה :הייתה טעות בהצגת השאלה חייבים להכניס את מצב P1=0לפני הפעלת הפסיקה. א. )(void init { ;IE=0X81 ;scon=0x01 } MOV IE,#81H MOV SCON,#01H RET init: ב. void func_ss() interrupt 0 { ;P1++ )if(P1==10 ;P1=0 } כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 7 הוראה ראשונה ORG 03Hקובעת את כתובת תוכנית הפסיקה ORG 03H INC P1 MOV A,P1 CJNE A,#10,RR MOV P1,#00 RETI RR: שאלה 1שנה לא ידועה. א .כתוב פונקציה שתאפשר את מבוא הפסיקה int0הפעיל בירידת שעון. ב .כתוב תוכנית פסיקה שבכל לחיצה על הלחצן יידלק הלד הבא :מL0-L6 - באופן מחזורי ,ידועה שבזמן הפעלת המערכת L0דולק. תשובה )(void init { ;IE=0X81 ;IT0=1 } void func_LED() interrupt 0 { P1=P1<<1 )if(P1==0X80 ;P1=0X01 } כתב :יואל כהן /http://www.2all.co.il/Web/Sites/hayun עמוד 8
© Copyright 2024