C语言作为一种新型的高级编程语言,在计算机软件编程中得到广泛的应用和实现。 以下编辑详细介绍了如何在c语言中使用delay。 希望能帮上忙。
c语言中delay的用法如下:
假设延迟函数如下。
void delay () )
{
uint i;
for(I=0; i20000; I;
}
如何计算,首先将20000转换为十六进制得到4E20,然后将字节4E乘以6得到468D,得到468 2=470,接着得到470d*20hex=32d=15040; 中心延迟函数一共运行15040个周期,假设所使用的晶体频率为12MHZ,则该分段函数的总延迟时间为15.04ms。
有了这个公式,如果想设定指定的延迟延长,可以用那个已知的公式决定。 即,总时间=[(6*I值的前8位)2]*i的后8位。
例如,假设延迟125ms。
如果先将低字节代入200D* (即C8 ),然后计算高低节的值,则根据式可知125ms=200* ) ) I值的高字节*6)2),)高低节*6) 2的总延迟时间为625us
void delay () )
{
uint i;
for(I=0; i0x68C8; I;
}
若要直写,请将68C8转换为十进制格式,即26824,然后赋值:
void delay () )
{
uint i;
for(I=0; i0x26824; I;
c语言中嵌入了汇编的延迟程序啊。 请自己看书。 很简单
单片机使用的可以是c和组件混合使用。 因为用程序集写延迟是准确的,所以可以在编写程序集后调用它。 用C制造正确的延迟确实很难哦。
不管谁说用c语言不能进行准确的延迟,只要使用51单片机的定时器/计数器,或者使用定时器/计数器2的动作方式2,自动重装8位计数器,就能进行准确的延迟。 别说1MS,就是100um也能准确完成。
其实很简单,采用定时器,计算出所需的定时时间,然后写入单片机中断程序即可,该方法可以实现精确的定时,最终误差只需石英振荡即可确定。
是的,使用计时器是最正确的。 但是计时器的数量有限,有时不一定能用。 例如温度检测(特别是变化大、快)时,必须用一个计时器一直持续检测。 此时,如果有其他任务正好分配给其他计时器,则只能通过其他方式进行延迟。
空循环就可以了
例如while(I—-; I决定延迟的长度
但是,c的延迟非常不准确,所以必须通过反汇编看汇编语句的数量和指令循环来计算时间
也可以
语音识别//延迟=1000小时为1S
{
无符号输入I;
for (; Delay0; delay—-)
{
for(I=0; i124; I )
{; }
}
}
二分快三计划I=0; i0x26824; I;
c语言中嵌入了汇编的延迟程序啊。 请自己看书。 很简单
单片机使用的可以是c和组件混合使用。 因为用程序集写延迟是准确的,所以可以在编写程序集后调用它。 用C制造正确的延迟确实很难哦。
不管谁说用c语言不能进行准确的延迟,只要使用51单片机的定时器/计数器,或者使用定时器/计数器2的动作方式2,自动重装8位计数器,就能进行准确的延迟。 别说1MS,就是100um也能准确完成。
其实很简单,采用定时器,计算出所需的定时时间,然后写入单片机中断程序即可,该方法可以实现精确的定时,最终误差只需石英振荡即可确定。
是的,使用计时器是最正确的。 但是计时器的数量有限,有时不一定能用。 例如温度检测(特别是变化大、快)时,必须用一个计时器一直持续检测。 此时,如果有其他任务正好分配给其他计时器,则只能通过其他方式进行延迟。
空循环就可以了
例如while(I—-; I决定延迟的长度
但是,c的延迟非常不准确,所以必须通过反汇编看汇编语句的数量和指令循环来计算时间
也可以
语音识别//延迟=1000小时为1S
{
无符号输入I;
for (; Delay0; delay—-)
{
for(I=0; i124; I )
{; }
}
}