נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: כתיבת 2 תוכניות למיקרו מעבד 3090.

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
ששש
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 10 November 2007 בשעה 15:36 | IP רשוּם
ציטוט ששש

אני חייב עזרה בבניית שתי תוכניות למיקרו מעבד DSM-3090 ואלגוריתם שלהם גם יהיה מצוין...

תוכנית ראשונה:
כתיבת תוכנית שתייצר גל ריבועי בדיוטי סייקל של 50 אחוז ובא על תדר של 4KHz בהדק 0 של פורט 2. ולא להשתמש בתוכנית הזאת בפסיקות זה חשוב רק בטיימרים ופונקציה.

תוכנית שניה:
ברגע הפעלת התוכנית ריצוד הלדים ימינה וכאשר נותנים פולס שלילי ב-INT0 כל הלדים יהבהבו 3 פעמים ואז יחזרו לרצד.
בפונקצית MAIN ריצוד בפונקצית פסיקה הבהוב.

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

הצטרף / הצטרפה: 23 November 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 119
נשלח בתאריך: 11 November 2007 בשעה 15:08 | IP רשוּם
ציטוט inHaze

אני יכול לתת כיוון ממש כללי כי אני לא כ"כ זוכר, אבל לגבי תכנית ראשונה: הדק 0 בפורט 2, זה אומר שאתה צריך לשלוח לכתובת של פורט 2 את המילה הבאה 0001 0000 (בהנחה שמרחב הכתובות של הפורט הוא בגודל 16 סיביות), כדי ליצור גל ריבועי עם דיוטי סייקל של 50%, אתה צריך ליצור 2 לולאות כאשר שניהם בגודל שווה (כדי שיהיה 50%) ולשלוח לכתובת הפורט בלולאה אחת 0001 0000 ובלולאה השניה: 0000 0000. זה יוצר גל ריבועי בהדק 0 של הפורט. עכשיו כדי ליצור תדר של 4KHz אתה צריך להבין שזה תלוי בגודל של הלולאה -> בזמן שאתה מחזיק את ה-0 או ה-1 בפורט. ממה שאני חושב הזמן הזה הוא לא קבוע על כל מחשב, כי זה תלוי בביצועים שלו, ז"א כמה זמן לוקח לו לבצע את הלולאה. ד"א בתוך הלולאה אתה אמור לבצע השהייה מסויימת בצורה כזאת:

mov cx, FFFFh

mov al, port2_addr

lp1: out 1, al

loop lp1

זאת דוגמה של הלולאה הראשונה (אני לא בטוח שהקוד נכון אבל הרעיון ברור) ובלולאה השנייה אותו דבר רק שאתה שולח 0 במקום 1 כך: out 0,al.

לגבי שאלה שנייה: כדי ליצור ריצוד לדים ימינה אתה צריך לשלוח ליציאה קודם כל 0000 1000, שזה 80h, ואז אתה צריך לולאת השהייה כמו בשאלה הראשונה, ואז אתה צריך לבצע פקודת סיבוב ימינה ב-1 (ror ax,1 כאשר ax מכיל את הנתון 80h).  אני לא כ"כ הבנתי מה הכוונה פולס שלילי אני מניח שאתה מתכוון ל-0. עכשיו אם אתה מזהה 0 בכתובת של INT0 אז אתה צריך לשלוח 1111 1111 (FFh), השהייה ולחזור על זה עוד פעמיים.



__________________
הבלוג שלי
חזרה לתחילת העמוד הצג את כרטיס החבר של inHaze חפש הודעות אחרות של inHaze
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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