PDA

View Full Version : ایجاد یک وقفه 2 ثانیه



mahdi_farhani
یک شنبه 13 آذر 1384, 16:31 عصر
سلام دوستان من می خوام یه وقفه دو ثانیه ایجاد کنم چی کار باید بکنم .
برای تولید حالت چشمک زن لطفا راهنمایی کنید ...

aakh1361
دوشنبه 14 آذر 1384, 01:41 صبح
وقفه 01CH هر ثانیه 18.2 بار اجرا میشه شما میتونی با قرار دادن یک شمارنده در وقفه جدیدتون هر دو ثانیه تابع مورد نظرتون رو اجرا کنید
به این صورت که بعد از هر بار اجرای وقفه یکی به شمارنده اضافه بشه و بعد از 18.2 * 2 = 36.4 = 2 ثانیه تابع مورد نظرت اجرا بشه و بعدش دوباره شمارنده صفر بشه http://asefsoft.com/qsimages/121.gif

mahdi_farhani
سه شنبه 15 آذر 1384, 05:36 صبح
عزیز دستت درد نکنه من امتحان میکنم خبرشو بهت میدم.
میشه یه نمنونه هم برام بزارید .

aakh1361
سه شنبه 15 آذر 1384, 17:25 عصر
count db 0
NewInt:
inc Count
mov ax,Count
cmp ax,36
jb NoRunNewInt
; Here New Int And Then Zero Counter


mov ax,0
mov Count ,ax
NoRunNewInt:
retf

mahdi_farhani
سه شنبه 15 آذر 1384, 19:41 عصر
من که از این دستوران چیزی نفهمیدم میشه یه توضیح بدیی و یه برنامه کامل بنویسید...
که فقط یه تابع صدا بزنه و اون وقه اجرا بشه ...

aakh1361
سه شنبه 15 آذر 1384, 20:02 عصر
من که از این دستوران چیزی نفهمیدم میشه یه توضیح بدیی و یه برنامه کامل بنویسید...

متاسفم دوست من
درخواست شما خلاف قوانین انجمن هست
ما در اینجا فقط راهنمایی میکنیم

mahdi_farhani
چهارشنبه 16 آذر 1384, 08:21 صبح
کجای درخواست من خلاف قوانینه
اینکه من نفهمیدم شما چی نوشتین خلافه یا اینکه میگم یه برنامه کامل بنویس ....

mzjahromi
چهارشنبه 16 آذر 1384, 08:49 صبح
ببینید سیستم یک تایمر داره که هر 55 میلی ثانیه یک بار آپدیت میشه (یعنی هر ثانیه 18.2 بار) و شمارگر اون یکی اضافه میشه حالا اگه این شمارهگر رو بخونی و شماره اون رو نگه داری وقتی که 36 تا اضافه شد تقریبا دو ثانیه گذشته
دوم اینکه محتوای یکی از بیتهای پورت 60 یا 61 (فکر میکنم بیت پنجم از پورت 61 باشه)به نظرم 18 میکرو ثانیه یک بار معکوس میشه( 18 رو مطمئین نیستم ولی یه چیزی تو همین حدود هست)
البته راه اول خیلی ساده تر هست و برای کار شما مناسب تر

aakh1361
چهارشنبه 16 آذر 1384, 14:47 عصر
کجای درخواست من خلاف قوانینه
اینکه من نفهمیدم شما چی نوشتین خلافه

منکه به اسمبلی براتون نوشتم
مگه شما اسمبلی بلد نیستین !




یه برنامه کامل بنویس ....

این خلافه قوانینه

بازم سوالی هست ؟

mahdi_farhani
پنج شنبه 17 آذر 1384, 06:18 صبح
آقا محمد از متشکرم .
من این برنامه رو به برنامه خودم اضافه کردم ولی تاثیری نداشت .... آخه کجای کار اشتباه میکنم ....
تازه یه مشکل دیگه هم دارام دستور OUT به هم جواب نمیده ... البته با پورت شماره 378 جواب نمیده با پورت 61 برای تولید صدا به هم جواب میده

mzjahromi
پنج شنبه 17 آذر 1384, 08:13 صبح
کدوم برنامه رو؟
با پورت 378 چه کار داری که جوابت نمیده؟

mahdi_farhani
پنج شنبه 17 آذر 1384, 13:11 عصر
می خواهم 2 تا LED را به پورت پرینتر وصل کنم و و بعد از دو ثانیه یکی یکی روشن خاموش بشن ....
هنوز جواب نگرفتم ...
با ویژوال بیسک با یه dll اینک کارو کردم ...
حالا با اسمبلی تحت ویندوز و تحت Dos احتیاج دارم ایکارو بکنم و هنوز نشده ....
تحت ویندوز برای فراخوانی dll مشکل دارم تحت dos هم با تابع Out و وقفه هنوز مشکل دارم .....

Younes
سه شنبه 22 آذر 1384, 14:24 عصر
البته به نظر بنده شما نباید کدهای نوشته شده توسط aakh1361 را عینا استفاده نمایید زیرا مثلا اگر این قطعه برنامه سرویس دهنده جدید وقفه باشد انتهای ان باید Iret گذاشت نه retf و اگر در ابتدای وقفه قبلی باید قرار بگیرد (که معقول بنظر می رسد زیرا اجازه می دهد که سیستم هم کار خودش را انجام بدهد) در انتهای آن باید یک پرش far به شروع سرویس دهند اصلی وقفه صورت بگیرد.
البته شما قطعا این موارد را می دانستید انگیزه بنده بیشتر تست اطلاعات خودم بود.

aakh1361
چهارشنبه 23 آذر 1384, 01:42 صبح
درسته
من هم کد رو برای نمونه گذاشتم (تستش نکردم) تا ایشون با شکل کلیش اشنا بشن اون اخر باید IRET می گذاشتم نه RETF !!
ممنون از توجه شما

mzjahromi
شنبه 26 آذر 1384, 09:20 صبح
البته یه چیز دیگه هم هست که باید توجه داشته باشی
آدرس پورت پارالل معمولا 378 هست ولی بعضی مواقع ممکنه 378 نباشه