1508 פסיקות בבקר המילה פסיקה נגזרת מהפסקה. זהו תהליך בו הבקר יפסיק

Transcription

1508 פסיקות בבקר המילה פסיקה נגזרת מהפסקה. זהו תהליך בו הבקר יפסיק
‫פסיקות בבקר ‪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‬‬