用汇编语言编写一个延时1S的子程序

用汇编语言编写一个延时1S的子程序,第1张

; 本程序通过编译,运行正确

Code Segment

Assume CS:Code,DS:Code

; -----------------------------------------

; Subroutine 延时指定的时钟嘀嗒数

; 入口:

; Didas=时钟嘀嗒数(1秒钟约嘀嗒182次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)

Delay1S Proc Near

push dx

push cx

xor ax,ax

int 1ah

mov Times,dx

mov Times[2],cx

Read_Time: xor ax,ax

int 1ah

sub dx,Times

sbb cx,Times[2]

cmp dx,Didas

jb Read_Time

pop cx

pop dx

ret

Times dw 0,0

Delay1S EndP

; -----------------------------------------

Didas equ 18

Start: call Delay1S

Exit_Proc: mov ah,4ch ;结束程序

int 21h

Code ENDS

END Start ;编译到此结束

我以前写的控制跑马灯的程序,有1s定时,也有中断,

根据需要修改修改就可以了。

#include<reg51h>

#define

uchar

unsigned

char

#define

uint

unsigned

int

void

delay(uchar

uu);

main()

{

EA=1;

EX0=1;//开总中断和外部中断0;

EX1=1;//开中断1

ET0=1;

PX0=1;

PX1=1;

IT0=1;

IT1=1;

while(1)

{

P2=0;

delay(20);

P2=0xff;

delay(20);

}

}

void

int1()

interrupt

0

using

2

{

uchar

aa,i,j,k;

i=0xfe;

for(aa=0;aa<4;aa++)

{

P2=i;

j=i>>7;

k=i<<1;

i=k|j;

delay(20);

}

}

void

int2()

interrupt

2

using

3

{

uchar

bb,ii,jj,kk;

ii=0x7f;

for(bb=0;bb<4;bb++)

{

P2=ii;

jj=ii<<7;

kk=ii>>1;

ii=kk|jj;

delay(20);

}

}

void

delay(uchar

uu)

//uu5ms定时;

{

uchar

aaa;

for(aaa=0;aaa<uu;aaa++)

{

TMOD=0X01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

while(!TF0);

TF0=0;

}

}

void delay(unsigned int xms)

{

    unsigned int i, j;

    for(i=xms;i>0;i--)

        for(j=110;j>0;j--); //这条指令约等于1ms

}

1秒即delay(1000)

VB提倡的是用定时器控件(Timer)的方法。首先在窗体放入一个Timer1和Command1,然后输入以下代码:

Private Sub Command1_Click()

Timer1Interval = 1000

Timer1Enabled = True

End Sub

Private Sub Form_Load()

Timer1Enabled = False

End Sub

Private Sub Timer1_Timer()

MsgBox "这个对话框是点击按钮1秒钟后d出来的"

Timer1Enabled = False

End Sub

此外还可以用API函数Sleep来延时,或者利用循环结合时间函数来延时,但它们都容易造成系统阻塞,所以不建议使用。

使用定时器控件还有一个最大好处,就是在延时期间你的程序还可以继续运行处理其他事务(比如鼠标点击、键盘输入等)。而其他方法产生的延时效果,在延时期间就只能傻等,什么也做不了,甚至还有可能影响到其他程序。

以上就是关于用汇编语言编写一个延时1S的子程序全部的内容,包括:用汇编语言编写一个延时1S的子程序、求单片机一秒延时程序(12M晶振),要用C语言且用定时和中断、假设单片机的时钟频率为12HZ,设计一个1秒的延时程序并解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9466282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存