18-02-2008, 12:42
|
|
|
|
חבר מתאריך: 08.10.02
הודעות: 827
|
|
נכון המקשים ניראים ככה:
קוד:
1 2 3 A
4 5 6 B
7 8 9 C
# 0 * D
ולכל מקש יש מיקום
לדוגמא בסירטוט למעלה
מקש במיקום 0 הוא A
במיקום 1 הוא 3
במיקום 2 הוא 2
במיקום 3 הוא 1
במיקום 4 הוא B
וכך אלה ....
אז איך אתה יודע שמקש שנלחץ A? הבקר מעלה את DAVBLE ל "1" לוגי ומוציא ברגליים שלו את הערך ששווה למיקום המקש - בין 0 ל 15. ואז היית צריך לעשות משהו כזה:
קוד:
unsigned char key = getkey();
if (key == 0) {
//A was pressed
}
אז בעזרת שימוש בטבלת המרה אפשר להמיר את הערך של המיקום בין 0 ל 15 לתו
ASCII שהתו מייצג.
היית עושה:
קוד:
unsigned char key = getkey();
if (key == 'A') {
//Do something
}
הרבה יותר מובן לא?
מימוש הפונקציה של
getkey() יכולה להיות משהו כזה:
קוד:
unsigned char getkey() {
while (P1.4 != 1); //Wait for '1' at DAVBLE
//Read key:
unsigned char key = P1 & 0x0F; //Get only lower half of port 1
switch (key) {
case 0: return 'A';
case 1: return '3';
case 2: return '2';
case 3: return '1';
case 4: return 'B';
case 5: return '6';
case 6: return '5';
case 7: return '4';
case 8: return 'C';
case 9: return '9';
case 10: return '8';
case 11: return '7';
case 12: return 'D';
case 13: return '*';
case 14: return '0';
case 15: return '#';
}
return 0; //Won't get here
}
או ככה, שפה ממש רואים שמדובר בטבלה (מערך):
קוד:
unsigned char getkey() {
while (P1.4 != 1); //Wait for '1' at DAVBLE
//Read key:
unsigned char key = P1 & 0x0F; //Get only lower half of port 1
unsigned char arr[15] = { 'A', '3', '2', '1', 'B', '6', '5, '4', 'C', '9', '8', '7', 'D', '*', '0', '#' };
return arr[key];
}
אבל זה תלוי איך חיברת.
_____________________________________
Error: Keyboard not found
Press F1 to continue
נערך לאחרונה ע"י maind בתאריך 18-02-2008 בשעה 12:46.
|