************9***|***********p**********************X** *o***r***s*******k
Download
Report
Transcript ************9***|***********p**********************X** *o***r***s*******k
שפת Cלמיקרו
בקר ממשפחת 8051
השתלמות מורים 2006
מנחה :הרמן גדי
נושאים לדיון
מבוא לכתיבת תוכנית בשפת Cסטנדרטי ( (ANSIלמיקרו בקרים
ממשפחת 8051
הכרת סביבת העבודה ( SESו" -מכיר מערכות")
מבנה תוכנית בשפת Cלהפעלת נוריות המחוברות למפתח המיקרו
הגדרות משתנים במרחבי הזיכרון השונים
קובץ הכותרת 8051.h
תחביר השפהcase-switch ,while ,if-else, if ,for :
פונקציות
כתיבת פונקציות המשמשות לטיפול בפסיקות
עבודה עם קוצב הזמן
מימוש מפתח קלט ופלט פשוט
מימוש קובץ פונקציות לטיפול בתצוגת LCD
מבנה בסיסי של מיקרו ממשפחת 8051
מיפוי רגלים
הדקי המיקרו
( VCCפין - ) 40מתחבר להדק החיובי של ספק הכוח בן .V5
( VSSפין - ) 20קו האדמה של הרכיב.
( XTAL1,XTAL2פינים 18ו - ) 19 -רגלי חיבור לגביש .לקווים אלו מחובר גביש הקובע את
תדר הפעולה של המעבד ,משני צידי הגביש מחוברים 2קבלים לאדמה לקיזוז רעשים.
( RSTפין - ) 9אתחול המעבד ( .) RESETעם עלייתה ל HIGH-ה CPU-מפסיק את
פעולתו .עם ירידתה ל '0'-לוגי ,ה CPU-משנה את מצביע ההוראות לכתובת ,0000ובכך
מתחיל את התכנית של המעבד מהתחלה.
( - EA' - EXTERNAL ADDRESSפין -) 31כניסה זו מסמנת לCPU -האם אזור התכנית
נמצא בתחום הכתובות הנמוך ( )FFF0 - 0000שייך ל ROM-חיצוני או ל ROM-פנימי.
רגל זו נמצאת בשימוש רק במעבדי 8051המכילים בתוכם ROMפנימי .במעבד מסוג 8031
יש לקצר קו זה ל. GND-
( ALEפין - ) 30קו יציאה הנועל את הכתובת הנמוכה בLATCH ( ADDRESS LATCH -
.) ENABLEעולה ל HIGH-למשך STATEאחד ( 2מחזורי שעון) בכל פעם שמתבצעת פנייה
לזיכרון.
( - PSEN' - PROGRAM SET ENABLEפין - )29קו יציאה ,המציין לזיכרון ה-
PROGRAMשה CPU-מבקש לקרוא נתון מאזור זה ,כאשר קו זה יורד ל. LOW-
( - P1.0-P1.7פינים )8-1פורט זה משמש כפורט מבוא או פורט מוצא בלבד -ניתן לגשת
לסיביות הפורט במיעון ישיר.
הדקי המיקרו -המשך
( P0.0-P0.7 / AD0-AD7פינים - ) 39-32קווי פורט ,0היכולים לשמש כפורט
מבוא או כפורט מוצא .במקרה של חיבור רכיבי תמיכה חיצוניים לרכיב ,מתפקדים
קוים אלה כקווי , AD0 - AD7ומעבירים את החלק הנמוך של הכתובת בשלב
המחזור הראשון של מחזור המכונה ואת הנתונים בשלב השני של מחזור המכונה.
( P2.0-P2.7 / A8-A15פינים - ) 28-21קווי פורט ,2היכולים לשמש כפורט מבוא
או כפורט מוצא .במקרה של חיבור רכיבי תמיכה חיצוניים לרכיב ,מתפקדים קוים
אלה כקווי הכתובת הגבוהים . A8-A15
( P3.0-P3.7פינים - ) 17-10קווי פורט ,3היכולים לשמש כפורט מבוא או כפורט
מוצא .בנוסף לכך יכולים קוים אלה לתפקד כקווי בקרה שונים ,המתוארים להלן :
P3.0 / RXDקו כניסה של אות המגיע בתקשורת טורית אסינכרונית ל.UART-
P3.1 / TXDיציאה של אות היוצא בתקשורת טורית אסינכרונית מה.UART-
P3.2 / INT0קו פסיקה חיצונית היכול לעבוד בדרבון רמה או בדרבון קצה.
P3.3 / INT1קו פסיקה חיצונית היכול לעבוד בדרבון רמה או בדרבון קצה.
P3.4 / T0כניסת אותות ל TIMER0-במקרה שהוא מתפקד כמונה.
P3.5 / T1כניסת אותות ל TIMER1-במקרה שהוא מתפקד כמונה.
P3.6 / WRקו יציאה המציין ליחידות החיצוניות ,שה CPU-מבקש לכתוב נתון.
P3.7 / RDקו יציאה המציין ליחידות החיצוניות ,שה CPU-מבקש לקרוא נתון.
מיפוי הזיכרון החיצוני
(פניה על ידי )movc
מימוש זיכרון חיצוני
(פניה על ידי )movc
מיפוי הזיכרון הפנימי ()RAM
האזור הנמוך של ה RAM-הפנימי
- SFRבחלק העליון של ה RAM -הפנימי
הצובר
E0H
ACC
אוגר B
F0H
B
אוגר מצב (הדגלים)
D0H
PSW
מצביע מחסנית
81H
SP
הבית הגבוה שלDPTR -
83H
DP0H
הבית הנמוך שלDPTR -
82H
DP0L
פורט 0
80H
P0
פורט 1
90H
P1
פורט 2
A0H
P2
פורט 3
B0H
P3
- SFRבחלק העליון של ה RAM -הפנימי
(המשך)
בקרת עדיפות פסיקות
B8H
IP
בקרת אפשור פסיקות
A8H
IE
בקרת אופן מונה/קוצב זמן
89H
TMOD
בקרת מונה /קוצב זמן
88H
TCON
הבית הגבוה של TIMER0
8CH
TH0
הבית הנמוך של TIMER0
8AH
TL0
הבית הגבוה של TIMER1
8DH
TH1
הבית הנמוך של TIMER1
8BH
TL1
בקרת שידור וקליטה טוריים
98H
SCON
חוצץ נתונים טורי
99H
SBUF
בקרת ספק
87H
PCON
הידור תוכנית לשפת המיקרו
קובץ מקור בשפת C
קובץ ASM
קובץ מקור ASM
קובץ HEX
קובץ HEX
זיכרון מיקרו בקר 8051
דוגמה לתוכנית שעברה הידור משפת C
לשפת המיקרו.
תוכנית ראשונה בשפת C
התוכנית גורמת להבהוב נוריות המחוברות לפורט .1
תוכנית ראשונה בשפת ( Cהמשך)
התוכנית גורמת להבהוב נוריות המחוברות לפורט חיצוני בכתובת .2000H
מימוש פורט חיצוני למיקרו.
מימוש פורט בכתובת .2000H
מיפוי כתובת זיכרון חיצוני.
כתובת
A12 – A0
A13
A14
A15
0000H
0000000000000
0
0
0
1FFFH
1111111111111
0
0
0
2000H
0000000000000
1
0
0
3FFFH
1111111111111
1
0
0
4000H
0000000000000
0
1
0
5FFFH
1111111111111
0
1
0
סביבות העבודה של SES
כולל עורך טקסט.
מהדר לשפת
.Assembly
חיבור למהדר
לשפת Cשל
.SDCC
תוכנה להורדת
לערכת הפיתוח
.APPLIC12
מייצר קובץ .HEX
סביבות העבודה למעבדי ATMELדגם
.89C5131A
קולט קובץ
.HEX
צורב קובץ
HEXלזיכרון
הפנימי של
הרכיב על ידי
חיבור .USB
ערכת עבודה "מכיר מערכות"
ערכת עבודה Applic12
סוגי משתנים בשפת Cשל מהדר SDCC
סיבית .bit -
בית עם סימן ( .char -בין – 127עד )127
בית ללא סימן( unsigned char -בין 0ל .)255
מילה 16סיביות עם סימן – .int
מילה 16סיביות ללא סימן .unsigned int -
משתנה בנקודה צפה . floatתופס 4בתים .
משתנה 32סיביות עם סימן long -
משתנה 32סיביות ללא סימן .unsigned long -
מרחב זיכרון ה RAM -במיעון ישיר
מרחב זיכרון ה RAM -הפנימי במיעון ישיר מכתובות 0עד
.7FHהגדרה סטנדרטית ללא סימון מיוחד או בסימון data
,ניתן להגדיר מיקום על ידי שימוש בהוראה .at
מרחב זיכרון ה RAM -במיעון עקיף
מרחב זיכרון ה RAM -הפנימי במיעון עקיף מכתובות
80Hעד FFHהגדרה בסימון , idataניתן להגדיר מיקום
על ידי שימוש בהוראה . at
השוואה בין מיעון ישיר לעקיף
מרחב האוגרים הפנימיים
מרחב האוגרים הפנימיים הגדרה בסימון sfrחובה
להגדיר מיקום על ידי שימוש בהוראה .at
סיביות במרחב האוגרים הפנימיים
סיביות במרחב האוגרים הפנימיים הגדרה בסימון sbit
חובה להגדיר מיקום על ידי שימוש בהוראה .at
מרחב זיכרון נתונים חיצוני
מרחב זיכרון נתונים חיצוני מסומן ב xdata -מקביל
לשימוש ב asm-בפקודה . movxניתן להגדיר מיקום על
ידי שימוש בהוראה . at
מרחב זיכרון התוכנית
מרחב זיכרון התוכנית מסומן ב code-מקביל לשימוש
ב asm-בפקודה .movcניתן להגדיר מיקום על ידי
שימוש בהוראה . at
דוגמאות נוספות
- unsigned int i,jהגדרת משתנים ללא סימן בני 16סיביות בזיכרון הפנימי.
-int at 25 uהגדרת משתנה 16סיביות עם סימן במקום 25ו 26בזיכרון הפנימי.
- idata int uהגדרת משתנה 16סיביות בזיכרון הפנימי במיעון עקיף.
- idata char at 0xaa u1הגדרת משתנה 8סיביות עם סימן בזיכרון הפנימי במיעון
עקיף.
- sfr at 0x90 ledsהגדרת אוגר מיוחד(פורט )1במקום 90Hבשם .LEDS
- sbit at 0xf3 yהגדרת סיבית מיוחדת בכתובת F3Hבשם .y
- xdata float at 0x2222 xהגדרת משתנה בנקודה צפה במקום 2222Hבזיכרון
מידע חיצוני.
- code float at 0x2222 x=9.3הגדרת משתנה שערכו 9.3בנקודה צפה במקום
2222Hבזיכרון התוכנית.
] - unsigned int a[5הגדרת מערך של 5איברים בשם . a
] - unsigned int at 0x2000 xdata b[5הגדרת מערך של 5איברים בשם bבזיכרון
הנתונים החיצוני החל מכתובת 2000H
משתנה מטיפוס Bit
קובץ הכותרת 8051.h
קובץ הכותרת ( 8051.hהמשך)
דוגמה לשימוש בקובץ הכותרת 8051.h
בקרת זרימה if -
הוראת ifמאפשרת להגיב לתנאים שונים ,בזמן ריצת
התוכנית.
זוהי הוראת ביצוע מותנה.
אופרטורים לוגים.
- < גדול מ.
- > קטן מ.
- >= גדול או שווה ל.
- <= קטן או שווה ל.
- != שונה מ.
- == שווה ל.
- && וגם לוגי.
- || או לוגי.
פעולות לוגיות על משתנים.
And - & לוגי.
Or - | לוגי.
Not - ~ לוגי.
Xor - ^ לוגי.
אופרטור הזזה.
<< -הזזת סיבית ימינה.
>> -הזזת סיבית שמאלה.
הזזה ימנה של ערכים עם סימן ,נשמר הערך של סיבית הסימן.
הזזה ימנה של ערכים חסרי סימן ניכנס תמיד אפס.
בשני מצבי הזזה שמאלה ,נכנס אפס.
משפט הצבה מותנה ((Conditional Assignment
בשפת Cקיים מבנה מיוחד המאפשר לשלב את
הפונקציונאליות של משפט IFבתוך ביטוי ,או בחלק ממנו.
המשפט מאפשר בחירה בין שני ביטויים בהתאם לערכו
של תנאי מסוים.
בניגוד ל IF -ניתן לשלב אותו במשפט הצבה או בתוך
ביטוי לוגי.
; >ביטוי> : <2ביטוי>) ? <1תנאי<(
יבוצע ביטוי 1אם התנאי מתקיים וביטוי 2אם התנאי לא
מתקיים.
משפט הצבה מותנה בהשוואה למשפט תנאי רגיל.
לולאות )(Loops
שפת Cתומכת בשלושה סוגים שונים של לולאה:
משפט .While
משפט .Do While
משפט .For
משפט While
)>תנאי<( while
;>הצהרה<
תוכנית
תנאי?
כן
בצע הצהרה
המשך התוכנית
לא
משפט Do While
תוכנית
בצע הצהרה
כן
תנאי?
לא
המשך התוכנית
do
>הצהרה<
;)>תנאי<( while
משפט For
תוכנית
)>ביטוי>;<3תנאי<;>ביטוי while (<1
;>הצהרה<
בצע :ביטוי 1
תנאי?
ביטוי 2
כן
בצע :ביטוי 3
בצע :הצהרה
המשך התוכנית
לא
משפט Switch
מימוש מפענח 3ל 8-בתוכנה.
שילוב ASMבשפת C
תרגילי מעבדה
.1
כתוב תוכנית המקבלת מפסק כקלט ,במצב אחד ירוצו נוריות מימין לשמאל אחרת
משמאל לימין.
כתוב תוכנית המקבלת כקלט שני מפסקים ,על התוכנית להציג על נורית את פעולת
ה XOR -בין השניים.
כתוב תוכנית הגורמת לשונה נוריות להבהב בקצב הנקלט ממפסקים ,אחד המפסקים
יגרום להפסק ההבהוב.
כתוב תוכנית הבודקת את מצב המפסקים ,התוכנית תבצע מטלה בתלות מצב
המפסקים .התוכנית תבדוק (כל הזמן -באופן מחזורי) את מצב 2המפסקים .כאשר
המשתמש ישנה את מצב 2המפסקים ,התוכנית תעבור לבצע את המטלה המתאימה
בהתאם לטבלת האמת הבאה:
פונקציות
השימוש בפונקציות מאפשר חלוקה של משימה תכנותית
גדולה למספר משימות קטנות יותר ועצמאיות.
כל פונקציה מתכנתים ובודקים כיחידה עצמאית ורק לאחר
שהיא פועלת כראוי משלבים אותה בתכנית הכללית.
מימוש פונקצית השהיה
העברת פרמטרים לפונקציה
התוכנית הקוראת מספקת לפונקציה ערך או ערכים
הנקראים פרמטרים אקטואליים
ערכים אלה מועתקים
לתוך הפרמטרים
הפורמאליים לפי
סדר הופעתם.
העברת פרמטרים לפונקציה (המשך)
הערך המוחזר מפונקציה
טווח ההכרה ואורך החיים של משתנים
משתנים אוטומטיים:
הם הפרמטרים הפורמאליים של הפונקציה
או המשתנים המוגדרים בתוך הפונקציה (משתנים פנימיים).
טווח ההכרה שלהם הוא בתוך הפונקציה.
טווח ההכרה ואורך החיים של משתנים
משתנים כללים (גלובליים):
הם מוגדרים בתוך קובץ המקור מחוץ לפונקציה.
ניתן להתייחס אליהם בפונקציות אחרות.
ערכיהם נשמרים כל זמן ריצת התוכנית
כך מקבלים מנגנון נוסף להעברת ערכים מפונקציה אחת
לאחרת.
טווח ההכרה של המשתנים הגלובליים הוא בכל
הפונקציות המוגדרות ,החל מנקודת ההגדרה של
המשתנה.
דוגמה למשתנה גלובלי.
טווח ההכרה ואורך החיים של משתנים
משתנים סטטיים:
הם משתנים אוטומטיים שאורך החיים שלהם נימשר כל
התוכנית ,בדומה למשתנים גלובליים.
טווח ההכרה שלו מוגבל
רק לפונקציה שבה הוגדר.
הצהרה על אב-טיפוס לפונקציה
כדי שתוכנית תוכל לזמן פונקציה ,המהדר חייב להכיר את
שמה ,את טיפוס הערך שהפונקציה מחזירה ואת הטיפוס
ומספר הפרמטרים
היא מקבלת.
פרטים אלה נקראים
ממשק או חתימה.
פונקציות ספריה
http://www.koders.com/c/fid2D0
E4E5842DF57EB8A651630C7
82F5A87A0E4831.aspx
מחרוזות
מחרוזת הנה מערך של תווים אשר מסתיים בתו NULL
'.'\0
לא ניתן להעתיק מחרוזת אחת למחרוזת אחרת על ידי
פעולת השמה.
לא ניתן להשים ערך למחרוזת אחרי שמצהירים עליה על
ידי פעולת השמה.
לא ניתן להשוות שתי מחרוזות על ידי פעולת השוואה
(==).
העתקה של מחרוזת
השוואה בין מחרוזות
מנגנון הפסיקות
להבין מהו האבחנה בין פסיקה ותשאול
הגדרות אפשור פסיקה ועדיפות פסיקה
הכרת הפסיקות החיצוניות INT0, INT1
האבחנה בין פסיקה ותשאול
תשאול ( - ) Poolingבשיטה זו המעבד בודק באופן מחזורי,
בלולאה אינסופית ,את מצב הקלט וכך יודע מהו מצב הקלט.
היתרון בשיטת התשאול הוא הפשטות במימוש בחומרה ובתוכנה,
אולם לשיטה זו יש חיסרון ,המעבד מבזבז זמן יקר בדגימת מצב
הקלט גם כאשר מצב הקלט כלל לא השתנה.
פסיקה ( - )Interruptבשיטה זו המעבד לא מבזבז זמן כדי לדגום
באופן מחזורי את מצב הקלט .בשיטת הפסיקה ,כל עוד מצב
הקלט לא השתנה ,המעבד ממשיך בפעילות שגרתית של הרצת
התוכנית הראשית .רק כאשר יש אירוע ,כלומר ,רק כאשר מצב
הקלט השתנה ,המעבד מתבקש להפסיק את פעילותו השגרתית
ולבצע תוכנית פסיקה .בסיום תוכנית הפסיקה ,המעבד חוזר שוב
לפעילות השגרתית עד לבקשת פסיקה נוספת.
חלק ממקורות הפסיקה
שם הפסיקה
מקור הפסיקה /בקשת הפסיקה
Interrupt 0
–INT 0פסיקה באמצעות ההדק החיצוני
P3.2
–TF0פסיקה של המונה T0
Interrupt 2
–INT 1בקשת ההדק החיצוני P3.3
Interrupt 3
–TF1פסיקה המונה T1
Interrupt 1
הפסיקות החיצוניות INT0 INT1
ההדקים P3.2ו P3.3 -הם מבואות הפסיקה החיצונית
INT0ו INT1 -בהתאמה.
כאשר המצב הלוגי בכל אחד מההדקים הללו יורד ל0-
המעבד מפסיק את התוכנית אותה הוא מבצע כרגע,
ועובר לבצע את תוכנית הפסיקה.
כיצד פועל מנגנון הפסיקה ?
לכל מקור פסיקה יש דגל פסיקה פנימי ,דגל זה מציין למערכת הבקרה
שצריך לבצע תהליך של טיפול בפסיקה .לכל פסיקה יש וקטור
פסיקה שהיא כתובת קבועה בה נמצאת תוכנית הפסיקה .כאשר קורה
אירוע של בקשת פסיקה ,דגל הפסיקה עולה ל 1-ומתרחש במעבד
באופן אוטומטי התהליך הבא:
כתובת ההוראה הבאה (של התוכנית הראשית) ,נדחפת למחסנית
(תוכן אוגר PCנדחף למחסנית).
כתובת תוכנית הפסיקה (וקטור הפסיקה) נטענת לאוגר . PC
תוכנית (שגרת) הפסיקה מתבצעת עד להוראה :חזור מתוכנית
פסיקה.
כתובת ההוראה הבאה (של התוכנית הראשית) ,נשלפת מהמחסנית
בחזרה אל אוגר PC
התוכנית הראשית ממשיכה להתבצע ,מאותו מקום שבו היא הופסקה.
האוגר המיוחד TCON
באזור האוגרים מיוחדים ( (Special Function Register
נמצאים אוגרים המכילים את דגלי הפסיקה ובנוסף ,אוגרים
המכילים סיביות המאפשרות לקבוע איך ומתי יתבצעו
בקשות הפסיקה.
ארבע הסיביות הנמוכות שבאוגר TCONמכילות את שני
דגלי הפסיקה עבור שתי הפסיקות החיצוניות .כמו כן מכיל
האוגר TCONשתי סיביות המגדירות מתי דגל הפסיקה
יעלה ל ,1-בירידת שעון או ברמה לוגית נמוכה )שאר
הסיביות קשורות לבקרה על המונים והן תוסברנה
בהמשך).
האוגר המיוחד ( TCONהמשך)
IE0ו IE1 -הם דגלי הפסיקה .כאשר אחד ממבואות הפסיקה
INT0או INT1יורד ל ,0-דגל הפסיקה IE0או דגל הפסיקה IE1
עולים בהתאמה ל.1-
באמצעות סיביות הבקרה IT1 , IT0ניתן להגדיר בתוכנה ,מתי
תתבצע בקשת הפסיקה .כאשר , IT0=1בקשת הפסיקה תתבצע
בירידת השעון של .INT0כאשר , ֹIT0=0בקשת הפסיקה תתבצע
כאשר מבוא הפסיקה INT0הוא ברמה לוגית נמוכה .0
חסימה ואפשור בקשות פסיקה ,אוגר IE
ניתן לחסום או לאפשר כל אחד מבקשות הפסיקה
באמצעות האוגר המיוחד IE
לאפשּור הפסיקה
לכל מקור פסיקה יש סיבית מיוחדת ִ
(האות Eמרמזת על .) Enable
אוגר ( IEהמשך)
האפשּור היא במצב ,0המעבד יחסום את בקשת הפסיקה .כאשר
כאשר סיבית ִ
האפשּור היא במצב 1תוכנית הפסיקה תתבצע.
סיבית ִ
הסיבית )Enable All ( EAחוסמת או מאפשרת את כל בקשות הפסיקה (ללא
תלות מה מצב סיביות האפשור האחרות).
לדוגמא על מנת לאֲ ְפ ֵשר בקשת פסיקה חיצונית ( INT0מהדק ) P3.2נכתוב את
ההוראות:
; EA=1
אֲ ְפ ֵשר באופן כללי את בקשות הפסיקה
; EX0=1
אֲ ְפ ֵשר בקשת פסיקה חיצונית INT0
אם נרצה לדוגמא לאֲ ְפ ֵשר גם בקשת פסיקה ממונה 1נוסיף את ההוראה:
ET1=1
במקום שלושת ההוראות במיעון סיבית ,אפשר לכתוב הוראה אחת ;,IE=0x89
הוראה זו מציבה באוגר IEאת הערך הבינארי .10001001
מתן עדיפות לפסיקה ,אוגר IP
ב 8051 -קיימות שתי רמות עדיפות לפסיקה .כל אחד
ממקורות הפסיקה ניתן לסיווג ברמת עדיפות גבוהה או
נמוכה.
קביעת סיבית " "1בסיבית עדיפות פסיקה מסוימת,
מעבירה אותה לרמת עדיפות גבוהה .יתכנו מספר פסיקות
באותה רמת עדיפות (גבוהה או נמוכה) .במקרה כזה
העדיפות היא בהתאם לסדר הסיביות PX0 .בעלת
העדיפות הגבוהה ביותר ו PS -בעלת העדיפות הנמוכה
ביותר.
כתיבת פונקצית הפסיקה
מימוש תוכנית לטיפול בפסיקה
דוגמה :2
דוגמה 3
תרגילי מעבדה
הרץ את תוכנית הדוגמה השלישית.
כתוב תוכנית הסופרת את מספר הפעמים שהייתה פסיקה .פלט המונה
יוצג כנוריות על פורט מוצא.
שפר את התוכנית הקודמת כך שכל 10פעמים ,מונה הפסיקות
יתאפס.
כתוב תוכנית הקולטת דגימה דרך פורט 1לתוך מערך בן 10מקומות.
בכול פעם שמתבצעת פסיקה( .התוכנית תפסיק את לקלוט נתונים
כאשר המערך יהיה מלא).
מונים וקוצבי הזמן
המעבד מכיל מספר מונים ( (COUNTERוקוצבי זמן
(.)TIMER
מונה הוא מערכת שסופרת דפקי שעון ,מקבל את דפקי
השעון ממקור חיצוני.
קוצב הזמן מקבל את דפקי השעון מהמתנד של
המערכת .תדר דפקי השעון של קוצב הזמן הוא קבוע
ושווה לאחד חלקי 12מתדר המתנד של המעבד .במקרא
שלנו תדר המתנד הוא 12MHzלכן תדר קוצב הזמן הוא
בתדר של . 1Mhz
חשוב!!! מונים וקוצבי הזמן פועלים עצמאית במקביל
לעבודתו של המעבד.
מונים וקוצבי הזמן (המשך)
פונקצית Delayשכתבנו הייתה לא יעילה כי היא משעבדת את כל
זמן העבודה של המחשב לביצוע לולאת forריקה.
באמצעות קוצב זמן ( ,)Timerנוכל מצד אחד ,לאפשר למעבד
להמשיך במשימותיו ומאידך לגרום להשהיה בפרקי זמן קצובים.
המונים סופרים דפקי שעון ,כאשר המונה עובר את הערך 0xFFFF
הוא נמצא במצב המכונה גלישה ודגל הפסיקה של המונה עולה
לאחד לוגי .אם הפסיקה מאופשרת תתבצע תוכנית פסיקה של
המונה.
במעבד קיים מערך של מונים הניתן לתכנות בשם PCA
( (Programmable Counter Arrayנתמקד ב 2-מונים ברוחב 16
סיביות המיוצגים כ T0 -ו. T1 -
המונים T0וT1 -
מונים אלה הם ברוחב של 16סיביות כל אחד ,וניתנים
לגישה על ידי שני האוגרים TLו THבני 8סיביות כל
אחד.
האוגר TMOD
קביעת אופן ההפעלה של המונים T0ו , T1 -ניתן לשליטה באמצעות
שני אוגרים TMODו.TCON -
הסיבית ,GATEמאפשרת לעצור את ספירת המונה באמצעות הדק
הפסיקה החיצונית .כאשר סיבית ה GATE-שווה לאחד לוגי יש
אפשרות לעצור את ספירת המונה באמצעות הדק הפסיקה החיצוני .
הסיבית (Counter/Timer( C/Tקובעת האם ִתפקּוד המונה יהיה
כמונה או כקוצב זמן.
- C/T=1המונה יספור דפקי שעון שמגיעים אל המונה מבחוץ.
- C/T=0המונה יספור דפקי שעון בתדר קבוע של ( 1Mhzאחד
חלקי 12של תדר השעון)
אופני העבודה של המונים T0וT1 -
הסיביות M1ו M2 -קובעות את אופן העבודה של
המונה.
למונה ארבע אופני עבודה .בשלב זה נתמקד בשני אופני
העבודה Mode 1ו Mode2 -בלבד.
אופני העבודה של המונים T0וT1 -
TL – MODE0 מתפקד כמונה בן 5סיביות והוא משמש
כמחלק ב 32 -למונה .THכדי ליצור תאימות לקוצב הזמן
שבבקר .8048
– MODE3 במצב זה מתפקדים 2קוצבי הזמן כ3-
מערכות נפרדות.
– Timer1כמונה שיציאתו מחוברת במקום לדגל בקשת
הפסיקה לאספקת אות קצב לתקשורת הטורית.
– Timer0מתחלק ל TL0 .2-מתפקד כמונה המפעיל את
TF0ויוצר בקשת פסיקה TH0 .מתפקד כקוצב זמן
המקבל בכניסה תדר מחולק ב 12-ויציאתו מפעילה את
TF1ויוצר בקשת פסיקה.
האוגר TCON
אוגר זה מאפשר שליטה הן על אופן הפעולה של הפסיקות החיצוניות והן על שני
המונים T0ו . T1 -החצי העליון של האוגר המיוחד , TCONמבקר את פעולת
המונים.
הסיבית - )Timer Flag 0( TF0דגל הפסיקה של מונה .T0סיבית זו עולה ל 1
כאשר יש גלישה ,פעולה זה יוצרת בקשת פסיקה.
הסיבית - )Timer Flag 1( TF1דגל הפסיקה של מונה . T1סיבית זו עולה ל 1
כאשר יש גלישה ,פעולה זה יוצרת בקשת פסיקה.
הסיבית - (Timer Run 0) TR1סיבית הפעלת מונה T1
- TR1 = 1מונה מופעל.
- TR1 = 0מונה כבוי.
הסיבית - (Timer Run 0) TR0סיבית הפעלת מונה T0
- TR0 = 1מונה מופעל.
- TR0 = 0מונה כבוי.
תאור גרפי של תפקוד האוגרים השולטים
במונים T0ו. T1 -
האיור מדגים את מונה ,T0אך הוא נכון גם עבור .T1
מימוש תוכנית לעבודה עם קוצב זמן
התוכנית תגרום לאחד המוצאים להוציא אות ריבועי
בתדר של .500Hz
באמצעות האוגר המיוחד TMODנגדיר את T0כקוצב
זמן באופן עבודה של Mode1
;TMOD=0x01
ההוראה להגדרת הקוצב תהיה:
חישוב ערך במונה
נטעין את המונה T0בערך התחלתי .מאחר והדרישה היא לתדר של F=500Hz
הרי שזמן המחזור של האות הריבועי צריך להיות . T=2ms
במחצית מהזמן הזה 1msההדק צריך להיות ב 0-ובמחצית השנייה של הזמן
צריך להיות ב.1-
החישוב עבור הערך ההתחלתי מבוסס על כך שתדר דפקי השעון של המונה
הוא .F = 1Mhzכלומר זמן המחזור של דופק שעון בודד הוא .T=1µs :עבור
פרק זמן של ,1msמספר דפקי השעון שהמונה צריך לספור הוא0x3E8 :
1ms/1µs = 1000
כידוע בקשת פסיקה מתקבלת במעבר המונה מ 0xFFFF-ל 0x0000-לכן
הערך ההתחלתי שצריך להטעין את המונה T0צריך להיות:
0xFFFF – 0x3E8 = 0xFC17
המונה T0מורכב משני אוגרים .TH0 , TL0לכן ההוראות לטעינת ערך
התחלתי למונה T0יהיו:
; TH0=0xFC
; TL0=0x17
תאור מילולי של תוכנית הפסיקה
לאחר שנצרוב את התוכנית בזיכרון המעבד .תתקבל
פסיקת מונה בכל .1ms
תוכנית הפסיקה תעצור את המונה.
תטעין מחדש את הערך ההתחלתי .0xFC17
תאפשר שוב למונה לרוץ.
תהפוך את המצב בהדק היציאה ותחזור לתוכנית
הראשית.
קוד התוכנית
מימוש תוכנית לקוצב זמן של שנייה.
נשנה את התדר ל .1HZ -כך שבמשך 0.5שנייה יהיה
ההדר ב 1-ובהמשך יהיה ב.0-
המונה T0הוא בן 16סיביות בלבד ולכן מספר הדפקים
המקסימאלי שהמונה יכול לספור הוא .65536מכאן
שפרק הזמן המקסימאלי בין פסיקה לפסיקה הוא
0.065sבלבד.
65536 * 1µs = 65536µs
מספר הדפקים שהמונה צריך לספור הוא:
.0.5s/1µs = 500000
חישוב הערך למונה
המונה T0כאמור בן 16סיביות ומספר הדפקים
המקסימאלי שהמונה יכול לספור הוא .65536
כדי לקבל פרק זמן של 0.5שנייה ,עד למתן ההוראה
להפיכת המצב הלוגי בהדק המוצא ,אנו צריכים לאפשר
8פעמים פסיקת מונה.
7 * 65536 + 41248 = 500000
הערך ההתחלתי למונה יהיה 5EDF :
) 41248 (0xA120
0xFFFF – 0xA120 = 0x5EDF
קוד התוכנית
מימוש יעיל של פונקצית השהיה
תוך שימוש במבנה סטנדרטי לתוכנה הכתובה למיקרו.
תרגילי מעבדה
שנה את התוכנית כך שנקבל במוצא הבהוב בתדר של
5הרץ.
כתוב תוכנית הגורמת לארבעת הנוריות הנמוכים של
פורט P1להבהב בתדר של 1הרץ ואילו ארבעת
הנוריות הגבוהים של פורט P1יהבהבו בתדר של 5
הרץ.
- LCDרקע עיוני
)Liquid Crystal Display( LCD משמעו תצוגת מסך
גביש נוזלי.
התצוגה מכילה שתי שורות של תווים ,בכל שורה עד 16
תווים.
כל תו מורכב ממטריצה של נקודות (פיקסלים) שגודלה
. 5x8
התצוגה מבוקרת על ידי הבקר ,Hitachi HD44780
המבצע את כל הפעולות הפנימיות הדרושות להפעלתה.
מיפוי הדקי הLCD-
DB7-DB0פס נתונים בן 8ביטים ,שבאמצעותו מבצעים קריאה/
כתיבה של הנתונים (תווים להצגה או פקודות עריכה לתווים).
- RSרגל בוררת בין אוגר פקודות Instruction Registerלאוגר
מידע .Data Register
- Eרגל ִאפשור,
כאשר רגל זו נמצאת במצב לוגי נמוך ,ה LCD-לא מתייחס למה
שקורה ב R/W ,RS-ובפס הנתונים.
כאשר הרגל נמצאת במצב לוגי גבוה ,ה LCD-מעבד את הנתונים
הנכנסים.
Voרגל לכיול בהירות המסך.
Vss , Vddרגליים לאספקת מתחים.
- R/Wרגל כתיבה /קריאה ל /מ.LCD -
אוגרי הLCD -
ל LCD -יש שני אוגרים :
- Instruction Register אוגר פקודות שבו נשמר קוד
הפקודה :למשל ,איפוס המסך ,הזזת הסמן.
- Data register אוגר מידע שבו נשמרים נתוני המידע
הנכנסים לLCD -
הבחירה בין שני האוגרים מתבצעת באמצעות קביעת
ערכו הלוגי של הדק RSכמפורט בטבלה הבאה:
זיכרון הDisplay Data RAM -
זיכרון Display Data RAM
בזיכרון זה נשמר המידע שאנו שולחים ל LCD -כקוד . ASCIIלכל
אות קיים קוד מיוחד המסמל אותו :למשל ,האות Aבקוד ASCII
מקבלת ערך 65בבסיס 10או 01000001בבסיס בינארי או 41
בבסיס .16
זיכרון יכול להכיל עד 80אותיות.
חלק מהכתובות מייצגות את השורות .שורה ראשונה0x00-0x0F :
שורה שנייה.0x40-0x4F :
יתר הכתובות מייצגות את המרחב הבלתי-נראה של זיכרון ה-
,RAMבו ניתן להשתמש גם כזיכרון כללי.
כתובת ה RAM-היא מיקום של הסמן על הצג (המקום בו מצוי
הסמן הוא המקום ,שבו ייכתב המידע שנשלח).
זיכרון )(Character Generator RAM
CGRAM
בזיכרון זה יכול המשתמש לבנות ולשמור אותיות משלו.
הדבר מתאפשר באמצעות 64בתים ,המאפשרים בניית
שמונה אותיות בגודל 5x8פיקסלים.
זיכרון זה מכיל בנוסף כ 190 -תווים מוכנים מראש
המייצגים את תווי ה.ASCII -
זיכרון זה פועל בתאום עם זיכרון ה DDRAM -בכך שהוא
שולח להצגה תווים ממאגר התווים שב.CGRAM -
מונה כתובת Address Counter
מונה הכתובת ADCמשייך את הכתובת לזיכרונות
DDRAMו.CGRAM-
כאשר נשלח מידע ל DDRAM-או ל ,CGRAM-ערכו של
המונה ACמתעדכן אוטומטית.
טבלת הפקודות של צג הLCD -
הפעלת צג כיחידה נפרדת( .על מטריצה)
מימוש צג LCDהמחובר לפורט 4000H
תוכנית להפעלת הצג
המשך:
טבלת הפקודות
טבלת הפקודות (המשך)
סוף