פורסם 2009 בספטמבר 2416 שנים שלום,אני בתהליכי בדיקה של תכנות דרך ה-LPT לכן אני עושה ניסויים קטנים כדי להתקדם הלאה..אז התקנתי את כל האישורים של הפורט המקבילי 378 וכבר לא יודע מה עובד אם בכלל עובד אבל יש לי בעייה מוזרה...עשיתי תוכנית קטנה שרק תוציא לי נתון תקח שניה הפסקה ותוציא נתון אחר... בנתון הראשון אין בעייה ואכן יוצא הנתון, אז בהוצאת הנתון השני יש הודעת שגיאה כאילו הפורט לא פתוח...הנה התוכנית:void main(){ int i=0; for(i;i<10;i++) { _asm { mov dx,378h mov ax,8d out dx,ax } clock_t start_time, cur_time; start_time = clock(); while((clock() - start_time) < 1 * CLOCKS_PER_SEC) { } _asm { mov dx,378h mov ax,0 out dx,ax } }וההודעת שגיאה היא על ההוצאת נתון האחרון OUT DX,AXכשהראשון מוציא את הנתון ללא בעייה כלל, השגיאה: 0xC0000096: Privileged instruction.תודה
פורסם 2009 בספטמבר 2416 שנים קודם כל, אתה שולח נתון בגודל 16 ביט (AX), בעוד אתה אמור לשלוח רק שמונה. שאר הביטים גולשים לכתובת הבאה של הסטטוס פורט, ויוצרים לך בלגן. אם למשל תכתוב בטעות לביט 5 בקונטרול פורט '1', אתה הופך את כיוון הנתונים בפורט לכניסות... שנית, אתה יכול להשתמש בפונקציה outportb מספריית dos.h ולחסוך את האסמבלי. שלישית, אל תתפוס אותי בביטים, אני כותב הכל מהזיכרון עריכה: חיפוש מהיר מצא לי את המדריכון הזה http://www.geocities.com/gear996/sub/parallel.html ומכיוון שgeocities עומד להעלם מעל פני האדמה, שמרתי אותו לדורות הבאים http://uploaded.fresh.co.il/2009/09/24/84412145.mht
פורסם 2009 בספטמבר 2516 שנים מחבר אוקי נכון שכחתי שאני מתעסק ב8 ביטים אך אני לא חושב שזאת הבעייה כיוון שבפעם שאני מוציא 08H אז הוא מוציא באמת 08H...אני אנסה באמת לשנות לאוגר קטן יותר..ולגבי הפקודה אני יודע אני מכיר אותה וגם את DELAY ואת SLEEP אבל אפחת מהן לא מופיעות אצלי בקומפיילר ( VC++ 2008 מיקרוסופט )אם יש הצעה טובה ונוחה לתכנות אשמח לשמוע...
פורסם 2009 בספטמבר 2716 שנים שאלוהים יעזור.. אתה עובד קשה.חסר סיפריות לפייתון או רובי על מנת לשלוט על הLPT
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.