如何用定时器做延时函数(52单片机延时咋写?)

编写一个约1s的延时函数?使用中断,定时器工作在模式1,最大计数是65536,所以从15536计数到65536需要50000次,6M晶振的周期是2微秒,所以溢出一次需要100000微秒,溢出10次需要

如何用定时器做延时函数(52单片机延时咋写?)

编写一个约1s的延时函数?

使用中断,定时器工作在模式1,最大计数是65536,所以从15536计数到65536需要50000次,6M晶振的周期是2微秒,所以溢出一次需要100000微秒,溢出10次需要1秒。

ORG 000BH

AJMP时间0

延时函数延时时间计算有方法吗?

1 .软件延迟

多条指令的执行用来延迟时间,每条指令的运行时间累加计算总延迟时间。一般写成延迟函数。

例如,下面是10ms软件延迟。

delay_10ms() {

Int c = 1000 //调整常数达到要求的延迟,但是很难!

而(c!= 0) {

c -

}

}

一旦调用以上函数,延迟为10ms,多次调用可以满足任何更长的时间要求。

!但是,在拖延期间,别的什么都做不了,就等着吧!

2.硬件延迟

利用定时器/计数器芯片,或者利用微控制器内部的定时器/计数器,其实就是对晶振进行分频(分频系数可以编程),得到一个准确的低频周期信号,利用这个周期信号(比如10ms)触发中断,每隔10ms调用一次定时中断服务程序。通过在定时器中断服务程序中添加一个计数变量,可以得到任意的定时。

当10ms没到的时候,微控制器可以运行其他程序,当10ms到的时候,会自动中断服务程序来处理计时任务,不会被软件延迟阻塞。

3.在操作系统中,有一个硬件延迟和定时中断。可以在ucos ii中看到用汇编语言实现的源代码、节拍时钟和定时中断。

4.硬件延迟,占用定时器/计数器硬件资源。

52单片机延时咋写?

避免延迟(uint xms)

{ uint j for(xmsgt 0x ms-)for(j = 110 jgt 0j-)

}

这是一个延时子功能,比较准确。如果你想更准确,使用计时器,如下所示。

无效延迟(单位xms)

{ whil单片机外接24M的晶振,1ms的基准延时函数用C语言怎么写?

定时器T0工作模式1晶振频率24MHz定时器最大定时时间(us):32768定时器最小定时时间(US) :0.5 [1ms精确定时C51代码]

Void T0_init(void) //定时器初始化{TMOD |= 0x01 TH0 = 0xf8 //设置定时器计数初始值,计时为1000us TL0 = 0x33 IE |= 0x82 //打开总中断TR0 = 1 //启动定时器} Void t0 _ int service (void)中断服务{TH0 = 0xf8 //重新加载定时器计数初始值。