עבור לתוכן

הודעת שגיאה בהוצאת מידע לLPT

Featured Replies

פורסם

שלום,

אני בתהליכי בדיקה של תכנות דרך ה-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.

תודה

פורסם

קודם כל, אתה שולח נתון בגודל 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

פורסם
  • מחבר

אוקי נכון שכחתי שאני מתעסק ב8 ביטים אך אני לא חושב שזאת הבעייה כיוון שבפעם שאני מוציא 08H אז הוא מוציא באמת 08H...

אני אנסה באמת לשנות לאוגר קטן יותר..

ולגבי הפקודה אני יודע אני מכיר אותה וגם את DELAY ואת SLEEP אבל אפחת מהן לא מופיעות אצלי בקומפיילר ( VC++ 2008 מיקרוסופט )

אם יש הצעה טובה ונוחה לתכנות אשמח לשמוע...

פורסם

שאלוהים יעזור.. אתה עובד קשה.

חסר סיפריות לפייתון או רובי על מנת לשלוט על הLPT

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים