重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这个程序应该是板子上延时的程序。
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了平武免费建站欢迎大家使用!
a就是需要延迟的毫秒数(也可能是其他单位)。
就是说,执行 for(i=0;i600;i++);的时间应该是一个单位长度(可能为1ms);
这样,你在调用的时候,赋值给a多少值,实际就是延时多少毫秒。
例如,延时10ms,就用
delay(10);
延时1ms,就用
delay(1);
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。
void delay_ms(unsigned int ms_number) // ms延时函数 (AT89C51 @ 11.0592MHz)
{
unsigned int i;
unsigned char j;
for(i=0;ims;i++)
{
for(j=0;j200;j++);
for(j=0;j102;j++);
}
}
void Delay()
{
unsigned char a,b,c;
for(a=0;a?;a++)
for(b=0;b?;b++)
for(c=0;c?;c++);
}
void delay_ms(unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;ims;i++)
{
for(j=0;j200;j++);
for(j=0;j102;j++);
}
}
拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
/*-----------------------------------------------
名称:delay1ms()
功能:延时1ms
晶振:12MHz 机器周期1us
时间计算:t=2+1+995+2=1000us =1.000ms
-----------------------------------------------*/
void delay1ms(void) //延时1ms子程序
{
unsigned char i,j;
for(i=5;i0;i--)
for(j=98;j0;j--);
}
对应汇编
/*-----------------------------------------------
名称:delay1ms
功能:延时1ms
晶振:12MHz 机器周期1us
时间计算:t=2+1+995+2=1000us =1.000ms
-----------------------------------------------*/
LCALL DELAY1MS ;2us
DELAY1MS:
MOV R6,#5 ;1us
DEL1: MOV R7,#98 ;1us
DJNZ R7,$ ;2*98=196us
DJNZ R6,DEL1 ;2us DLE1执行完所用时间(1+196+2)*5=995us。
RET ;2us
如果你要求是比较准确的延时程序,是一定要用定时器中断的,如果是大约的时间,是要知道你的晶振大小,然后用
while(a)
{
a--;
}
就可以了
#includetime.h
#includestdio.h
void main()
{
clock_t start,finish;
double durtion=0;
printf("计时开始\n");
start=clock();
while(1-durtion0.00001)
{
finish=clock();
durtion=(double)(finish-start);
}
printf("1ms计时完毕\n");
}
原理:两个时间差值是1ms就立即跳出while循环,C语言中时间分度值是ms