שפת C למיקרו בקר ממשפחת 8051 השתלמות מורים 2006 מנחה: הרמן...

Post on 19-Dec-2015

353 views 6 download

Transcript of שפת C למיקרו בקר ממשפחת 8051 השתלמות מורים 2006 מנחה: הרמן...

למיקרו C שפת8051 בקר ממשפחת

2006השתלמות מורים

מנחה: הרמן גדי

נושאים לדיון מבוא לכתיבת תוכנית בשפתC( סטנדרטי (ANSI למיקרו

8051בקרים ממשפחת ( הכרת סביבת העבודהSES )"ו- "מכיר מערכות מבנה תוכנית בשפתC להפעלת נוריות המחוברות למפתח

המיקרוהגדרות משתנים במרחבי הזיכרון השונים 8051קובץ הכותרת.h :תחביר השפהfor, if ,if-else, while, case-switch פונקציותכתיבת פונקציות המשמשות לטיפול בפסיקותעבודה עם קוצב הזמןמימוש מפתח קלט ופלט פשוט מימוש קובץ פונקציות לטיפול בתצוגתLCD

מבנה בסיסי של מיקרו ממשפחת 8051

מיפוי רגלים

הדקי המיקרוVCC 5 - מתחבר להדק החיובי של ספק הכוח בן (40 ) פיןV.VSS קו האדמה של הרכיב. (20 ) פין - XTAL1,XTAL2 רגלי חיבור לגביש. לקווים אלו מחובר גביש (19 ו- 18 ) פינים -

קבלים לאדמה 2הקובע את תדר הפעולה של המעבד, משני צידי הגביש מחוברים לקיזוז רעשים.

RST (9 ) פין ( אתחול המעבד - RESET-עם עלייתה ל .) HIGH-ה CPU מפסיק את , ובכך 0000 משנה את מצביע ההוראות לכתובת CPU' לוגי, ה-0פעולתו. עם ירידתה ל-'

מתחיל את התכנית של המעבד מהתחלה.EA' - EXTERNAL ADDRESS כניסה זו מסמנת ל- (31 - )פין -CPU האם אזור

ROM חיצוני או ל-ROM( שייך ל-0FFF - 0000התכנית נמצא בתחום הכתובות הנמוך )פנימי.

המכילים בתוכם 8051רגל זו נמצאת בשימוש רק במעבדי ROM פנימי. במעבד מסוג .GND יש לקצר קו זה ל-8031

ALE קו יציאה הנועל את הכתובת הנמוכה ב- (30 ) פין - LATCH ) ADDRESS LATCH ENABLE (-עולה ל .HIGH למשך STATE( בכל פעם 2 אחד )מחזורי שעון

שמתבצעת פנייה לזיכרון.PSEN' - PROGRAM SET ENABLE קו יציאה, המציין לזיכרון (29 - )פין -

.LOW מבקש לקרוא נתון מאזור זה, כאשר קו זה יורד ל-CPU שה-PROGRAMה-P1.0-P1.7 פורט זה משמש כפורט מבוא או פורט מוצא בלבד - ניתן (8-1 - )פינים

לגשת לסיביות הפורט במיעון ישיר.

הדקי המיקרו - המשךP0.0-P0.7 / AD0-AD7 היכולים לשמש כפורט 0 - קווי פורט (39-32 ) פינים ,

מבוא או כפורט מוצא. במקרה של חיבור רכיבי תמיכה חיצוניים לרכיב, ,ומעבירים את החלק הנמוך של AD0 - AD7מתפקדים קוים אלה כקווי

הכתובת בשלב המחזור הראשון של מחזור המכונה ואת הנתונים בשלב השני של מחזור המכונה.

P2.0-P2.7 / A8-A15 היכולים לשמש כפורט 2- קווי פורט ( 28-21 )פינים ,מבוא או כפורט מוצא. במקרה של חיבור רכיבי תמיכה חיצוניים לרכיב,

.A8-A15מתפקדים קוים אלה כקווי הכתובת הגבוהים P3.0-P3.7 היכולים לשמש כפורט מבוא או 3 - קווי פורט (17-10 )פינים ,

כפורט מוצא. בנוסף לכך יכולים קוים אלה לתפקד כקווי בקרה שונים, המתוארים להלן :

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 הפנימי

ACC E0H הצובר

B F0H B אוגר

PSW D0H אוגר מצב )הדגלים(

SP 81H מצביע מחסנית

DP0H 83H DPTR הבית הגבוה של-

DP0L 82H -DPTR הבית הנמוך של

P0 80H 0פורט

P1 90H 1פורט

P2 A0H 2פורט

P3 B0H 3פורט

SFR -בחלק העליון של ה - RAM הפנימי )המשך(

IP B8H בקרת עדיפות פסיקות

IE A8H בקרת אפשור פסיקות

TMOD 89H בקרת אופן מונה/קוצב זמן

TCON 88H בקרת מונה / קוצב זמן

TH0 8CH TIMER0 הבית הגבוה של

TL0 8AH TIMER0 הבית הנמוך של

TH1 8DH TIMER1 הבית הגבוה של

TL1 8BH TIMER1 הבית הנמוך של

SCON 98H בקרת שידור וקליטה טוריים

SBUF 99H חוצץ נתונים טורי

PCON 87H בקרת ספק

הידור תוכנית לשפת המיקרו

Cקובץ מקור בשפת

ASMקובץ מקור

HEXקובץ

ASMקובץ

HEXקובץ

8051זיכרון מיקרו בקר

דוגמה לתוכנית שעברה הידור משפת C.לשפת המיקרו

Cתוכנית ראשונה בשפת 1התוכנית גורמת להבהוב נוריות המחוברות לפורט.

)המשך(Cתוכנית ראשונה בשפת 2000התוכנית גורמת להבהוב נוריות המחוברות לפורט חיצוני בכתובתH.

מימוש פורט חיצוני למיקרו. 2000מימוש פורט בכתובתH.

מיפוי כתובת זיכרון חיצוני. A15 A14 A13 A12 – A0 כתובת

0 0 0 0000000000000 0000H

0 0 0 1111111111111 1FFFH

0 0 1 0000000000000 2000H

0 0 1 1111111111111 3FFFH

0 1 0 0000000000000 4000H

0 1 0 1111111111111 5FFFH

SESסביבות העבודה של .כולל עורך טקסט מהדר לשפת

Assembly. חיבור למהדר

של Cלשפת SDCC.

תוכנה להורדתלערכת הפיתוח

APPLIC12. מייצר קובץHEX.

דגם ATMELסביבות העבודה למעבדי 89C5131A.

קולט קובץHEX.

צורב קובץHEX לזיכרון

הפנימי של הרכיב על ידי

.USBחיבור

ערכת עבודה "מכיר מערכות"

Applic12ערכת עבודה

של מהדר Cסוגי משתנים בשפת SDCC

- סיביתbit. בית עם סימןchar- (127 – עד 127. )בין -בית ללא סימןunsigned char (.255 ל 0 )בין סיביות עם סימן – 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 מקביל

. ניתן להגדיר מיקום movx בפקודה asmלשימוש ב- .atעל ידי שימוש בהוראה

מרחב זיכרון התוכנית-מרחב זיכרון התוכנית מסומן בcode מקביל לשימוש

. ניתן להגדיר מיקום על ידי movc בפקודה -asmב .atשימוש בהוראה

דוגמאות נוספות unsigned int i,j סיביות בזיכרון הפנימי.16- הגדרת משתנים ללא סימן בני int at 25 u בזיכרון 26 ו25 סיביות עם סימן במקום 16- הגדרת משתנה

הפנימי. idata int u סיביות בזיכרון הפנימי במיעון עקיף.16- הגדרת משתנה idata char at 0xaa u1 סיביות עם סימן בזיכרון הפנימי 8 - הגדרת משתנה

במיעון עקיף.sfr at 0x90 leds 90( במקום 1 - הגדרת אוגר מיוחד)פורטH בשם LEDS . sbit at 0xf3 y הגדרת סיבית מיוחדת בכתובת -F3H בשם y. xdata float at 0x2222 x 2222- הגדרת משתנה בנקודה צפה במקוםH

בזיכרון מידע חיצוני.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משתנה מטיפוס

h.8051קובץ הכותרת

)המשך(h.8051קובץ הכותרת

h.8051דוגמה לשימוש בקובץ הכותרת

ifבקרת זרימה - הוראתif מאפשרת להגיב לתנאים שונים, בזמן ריצת

התוכנית..זוהי הוראת ביצוע מותנה

אופרטורים לוגים..גדול מ - <.קטן מ - >=> גדול או שווה -

ל.=< קטן או שווה -

ל.=!.שונה מ - .שווה ל - ==.וגם לוגי - &&.או לוגי - ||

פעולות לוגיות על משתנים. - &And.לוגי - |Or.לוגי - ~Not.לוגי - ^Xor.לוגי

אופרטור הזזה..הזזת סיבית ימינה - <<.הזזת סיבית שמאלה - >>

.הזזה ימנה של ערכים עם סימן, נשמר הערך של סיבית הסימן.הזזה ימנה של ערכים חסרי סימן ניכנס תמיד אפס.בשני מצבי הזזה שמאלה, נכנס אפס

Conditional Assignment)משפט הצבה מותנה )

בשפתC קיים מבנה מיוחד המאפשר לשלב את בתוך ביטוי, או בחלק IFהפונקציונאליות של משפט

ממנו. המשפט מאפשר בחירה בין שני ביטויים בהתאם

לערכו של תנאי מסוים. -בניגוד לIF ניתן לשלב אותו במשפט הצבה או בתוך

ביטוי לוגי. < ? )>תנאי<( 2ביטוי< : >1ביטוי < ;

אם התנאי 2 אם התנאי מתקיים וביטוי 1יבוצע ביטוי לא מתקיים.

משפט הצבה מותנה בהשוואה למשפט תנאי רגיל.

(Loops)לולאות תומכת בשלושה סוגים שונים של לולאה:Cשפת

משפטWhile. משפטDo While. משפטFor.

Whileמשפט while )>תנאי<(

;>הצהרה<

?תנאי

בצע הצהרה

המשך התוכנית

לא

כן

תוכנית

Do Whileמשפט do

>הצהרה< while )>תנאי<(;

?תנאי

בצע הצהרה

המשך התוכנית

לא

כן

תוכנית

Forמשפט while )> 3ביטוי<;>תנאי<;>1ביטוי <(

;>הצהרה<

?תנאי2ביטוי

בצע: הצהרה

המשך התוכנית

לא

כן

תוכנית

1בצע: ביטוי

3בצע: ביטוי

Switchמשפט בתוכנה.8 ל-3מימוש מפענח

C בשפת ASMשילוב

תרגילי מעבדה כתוב תוכנית המקבלת מפסק כקלט, במצב אחד ירוצו נוריות מימין לשמאל

אחרת משמאל לימין. כתוב תוכנית המקבלת כקלט שני מפסקים, על התוכנית להציג על נורית את

בין השניים.XORפעולת ה- כתוב תוכנית הגורמת לשונה נוריות להבהב בקצב הנקלט ממפסקים, אחד

המפסקים יגרום להפסק ההבהוב.

כתוב תוכנית הבודקת את מצב המפסקים, התוכנית תבצע מטלה בתלות מצב 1. המפסקים. 2המפסקים. התוכנית תבדוק )כל הזמן - באופן מחזורי( את מצב

מצב את ישנה המשתמש את 2כאשר לבצע תעבור התוכנית המפסקים, המטלה המתאימה בהתאם לטבלת האמת הבאה:

פונקציות השימוש בפונקציות מאפשר חלוקה של משימה תכנותית

גדולה למספר משימות קטנות יותר ועצמאיות. כל פונקציה מתכנתים ובודקים כיחידה עצמאית ורק לאחר

שהיא פועלת כראוי משלבים אותה בתכנית הכללית.

מימוש פונקצית השהיה

העברת פרמטרים לפונקציה התוכנית הקוראת מספקת לפונקציה ערך או ערכים

פרמטרים אקטואלייםהנקראים ערכים אלה מועתקים

הפרמטרים לתוך לפי הפורמאלייםסדר הופעתם.

העברת פרמטרים לפונקציה )המשך(

הערך המוחזר מפונקציה

טווח ההכרה ואורך החיים של משתניםמשתנים אוטומטיים:

הם הפרמטרים הפורמאליים של הפונקציה.)או המשתנים המוגדרים בתוך הפונקציה )משתנים פנימיים.טווח ההכרה שלהם הוא בתוך הפונקציה

טווח ההכרה ואורך החיים של משתנים

משתנים כללים )גלובליים(:.הם מוגדרים בתוך קובץ המקור מחוץ לפונקציה.ניתן להתייחס אליהם בפונקציות אחרותערכיהם נשמרים כל זמן ריצת התוכנית כך מקבלים מנגנון נוסף להעברת ערכים מפונקציה

אחת לאחרת. טווח ההכרה של המשתנים הגלובליים הוא בכל

הפונקציות המוגדרות, החל מנקודת ההגדרה של המשתנה.

דוגמה למשתנה גלובלי.

טווח ההכרה ואורך החיים של משתנים

משתנים סטטיים: הם משתנים אוטומטיים שאורך החיים שלהם נימשר

כל התוכנית, בדומה למשתנים גלובליים.טווח ההכרה שלו מוגבל

רק לפונקציה שבה הוגדר.

הצהרה על אב-טיפוס לפונקציה כדי שתוכנית תוכל לזמן פונקציה, המהדר חייב להכיר

את שמה, את טיפוס הערך שהפונקציה מחזירה ואת הטיפוס ומספר הפרמטרים

היא מקבלת.פרטים אלה נקראים

ממשק או חתימה.

פונקציות ספריה

http://www.koders.com/c/fid2D0E4E5842DF57EB8A651630C782F5A87A0E4831

.aspx

מחרוזות מחרוזת הנה מערך של תווים אשר מסתיים בתו

NULL '\0.' לא ניתן להעתיק מחרוזת אחת למחרוזת אחרת על

ידי פעולת השמה. לא ניתן להשים ערך למחרוזת אחרי שמצהירים עליה

על ידי פעולת השמה. לא ניתן להשוות שתי מחרוזות על ידי פעולת השוואה

.)==(

העתקה של מחרוזת

השוואה בין מחרוזות

מנגנון הפסיקותלהבין מהו האבחנה בין פסיקה ותשאולהגדרות אפשור פסיקה ועדיפות פסיקה הכרת הפסיקות החיצוניותINT0, INT1

האבחנה בין פסיקה ותשאול( תשאולPooling ,בשיטה זו המעבד בודק באופן מחזורי - )

בלולאה אינסופית, את מצב הקלט וכך יודע מהו מצב הקלט. היתרון בשיטת התשאול הוא הפשטות במימוש בחומרה

ובתוכנה, אולם לשיטה זו יש חיסרון, המעבד מבזבז זמן יקר בדגימת מצב הקלט גם כאשר מצב הקלט כלל לא השתנה.

( פסיקהInterrupt בשיטה זו המעבד לא מבזבז זמן כדי - )לדגום באופן מחזורי את מצב הקלט. בשיטת הפסיקה, כל

עוד מצב הקלט לא השתנה, המעבד ממשיך בפעילות שגרתית של הרצת התוכנית הראשית. רק כאשר יש אירוע ,

כלומר, רק כאשר מצב הקלט השתנה, המעבד מתבקש . תוכנית פסיקהלהפסיק את פעילותו השגרתית ולבצע

בסיום תוכנית הפסיקה, המעבד חוזר שוב לפעילות השגרתית עד לבקשת פסיקה נוספת.

חלק ממקורות הפסיקה/ בקשת הפסיקה מקור הפסיקה שם הפסיקה

INT 0 פסיקה באמצעות ההדק –P3.2החיצוני

Interrupt 0

TF0 פסיקה של המונה –T0 Interrupt 1

INT 1 בקשת ההדק החיצוני –P3.3 Interrupt 2

TF1 פסיקה המונה –T1 Interrupt 3

INT0 INT1הפסיקות החיצוניות ההדקיםP3.2 -ו P3.3 הם מבואות הפסיקה

בהתאמה. INT1 ו- INT0החיצונית כאשר המצב הלוגי בכל אחד מההדקים הללו יורד

המעבד מפסיק את התוכנית אותה הוא מבצע 0ל-כרגע, ועובר לבצע את תוכנית הפסיקה.

כיצד פועל מנגנון הפסיקה ? לכל מקור פסיקה יש דגל פסיקה פנימי, דגל זה מציין למערכת

הבקרה שצריך לבצע תהליך של טיפול בפסיקה. לכל פסיקה יש שהיא כתובת קבועה בה נמצאת תוכנית הפסיקה. וקטור פסיקה

1 של בקשת פסיקה, דגל הפסיקה עולה ל-אירועכאשר קורה ומתרחש במעבד באופן אוטומטי התהליך הבא:

כתובת ההוראה הבאה )של התוכנית הראשית(, נדחפת למחסנית נדחף למחסנית(.PC)תוכן אוגר

כתובת תוכנית הפסיקה )וקטור הפסיקה( נטענת לאוגרPC. תוכנית )שגרת( הפסיקה מתבצעת עד להוראה: חזור מתוכנית

פסיקה. כתובת ההוראה הבאה )של התוכנית הראשית(, נשלפת

PCמהמחסנית בחזרה אל אוגר התוכנית הראשית ממשיכה להתבצע, מאותו מקום שבו היא

הופסקה.

TCONהאוגר המיוחד ( באזור האוגרים מיוחדים(Special Function Register

נמצאים אוגרים המכילים את דגלי הפסיקה ובנוסף, אוגרים המכילים סיביות המאפשרות לקבוע איך ומתי

יתבצעו בקשות הפסיקה. ארבע הסיביות הנמוכות שבאוגר TCON מכילות את

שני דגלי הפסיקה עבור שתי הפסיקות החיצוניות. כמו כן שתי סיביות המגדירות מתי דגל TCONמכיל האוגר

, בירידת שעון או ברמה לוגית 1הפסיקה יעלה ל-שאר הסיביות קשורות לבקרה על המונים והן (נמוכה

תוסברנה בהמשך(.

)המשך(TCONהאוגר המיוחד IE0 -ו IE1 הם דגלי הפסיקה. כאשר אחד ממבואות הפסיקה

INT0 או INT1 -דגל הפסיקה 0 יורד ל ,IE0 או דגל הפסיקה IE1-1 עולים בהתאמה ל .

באמצעות סיביות הבקרהIT0 , IT1 ניתן להגדיר בתוכנה, מתי , בקשת הפסיקה תתבצע IT0=1תתבצע בקשת הפסיקה. כאשר

, בקשת הפסיקה IT0=0ֹ. כאשר INT0בירידת השעון של .0 הוא ברמה לוגית נמוכה INT0תתבצע כאשר מבוא הפסיקה

חסימה ואפשור בקשות פסיקה, אוגר IE

ניתן לחסום או לאפשר כל אחד מבקשות הפסיקה IEבאמצעות האוגר המיוחד

פשּור mלכל מקור פסיקה יש סיבית מיוחדת לא (. Enable מרמזת על Eהפסיקה )האות

)המשך(IEאוגר פשּור היא במצב mהמעבד יחסום את בקשת הפסיקה. 0כאשר סיבית הא ,

פשּור היא במצב mתוכנית הפסיקה תתבצע.1כאשר סיבית הא הסיביתEA )Enable All ( חוסמת או מאפשרת את כל בקשות הפסיקה

)ללא תלות מה מצב סיביות האפשור האחרות(. ר בקשת פסיקה חיצונית nש oפ pלדוגמא על מנת לאINT0 מהדק( P3.2 )

נכתוב את ההוראות: EA=1; ר באופן כללי את בקשות הפסיקה nש oפ pא EX0=1; INT0 ר בקשת פסיקה חיצונית nש oפ pא

ר גם בקשת פסיקה ממונה nש oפ pנוסיף את ההוראה:1אם נרצה לדוגמא לא ET1=1

במקום שלושת ההוראות במיעון סיבית, אפשר לכתוב הוראה אחתIE=0x89; הוראה זו מציבה באוגר ,IE 10001001 את הערך הבינארי.

IPמתן עדיפות לפסיקה, אוגר -קיימות שתי רמות עדיפות לפסיקה. כל אחד 8051ב

ממקורות הפסיקה ניתן לסיווג ברמת עדיפות גבוהה או נמוכה.

" בסיבית עדיפות פסיקה מסוימת, 1קביעת סיבית "מעבירה אותה לרמת עדיפות גבוהה. יתכנו מספר

פסיקות באותה רמת עדיפות )גבוהה או נמוכה(. במקרה כזה העדיפות היא בהתאם לסדר הסיביות.

PX0 -בעלת העדיפות הגבוהה ביותר ו PS בעלת העדיפות הנמוכה ביותר.

כתיבת פונקצית הפסיקה

מימוש תוכנית לטיפול בפסיקה

:2דוגמה

3דוגמה

תרגילי מעבדה.הרץ את תוכנית הדוגמה השלישית כתוב תוכנית הסופרת את מספר הפעמים שהייתה פסיקה. פלט

המונה יוצג כנוריות על פורט מוצא. פעמים, מונה הפסיקות 10שפר את התוכנית הקודמת כך שכל

יתאפס. 10 לתוך מערך בן 1כתוב תוכנית הקולטת דגימה דרך פורט

מקומות. בכול פעם שמתבצעת פסיקה. )התוכנית תפסיק את לקלוט נתונים כאשר המערך יהיה מלא(.

מונים וקוצבי הזמן וקוצבי זמןCOUNTER)המעבד מכיל מספר מונים )

(TIMER.) מונה הוא מערכת שסופרת דפקי שעון, מקבל את

דפקי השעון ממקור חיצוני. קוצב הזמן מקבל את דפקי השעון מהמתנד של

המערכת. תדר דפקי השעון של קוצב הזמן הוא קבוע מתדר המתנד של המעבד. 12ושווה לאחד חלקי

לכן תדר 12MHzבמקרא שלנו תדר המתנד הוא .1Mhzקוצב הזמן הוא בתדר של

!!!מונים וקוצבי הזמן פועלים עצמאית במקביל חשוב לעבודתו של המעבד.

מונים וקוצבי הזמן )המשך( פונקציתDelay שכתבנו הייתה לא יעילה כי היא משעבדת את כל

ריקה. forזמן העבודה של המחשב לביצוע לולאת ( באמצעות קוצב זמןTimer נוכל מצד אחד, לאפשר למעבד ,)

להמשיך במשימותיו ומאידך לגרום להשהיה בפרקי זמן קצובים.

המונים סופרים דפקי שעון, כאשר המונה עובר את הערך

0xFFFF הוא נמצא במצב המכונה גלישה ודגל הפסיקה של המונה עולה לאחד לוגי. אם הפסיקה מאופשרת תתבצע תוכנית

פסיקה של המונה. במעבד קיים מערך של מונים הניתן לתכנות בשםPCA

))Programmable Counter Array-16 מונים ברוחב 2 נתמקד ב .T1 ו- T0סיביות המיוצגים כ-

T1 ו- T0המונים סיביות כל אחד, 16מונים אלה הם ברוחב של

8בני TH ו TLוניתנים לגישה על ידי שני האוגריםסיביות כל אחד.

TMODהאוגר קביעת אופן ההפעלה של המונים T0 -וT1 ניתן לשליטה ,

.TCON ו- TMODבאמצעות שני אוגרים הסיביתGATE מאפשרת לעצור את ספירת המונה באמצעות ,

שווה לאחד לוגי GATEהדק הפסיקה החיצונית. כאשר סיבית ה-יש אפשרות לעצור את ספירת המונה באמצעות הדק הפסיקה

החיצוני . הסיביתC/T ) )Counter/Timer פקּוד המונה mקובעת האם ת

יהיה כמונה או כקוצב זמן.C/T=1 .המונה יספור דפקי שעון שמגיעים אל המונה מבחוץ -

C/T=0 1 - המונה יספור דפקי שעון בתדר קבוע שלMhz אחד( של תדר השעון(12חלקי

T1 ו- T0אופני העבודה של המונים הסיביותM1 -ו M2 קובעות את אופן העבודה של

המונה. למונה ארבע אופני עבודה. בשלב זה נתמקד בשני

בלבד.Mode2 ו- Mode 1אופני העבודה

T1 ו- T0אופני העבודה של המונים MODE0 – TL סיביות והוא משמש 5 מתפקד כמונה בן

. כדי ליצור תאימות לקוצב TH למונה 32כמחלק ב- .8048הזמן שבבקר

MODE3 3 קוצבי הזמן כ-2 – במצב זה מתפקדים מערכות נפרדות.

Timer1 כמונה שיציאתו מחוברת במקום לדגל – בקשת הפסיקה לאספקת אות קצב לתקשורת הטורית.

Timer0-2 – מתחלק ל .TL0 מתפקד כמונה המפעיל מתפקד כקוצב זמן TH0 ויוצר בקשת פסיקה. TF0את

ויציאתו מפעילה את 12המקבל בכניסה תדר מחולק ב-TF1.ויוצר בקשת פסיקה

TCONהאוגר אוגר זה מאפשר שליטה הן על אופן הפעולה של הפסיקות החיצוניות והן על

, מבקר את TCON . החצי העליון של האוגר המיוחד T1 ו- T0שני המונים פעולת המונים.

הסיבית TF0)Timer Flag 0( דגל הפסיקה של מונה - T0 סיבית זו עולה . כאשר יש גלישה, פעולה זה יוצרת בקשת פסיקה. 1ל

הסיבית TF1)Timer Flag 1( - דגל הפסיקה של מונה .T1 סיבית זו עולה כאשר יש גלישה, פעולה זה יוצרת בקשת פסיקה. 1ל

הסיביתTR1 )Timer Run 0( סיבית הפעלת מונה -T1 TR1 = 1.מונה מופעל - TR1 = 0.מונה כבוי -

הסיביתTR0 )Timer Run 0( סיבית הפעלת מונה -T0 TR0 = 1.מונה מופעל - TR0 = 0.מונה כבוי -

תאור גרפי של תפקוד האוגרים .T1 ו- T0השולטים במונים

האיור מדגים את מונהT0 אך הוא נכון גם עבור ,T1.

מימוש תוכנית לעבודה עם קוצב זמן

התוכנית תגרום לאחד המוצאים להוציא אות ריבועי

.500Hzבתדר של באמצעות האוגר המיוחדTMOD נגדיר את T0 כקוצב

Mode1 זמן באופן עבודה של :ההוראה להגדרת הקוצב תהיהTMOD=0x01 ;

חישוב ערך במונה נטעין את המונהT0 בערך התחלתי. מאחר והדרישה היא לתדר של

F=500Hz הרי שזמן המחזור של האות הריבועי צריך להיות T=2ms. 1במחצית מהזמן הזהms-ובמחצית השנייה של 0 ההדק צריך להיות ב

.1הזמן צריך להיות ב- החישוב עבור הערך ההתחלתי מבוסס על כך שתדר דפקי השעון של

. כלומר זמן המחזור של דופק שעון בודד הוא: F = 1Mhzהמונה הוא T=1µs 1. עבור פרק זמן שלms מספר דפקי השעון שהמונה צריך לספור ,

0x3E8הוא: 1ms/1µs = 1000

-0כידוע בקשת פסיקה מתקבלת במעבר המונה מxFFFF-0 לx0000 לכן צריך להיות:T0הערך ההתחלתי שצריך להטעין את המונה

0xFFFF – 0x3E8 = 0xFC17 המונהT0 מורכב משני אוגרים TH0 , TL0 לכן ההוראות לטעינת ערך .

יהיו:T0התחלתי למונה TH0=0xFC; TL0=0x17;

תאור מילולי של תוכנית הפסיקהלאחר שנצרוב את התוכנית בזיכרון המעבד. תתקבל

.1msפסיקת מונה בכל

.תוכנית הפסיקה תעצור את המונה 0תטעין מחדש את הערך ההתחלתיxFC17..תאפשר שוב למונה לרוץ ותחזור לתוכנית היציאה תהפוך את המצב בהדק

הראשית.

קוד התוכנית

מימוש תוכנית לקוצב זמן של שנייה.

-1נשנה את התדר לHZ שנייה 0.5. כך שבמשך .0 ובהמשך יהיה ב-1יהיה ההדר ב-

המונה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 : 5הערך ההתחלתי למונה יהיהEDF

41248 )0xA120( 0xFFFF – 0xA120 = 0x5EDF

קוד התוכנית

מימוש יעיל של פונקצית השהיה תוך שימוש במבנה סטנדרטי לתוכנה הכתובה

למיקרו.

תרגילי מעבדה שנה את התוכנית כך שנקבל במוצא הבהוב בתדר

הרץ.5של כתוב תוכנית הגורמת לארבעת הנוריות הנמוכים של

הרץ ואילו ארבעת 1 להבהב בתדר של P1פורט 5 יהבהבו בתדר של P1הנוריות הגבוהים של פורט

הרץ.

LCDרקע עיוני -

LCD )Liquid Crystal Display( משמעו תצוגת מסך גביש נוזלי.

התצוגה מכילה שתי שורות של תווים, בכל שורה עד תווים.16

)כל תו מורכב ממטריצה של נקודות )פיקסלים . 5x8 שגודלה

התצוגה מבוקרת על ידי הבקרHitachi HD44780 ,המבצע את כל הפעולות הפנימיות הדרושות

להפעלתה.

LCDמיפוי הדקי ה-DB0- DB7 ביטים, שבאמצעותו מבצעים 8 פס נתונים בן

קריאה/ כתיבה של הנתונים )תווים להצגה או פקודות עריכה לתווים(.

RS רגל בוררת בין אוגר פקודות - Instruction Register לאוגר .Data Registerמידע

E ,פשור mרגל א - לא מתייחס 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 בבסיס 01000001 או 10 בבסיס 65 מקבלת ערך .16 בבסיס 41בינארי או

אותיות. 80זיכרון יכול להכיל עד :0חלק מהכתובות מייצגות את השורות. שורה ראשונהx00-

0x0F :0 שורה שנייהx40-0x4F . יתר הכתובות מייצגות את המרחב הבלתי-נראה של זיכרון

, בו ניתן להשתמש גם כזיכרון כללי. RAMה--כתובת הRAM היא מיקום של הסמן על הצג )המקום בו מצוי

הסמן הוא המקום, שבו ייכתב המידע שנשלח(.

( Character Generator RAMזיכרון )CGRAM

בזיכרון זה יכול המשתמש לבנות ולשמור אותיותמשלו.

בתים, המאפשרים 64הדבר מתאפשר באמצעות פיקסלים. 5x8בניית שמונה אותיות בגודל

-תווים מוכנים מראש 190זיכרון זה מכיל בנוסף כ .ASCIIהמייצגים את תווי ה-

-זיכרון זה פועל בתאום עם זיכרון הDDRAM בכך שהוא שולח להצגה תווים ממאגר התווים שב-

CGRAM.

Address Counterמונה כתובת מונה הכתובתADC משייך את הכתובת לזיכרונות

DDRAM-ו CGRAM .-כאשר נשלח מידע לDDRAM-או ל CGRAM ערכו ,

מתעדכן אוטומטית.ACשל המונה

LCDטבלת הפקודות של צג ה-

הפעלת צג כיחידה נפרדת. )על מטריצה(

המחובר לפורט LCDמימוש צג 4000H

תוכנית להפעלת הצג

המשך:

טבלת הפקודות

)המשך( טבלת הפקודות

סוף