c语言延时程序的数值是怎么算的?就那个c=23什么的
void delay500ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
那23.152.70是问你来的,为什么是这几个数?
追答你换成乘积接近的别的数试试,你就会发现这只是利用乘积的。。。
追问那200秒延时的数值呢?
本人大四学渣,大神,求解脱!!!
追答额,你最好还是用Sleep函数。这个根据不同电脑主频不同,延迟时间也不同,就好比在我的电脑上运行时间就在0.25秒左右。
追问呃呃,我学渣。。。程序是别人给我的
追答你直接Sleep(200),就是延时200ms了,但是要加#include库
追问单片机啊,你不早说。
那就这样吧。。。乘积大概是100000左右,你写个a=10,b=100,c=100试试
谢谢
单片机中延时时间怎样计算?
一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2 = 81*2 = 162us DJNZ 2us 二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ...
关于C语言for循环延时函数
循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us 延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms 计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5 二. 200ms延时子程序 程序:void delay200ms(void){ unsigned char i,j,k;for(i=5;i>0;...
如何用c语言实现单片机延时?
500ms延时子程序程序:(晶振12MHz,一个机器周期1us。)void delay500ms(void){ unsigned char i,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}
单片机c语言的延时程序500ms
根据外部晶振的不同,延时1毫秒的循环次数也不一样,一般12M晶振的话用 for(j=time;j>0;j--);延时时,1毫秒time大概为125左右,这里用110,大概晶振为11.0592M,所以这段程序,内部循环完成1毫秒延时,外部循环完成500毫秒延时。
c语言延时函数原理解释
谁给你的坑爹东西,这个是有延时效果,不过需要这段时间CPU几乎被沾满,做一些毫无意义的计算。没有具体含义,就是跑了50*38*130此循环。而且延时不一定是10毫秒,看机器的性能;要想真延时可以用Sleep等函数
51单片机C语言程序中延时函数delay的原理是什么?
关于大小的值:如果是在C语言中,该值不仅与水晶振动、单片机本身的速度,但也与C的编译器,所以,虽然这个值可以精确计算,但大多数情况下,程序员是经验值。当然,如果你在汇编中编程,情况就不同了,因为每条指令使用一定数量的机器周期,你当然可以根据所有指令使用的总时间来计算特定延迟的总时间。
怎么用C语言写可以调节的延时程序,请大侠帮忙
C语言延时程序:10ms延时子程序(12MHZ)void delay10ms(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);} 1s延时子程序(12MHZ)void delay1s(void){ unsigned char h,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;...
单片机C语言中while的延时时间?
C语言延时程序:10ms延时子程序(12MHZ)void delay10ms(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);} 1s延时子程序(12MHZ)void delay1s(void){ unsigned char h,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;...
请教关于单片机C语言中用while延时的问题
晶振频率Fosc=12MHz,则机械周期 T=12\/Fosc=1us;程序中 的 自加(++)、自减(--) 的执行周期为1个机械周期,即1us;若为 理想状态,则delay(500000)的时间应该是:500000×1us=500ms;但是,编译软件 要把 函数调用、for 语句转换成 机器指令,这是需要一定周期的,周期长短 视不同的编译软...
C语言精确延时
DFF6 DJNZ R7,C:0802 22 RET 三. 10ms延时子程序 程序:void delay10ms(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--); } 产生的汇编 C:0x0800 7F05 MOV R7,#0x05 7E04 MOV R6,#0x04 7DF8 MOV R5,#0xF8 C:0x0806 DDFE DJNZ...