נשלח בתאריך: 11 November 2007 בשעה 15:08 | | IP רשוּם
|
|
|
|
אני יכול לתת כיוון ממש כללי כי אני לא כ"כ זוכר, אבל לגבי תכנית ראשונה: הדק 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), השהייה ולחזור על זה עוד פעמיים.
__________________ הבלוג שלי
|