PDA

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



mehdi.offline
دوشنبه 17 بهمن 1384, 14:25 عصر
با سلام به دوستان و اساتید
من یه مشکلی دارم اون هم اینه که نمی تونم یه وقفه چند ثانیه ای در اسمبلی ایجاد کنم
یه پروژهای استادمون به ما داده اون هم اینه که پورت پرینتر رو به 8تا دیود وسل کنیم با باهاش رقص نور بسازیم من با این دستورات

#include <stdio.h>
#include <conio.h>

int main(void)
{
asm{
mov al,11111111b
mov dx,378h
out dx,al
}
}
میتونم LED هارو روشن و خاموش کنم .
ولی می خام بعد روشن شودن اولین چراغ بغیه رو با یه فاصله زمانی مشخص تغییر بدم
استادمون گفته می تونیم یه حلقه ایجاد کنید و زمان سیستم رو بگیریم و بعد در یه متغیر دیگه زمان رو با 2 جمع کنیم و در حلقه قرار بدیم . ولی نتونستم این کارو بکنم لتفا کمکم کنید.
:گریه:

aakh1361
یک شنبه 23 بهمن 1384, 23:57 عصر
البته من این رو تست نکردم ولی فکر کنم کار کنه

#include <stdio.h>
#include <dos.h>
#include <conio.h>

void LED(char n)
{
asm mov dx,378h
asm in ax,dx
asm mov bx,ax
asm mov ax,1
asm mov cl,n
asm shl ax,cl
asm or ax,bx
asm out dx,al
};

int Reply=10;
int Delay=250;

int main(void)
{
for(;Reply>0;Reply--)
{
LED(0);
delay(Delay);
LED(2);
delay(Delay);
LED(4);
}
}

pcmcia
یک شنبه 14 اسفند 1384, 07:57 صبح
86h از این تابع کمک بگیر

raha_hakhamanesh
دوشنبه 01 خرداد 1385, 14:51 عصر
با سلام
این کد کوتاه برای ایجاد تاخیر است می تونید از اون استفاده کنید

PUSH AX
MOV BX,X مثلا=10
MOV AX,800
MUL BX
MOV CX,AX
WAIT: IN AL,61H
AND AL,10H
CMP AL,AH
JE WAIT
MOV AH,AL
LOOP WAIT
POP AX

موفق باشید

rainstorm
دوشنبه 25 تیر 1386, 01:45 صبح
سلام
خوبی
دمت گرم برنامتو همین الان تست کردم عالی کار می کنه ظاهراً هر یک ثانیه تکرار میشه
مرثی عزیز