VB 延时函数

VB 延时函数,第1张

你那种方法实际上延时会比你设置的多1秒(t不等于0的情况下)

准确的可以这样编,不需要Timer控件(下面那个 Timer不是控件名):

Private Sub waittime(delay As Single)

Dim starttime As Single

starttime = Timer

Do Until (Timer - starttime) > delay

DoEvents

Loop

End Sub

补充了一下,这样就没有假死,delay时间可直接设置,精确到001秒。

单片机延时一秒

程序是不固定的

要根据你的晶振 计算出一次循环执行需要的时间

然后 写循环次数

一般是

void delay_one_second(void)

{

    int i;

    for(i = 0; i < TIMES; i++);

}

这样就可以了。 TIMES是要计算的。或者 根据示波器 自己尝试。 

在Keil里仿真的话,在配置里把晶振调成12MHz,然后在调用delay函数的地方设置一个断点,开始调试程序,运行到断点处,注意程序左边有一个记录当前寄存器和一些状态的窗口,其中,里面有一个是专门记录当前运行了多少时间的变量,记下当前时间T1,然后按F10(不进入子函数)调试,再记录当前时间T2,则延时=T2-T1。多试几个A,差不多调到1s就够了。我一般都这么调。你要想明白其中原理,想自己算的话,你就看看delay的汇编代码段自己算吧。

其实可以用C语言实现的,先要定义好定时器的初值

不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期

机器周期=12/n(n指晶振频率),假设你要定时的时间为M

那么定时的初值为:

M/机器周期=初值;

TH0=(65536-初值)%256;

TL0=(65536-初值)/256;

将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值

例如用12M晶振做1ms定时计算如下:

机器周期=12/1210^6=1us(微秒)

定时初值=(110^-3)/(110^-6)=1000;

所以:TH0=(65536-1000)%256;

TL0=(65536-1000)/256;

将65536-1000=64536化为16进制为:0xFC18

TH0=0xFC;

TL0=0X18;

定好初值后要延迟一秒就定一个延时参数,这里使用1000就行了(定时为1ms)中断程序为:

timer0() interrupt 1 // 1ms延时(120MHz)

{

TR0=0;

ET0=0;

TH0=0xfc;

TL0=0x18;

if(delayTimes1!=0) delayTimes1--;

TR0=1;

ET0=1;

}

调用程序大致为:

if(delay_flag==0)

{

delay_flag=1;

delayTimes1=1000;

}

if(delayTimes1==0)

{

delay_flag=0;

这里写定时到的 *** 作就行了;

}

(在主程序中使用delay_ms()这样的程序会影响程序运行速度的,使用中断就不会)

void Delay1000ms() //@110592MHz

{

unsigned char i, j, k;

_nop_();

i = 8;

j = 1;

k = 243;

do

{

do

{

while (--k);

} while (--j);

} while (--i);

}

//

void Delay1000ms() //@12000MHz

{

unsigned char i, j, k;

_nop_();

i = 8;

j = 154;

k = 122;

do

{

do

{

while (--k);

} while (--j);

} while (--i);

}

//

建议你下载这个软件  stc89c51和at89c51内核都一样,这个软件可以计算延时还有各种例程

以上就是关于VB 延时函数全部的内容,包括:VB 延时函数、单片机延时一秒的c程序、请问在单片机C语言编程中,用delay延迟的话,1秒程序是什么单片机晶振为12MHZ ...等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存