02-02-2008, 13:18
|
|
|
|
חבר מתאריך: 08.10.02
הודעות: 827
|
|
התת שגרה קולטת מקש מהמקלדת, מקצה לו ערך התלוי בערכו של המקש ומחכה שיעזבו אותו.
קוד:
kb: mov dptr,#8000h
מכניסה ל DPTR
את הכתובת של הפורט שאליו מחובר המקלדת
movx a,@dptr
קוראת את הפורט אל תוך a
עכשיו ב
a
נמצא ערך בין
0-255
anl a,#0fh
מאפסת את את החלק העליון של הערך הנקרא
כניראה שבקר מחובר כך ש4 רגלי המידע שלו מחוברים לחלקו התחתון של הפורט
mov dptr,#cod
העבר את הערך ההתחלתי של טבלת ההמרה
movc a,@a+dptr
הכנס ל a
את הערך המוקצה למקש
0x0-0b
$ , jb p1.0,
כניראה שרגל ה
DAVBLE
של הבקר מחובר לפורט 1 ברגל 0
וכשנלחץ מקש רגל זאת עולה ל1 לוגי
ועכשיו התוכנית מחכה שתרד ל0,
זה קורה כאשר המקש נעזב.
לפי מה שאני רואה
שתי השורות האלה
קוד:
mov dptr,#cod
movc a,@a+dptr
אינם נחוצות, שכן נגיד וערך המקש הוא 4 שתי השורות יתורגמו ל
movc a,@4+#cod
שיכניס ל a את הערל 04h שהוא כבר ככה.
חוץ מזה אם a יהיה ערך הגדול 0b או 11 הוא יצא מגבול הטבלה.
אני מניח שזאת מקלדת שבדרך כלל משתמשים בפרוייקטים בעלת 3x4 מקשים שעליהם בסדר הבא
בצורה הבאה:
קוד:
1 2 3
4 5 6
7 8 9
* 0 #
אז היית יכול להשתמש ב
קוד:
cod: db 31h,32h,33h,34h,35h,36h,37h,38h,39h,2ah,30h,23h,00 h,00h,00h,00h
מה שהיה ממיר את הערך של המקש - בין 0 ל 15, לערכו ה ASCII של מה שמקש מייצג.
רק לשים לב שזה תלוי באיך החומרה מחוברת, הסדר יכול להיות טיפה שונה.
_____________________________________
Error: Keyboard not found
Press F1 to continue
נערך לאחרונה ע"י maind בתאריך 02-02-2008 בשעה 13:30.
|