03-02-2008, 16:28
|
|
|
חבר מתאריך: 20.10.06
הודעות: 202
|
|
הסבר..
:cod הנה תווית (label) המאפשרת למתכנת (אתה) להתייחס לכתובת מסוימת בזיכרון
שאליה הקצה הקומפיילר את רצף הערכים 31, 32, 33 וכך הלאה..
אתה לא צריך לדעת את הכתובת הפיזית בה יושבים הנתונים, אתה רק צריך לדעת שאם
תתייחס ל-cod בתוכנה אז הקומפילר ידע שאתה רוצה להתייחס לכתובת בזיכרון שממנה
מתחיל רצף הערכים.
מה עושה הפקודה mov dptr,#cod?
הפקודה mov dptr,#cod טוענת את הכתובת הפיזית שאליה מצביעה התווית cod אל
מצביע הנתונים (DPTR) של ה-8051. לפיכך, כל פקודת קריאה שתבוא מאוחר יותר
ותשתמש ב-DPTR, בעצם תיפנה אל האזור בו מאוחסן רצף הערכים.
איפה בתוכנית המקש נלחץ?
אתה ציינת בשאלתך המקורית שבקר המקלדת ממופה אל כתובת 8000,
לפיכך, אם אתה טוען את ה-DPTR ב-8000 ואז מבצע קריאה מה-DPTR אז אתה
בעצם קורא את ערך המקש הנוכחי שנלחץ..
וזה בדיוק מה שמתרחש בתחילת התוכנית שלך.
אגב, מספר הערות חשובות הקשורות לנושא שאלתך:
1. כאשר שואלים שאלות באסמבלר, חשוב מאד לציין את המעבד/מיקרובקר שבו
משתמשים כי סט הפקודות משתנה ממעבד למעבד.
2. התוכנה RIDE היא למעשה סביבת-פיתוח (IDE) עבור מיקרובקרים ממשפחת 8051
והיא אינה שפת-תכנות או קומפיילר בפני עצמה (אך היא כוללת קומפיילר ל-8051)
ובוודאי שהיא איננה התוכנית עצמה אשר אמורה לרוץ על המיקרובקר.
(אני מציין זאת כי הניסוח של השאלה שלך היה מעט מטעה בנוגע ל-RIDE)
בברכה
DigiGil
_____________________________________
_- סיוע בהשלמת פרויקט-גמר להנדסאים -_
(האתר digigil.com נסגר)
|