51单片机延时函数、如何计算

程序执行步骤

51单片机延时函数、如何计算_第1张图片
程序执行的速度是由晶振频率产生震荡产生的。

时钟频率

时钟频率是由晶振频率决定的,产生对应晶振频率的时钟频率。
当晶振频率是11.0592MHz的时候,时钟等于
((1/11.0592)=0.090422) 微秒 ,也就是时钟每震荡一次的的时间是0.090422微妙

机器周期

单片机内部每执行一条语句需要花费12个时钟频率。也就机器周期=12*时钟频率
这是因为,执行一条语句单片机需要内部很多步骤,正好消耗12个时钟频率,所以规整成一,叫做机器周期,但操作某些变量也有自己的机器周期。如下图。
51单片机延时函数、如何计算_第2张图片

11.0592MHZ的延时程序

计算过程
需要知道对应晶振的时钟周期11.0952MZH的时钟周期为:

  • 时钟周期:1÷11.0592 = 0.0904224537037037037037037037037
  • 机器周期:12× 0.0904224537037037037037037037037≈1.085(微秒)

也就是执行一条语句得用1.085微秒
利用for循环执行一定次数可以实现自己的延时程序,如果需要一个延时1ms功能的函数可以这样做。

  • 1ms = 1000us
  • 1000us/1.085us = 921.65898617511520737327188940092(次)
  • 参考上面的 变量的机器周期,unsigned int 的机械周期为8
  • 921.65898617511520737327188940092 / 8 =115.20737327188940092165898617512

所以使用unsigned int变量实现for循环,大约执行115次即为1ms;

void delay(unsigned ind n){
unsigned int m;
unsigned int i,j;
for (i=0;i<n;i++)
for(j=115;j>=0;j--);
//以上是带形式参数的延时函数n=1时为1ms

结束

如果对你有帮助,点赞支持一下吧。
转载联系本人。

你可能感兴趣的:(51单片机,51单片机,单片机,嵌入式硬件)