没用过这款单片机,但是大致代码如下
定义一个按键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语言 怎样延迟时间、汇编语言的延时程序是如何计算延时时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)