לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה --לשאלות בנושאי טלוויזיות, מערכות קולנוע ביתי, הגברה וסאונד - אנא פנו לפורום אודיו וקולנוע ביתי -- www.fresh.co.il/f=103 תגיות פורום: פורום אלקטרוניקה - פורום חשמל - שאלות בנושאי אלקטרוניקה - תכנון מעגלים - מעגלים מודפסים - פיתוח אלקטרוני - תכנון PCB - בקרים למנועים - תאורת לדים - תכנון דימר - מודינג - Arduino - מיקרו בקרים - שליטה על תאורה - שלט רחוק - משדר FM - תאורת LED - פתרון שאלות בחשמל - אלקטרוניקה תקבילית חץ ימינה  

לך אחורה   לובי הפורומים > תחביבים > חשמל ואלקטרוניקה
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 02-02-2008, 13:18
צלמית המשתמש של maind
  maind maind אינו מחובר  
 
חבר מתאריך: 08.10.02
הודעות: 827
בתגובה להודעה מספר 1 שנכתבה על ידי avi880 שמתחילה ב "מה עושה התוכנית?"

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

קוד:
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.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 03-02-2008, 16:28
  משתמש זכר DigiGil DigiGil אינו מחובר  
 
חבר מתאריך: 20.10.06
הודעות: 202
שלח הודעה דרך MSN אל DigiGil
הסבר..
בתגובה להודעה מספר 4 שנכתבה על ידי avi880 שמתחילה ב "[font=Arial]לא הבנתי את השורה..."

: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 נסגר)


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:59

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר