这个用编译软件,如keil,编译通过之后,进入软件调试功能,就可以测出来是延时多少秒。
具体我帮你调试过了,如果单片机接12mhz晶振的话,这个是延时0.2秒的子程序。你调用一次delay();就延时0.2秒。
请选为最佳答案哦亲。
你好:如果你想直接知道答案,那么我告诉你,12MHz晶振:
void delayms(unsigned int t)
{
unsigned int i,j
for(i=ti>0i--)
for(j=123j>0j--)
}
能精确到1ms。
如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没问题。
然后你要想知道是怎么调试的,很简单,打开uv2编程软件,在最上边的工具栏里边有个“Debug”,点击后出现下拉菜单,选择第一个“start/stop Debug Session”,然后在最右边有一个Watch栏,有两个项目,一个是“Register”,一个是“value”,然后在“Register”栏下边的“Sys”里边有个“sec”,你只要单击“Step over”运行程序并观察“sec”的值就能调试出你程序的执行时间了。
注意,一定要先选择晶振频率,不然会默认24MHz。
希望我的回答能帮助到你。
C语言delay函数延时计算源代码如下:
#include "stdlib.h"
void delay()
{
time_t start,end
start=time(null)
unchar i
while(z--)
{
for(i=0i&lt121i++)
}
end=time(null)
printf("%f",difftime(end,start))
}
扩展资料
1、对于要求精确延时时间更长,这时就要采用循环嵌套的方法来实现,因此,循环嵌套的方法常用于达到ms级的延时。
对于循环语句同样可以采用for,do…while,while结构来完成,每个循环体内的变量仍然采用无符号字符变量。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)