×
单片机 > 单片机程序设计 > 详情

C51延时函数delay的编写

发布时间:2020-06-04 发布时间:
|

例如,要写一个延迟10ms的delay函数:(12M晶振)



void delay_10ms()

{

     unsigned char i,j,k;

     for(i=5;i>0;i--)

     {

           for(j=4;j>0;j--)

           {

                   for(k=248;j>0;j--);

            }

      }

}

原理:3层for循环,循环次数是 NUM = 4X5X248 = 4960次,由每次循环都有条件判断(如 i >0)和自减语句(如 i--),因此每次循环又耗费两个机器周期

     所以,总耗费的机器周期为 SUM = NUM x 2 = 9920个


     又因为 12M 晶振频率,每一个机器周期为 1us,所以 这个函数话费的时间 为9920us = 9.920 ms 约等于10ms,而把赋值语句,压栈出栈操作计算在内,加起来差不多10ms



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计