单片机技术网|技术阅读
登录|注册

您现在的位置是:单片机技术网 > 技术阅读 > keil软件测量软件延时时间

keil软件测量软件延时时间

       单片机C语言编程时,通常有四种延时方法。其中两种非精确延时,两种精确延时。精确延时可以通过硬件定时器实现,也可以通过库函数_nop()_,一个NOP的时间是一个机器周期时间,一个机器时间为12/晶振频率;非精确延时一般通过for循环和while循环实现,通过改变循环次数来改变延时时间,但是C语言循环的执行时间都是不能通过程序看出来的。那么如何观察写的延时到底有多长时间呢?这里有两种方法。

方法一:使用STC官方的ISP下载工具软件延时计算器

     STC下载工具界面切换到软件延时计算页面,系统频率设置为11.0592MHz和开发板上晶振频率一致,定时时长可以设置为ms或者微妙,根据需要设置即可。8051指令集这里根据所使用的单片机型号进行选择,我这里使用的是STC89C52RC,所以选择STC-Y1。这样就会自动生成下图中的for循环延时程序,实现100好眠软件延时。

方法二:使用keil软件的仿真测量软件延时时间

    下图是我自己写的一个延软件时for(i=0;i<30000;i++);那么这个延时时间可以延时多长呢,我们通过keil仿真测量一下。首先配置目标,晶振频率为11.0592MHz,Debug界面选择使用软件仿真器。

   然后启动仿真,设置断点如下图所示。注意在最左侧的Register框中,可以看到有个sec项,这个选项显示就是单片机运行了多长时间。单击复位按键,sec变为0,单击全速运行按钮,会直接停留在“LED=0“,此时会看到时间sec为0.00042209秒。

    再单击一下全速运行,会发现sec变为了0.16342122秒,两次时间差值就是for循环的延时时间为163毫秒。

      另外需要注意,这里在测量延时时间的时候,代码优化等级为8,如果用其他等级的话运行时间会有所差别。