求完善一个延时时间可调的C语言控制程序

求完善一个延时时间可调的C语言控制程序,第1张

没用过这款单片机,但是大致代码如下

定义一个按键key 控制倍数

char beishu=1;

if(key被按下)//倍数选择 共1 2 3三档 最好加个按键防抖程序

{

if(beishu=4)

beishu=1;

beishu++;

}

然后延时程序这样写

for(j=1500000beishu;j>0;j--)

你可通过定时器中断来延时,这样不会影响到主程序的运行;

例:void timer0_ovf_isr(void)

{

time++;

if(time>500)

{

time=0;

delay=1;

}

}

你可通过判断delay的值,来实现延时;

一条条指令的时间数出来的,看循环一次的指令要多久,乘以循环次数,这种原地延时的程序,延时时间也都是个大概,循环执行中间,来中断的话,延时程序的时间就会加长,一般用在时间要求不用太准的地方。

我记得keil里面有时间的,好久不用了,单位好像是微秒吧!就是那个分步执行,按一下执行一步的

比如前面那个箭头指到你的调用函数delay(200);假设执行到此部用时1110。

按一下执行,箭头指到下一“;”前的那一句了,如果此时用时显示变成了1510,说明延时函数延时了400us

要注意选择对的晶振频率

那样子你的调用系统的API来获得调用此函数之前的系统时间,还有调用此函数返回之后的系统时间进行比较。

#include <windowsh>

#include <stdioh>

voidmain()

{

SYSTEMTIME sys;

GetLocalTime( &sys );

int start=syswMilliseconds;//获取开始时的毫秒数

//下面调用你的函数

delay(uint型变量);//这里面的参数你必须自己看着办

GetLocalTime( &sys );

int end=syswMilliseconds;//获取调用delay函数之后的秒数

printf("调用delay函数消耗了%d毫秒!\n",end-start);

printf("注意:此程序只能处理1秒以内的延迟毫秒数!");

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=125;y>0;y--);

}

以上就是关于求完善一个延时时间可调的C语言控制程序全部的内容,包括:求完善一个延时时间可调的C语言控制程序、C语言 怎样延迟时间、汇编语言的延时程序是如何计算延时时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存