您的位置 首页 硬件

C言语编程常用的4种延时办法解析

C语言编程常用的4种延时方法解析-for 语句和 while 语句都可以通过改变 i 的范围值来改变延时时间,但是 C 语言循环的执行时间都是不能通过程序看出来的。精确延时有两个方法,一个方法是用定时器来延时,这个方法我们后边课程要详细介绍,定时器是单片机的一个重点。

C 言语常用的延时办法,有如图4-2所示4种。

C言语编程常用的4种延时办法解析

图2-4 C 言语延时办法

图2-4是 C 言语编程常用的4种延时办法,其间两种非准确延时,两种准确一些的延时。for 句子和 while 句子都能够经过改动 i 的规模值来改动延时时刻,可是 C 言语循环的履行时刻都是不能经进程序看出来的。准确延时有两个办法,一个办法是用定时器来延时,这个办法咱们后边课程要详细介绍,定时器是单片机的一个要点。别的一个便是用库函数nop();,一个 NOP 的时刻是一个机器周期的时刻,这个后边也要介绍。

非准确延时,只是在咱们做一些比方小灯闪耀,流水灯等简略演示试验中运用,而实践项目开发进程中其实这种非准确延时用的很少。

好了,介绍完了,咱们就要实战了。上节课的 LED 小灯闪耀的程序,咱们用的延时办法是 for(i=0;i《30000;i++);咱们假如把这儿的 i 改成100,下载进入单片机,会发现小灯一向亮,而不是闪耀状况,现在就请咱们都把这个程序改一下,改成100,然后下载调查一下现象再持续。..。..

调查完了,毫无疑问,实践现象和我说到的理论是相符合的,这是为什么呢?这儿介绍一个知识。咱们人的肉眼对闪耀的光线有一个最低分辩才能,通常状况下当闪耀的频率高于 50 Hz 时,咱们看到的信号便是常亮的。即,延时的时刻低于 20 ms 的时分,咱们的肉眼是分辩不出来小灯是在闪耀的,或许最多看到的是小灯亮暗略微改动了一下。要想清楚的看到小灯闪耀,延时的值有必要大一点,大到什么程度呢,不同的亮度的灯不完全相同,咱们能够自己做试验。

那么怎么调查咱们写的延时到底有多长时刻呢?挑选 Keil 菜单项 Project–》OpTIons for Target ?Target1?。..,或点击在图2-17中已说到过的图标,进入工程选项,如图4-3所示。

C言语编程常用的4种延时办法解析

图4-3 工程选项——时钟频率设置

首要翻开 Target 这个选项卡,找到里面的 Xtal(MHz)这个方位,这是填写咱们进行模仿时刻的晶振选项,从咱们原理图以及板子上都能够看到,单片机所运用的晶振是 11.0592 MHz,所以这个当地咱们要填上11.0592。然后找到 Debug 这个选项卡,挑选左边的 Use Simulator,然后点击最下边的 OK 就能够了,如图4-4所示。

C言语编程常用的4种延时办法解析

图4-4 工程选项——仿真设置

挑选菜单项 Debug–》Start/Stop Debug Session,或许点击图4-5中红框内的按钮,就会进入一个新的页面,如图4-6所示。

C言语编程常用的4种延时办法解析

图4-5 发动/完毕调试按钮

C言语编程常用的4种延时办法解析

图4-6 工程调试界面

最左边那一栏显现单片机一些寄存器的当时值和体系信息,最上边那一栏是 Keil 将 C 言语转换成汇编的代码,下边便是咱们写 C 言语的程序,调试界面包括许多的子窗口,都能够经过菜单 View 中的选项翻开和封闭。你或许会感觉这种默许的散布不符合习气或许不便利调查特定信息,好办,界面上简直一切子窗口的方位都能够调整的。比方我想把 Disassembly 反汇编窗口和源代码窗口横向并排摆放,那么只需要用鼠标拖动反汇编窗口的标题栏,这时会在屏幕上呈现多个指示方针方位的图标,拖着窗口把鼠标移动到相应的图标上,软件还会用蓝色底纹指示详细的方位,如图4-7所示,松开鼠标窗口就会放到新方位了。调整后的作用如图4-8所示。

C言语编程常用的4种延时办法解析

图4-7 调整窗口方位

C言语编程常用的4种延时办法解析

图4-8 窗口方位调整作用

你或许现已注意到在 C 言语的源代码文件和反汇编窗口内都有一个黄色的箭头,这个箭头代表的便是程序当时运转的方位,由于反汇编内的代码就由源文件编译生成的,所以它们指示的是相同的实践方位。在这个工程调试界面里,咱们能够看到程序运转的进程。在左上角的工具栏里有这样三个按钮:第一个标示有 RST 字样的是复位,点击一下之后,程序就会跑到最开端的方位运转;右侧紧挨着的按钮是全速运转,点击一下程序就会全速跑起来;再右边打叉的是中止按钮,当程序全速运转起来后,咱们能够经过点击第三个图标来让程序中止,调查程序运转到哪里了。点击一下复位后,会发现 C 言语程序左边有灰色或绿色,有的当地仍是坚持本来的白色,咱们能够在咱们灰色的方位双击鼠标设置断点,便是比方程序总共20行,在第十行设置断点后,点全速运转,程序就会运转到第十行中止,便利咱们调查运转到这个当地的状况。

同学们会发现,有的方位能够设置断点,有的当地不能够设置断点,这是为什么呢?由于 Keil 软件自身具有程序优化的功用,假如咱们想在一切的代码方位都能设置断点,能够在工程选项里把优化等级设置为0,便是告知 Keil 不要进行优化。如图4-9所示。

C言语编程常用的4种延时办法解析

图4-9 工程优化等级

这节课咱们要点是看看 C 言语代码的运转时刻,在最左边的 register 那个框内,有一个 sec 选项,这个选项显现便是单片机运转了多少时刻。单击一下复位按钮,会发现这个 sec 变成了0,然后咱们在 LED = 0;这一句加一个断点,在 LED = 1;这个方位加一个断点,咱们点击全速运转按钮,会直接停留在 LED = 0;咱们会看到咱们的时刻改动成0.00042752秒,如图4-10所示。请注意,咱们这儿设置的优化等级是默许的8,假如你用的是其它等级的话运转时刻就会有所不同,由于优化等级会直接影响程序的履行功率。

C言语编程常用的4种延时办法解析

图4-10 检查程序运转时刻

再点一下全速运转,会发现 sec 变成了0.16342556,那么减去前次的值,便是程序在这两个断点之间履行所阅历的时刻,也便是这个 for 循环的履行时刻,大概是 163 ms。咱们也能够经过改动 30000这个数字来改动这个延时时刻。当然了,咱们要注意 i 的取值规模,你假如写成了大于 65535 的值今后,程序就一向运转不下去了,由于 i 无论怎么改动,都不会大于这个值,假如要大于这个值且正常运转,有必要改动 i 界说的类型了。后边假如咱们要检查一段程序运转了多长时刻,都能够经过这种办法来检查。

实践上,进入 debug 形式,除了能够看程序运转了多长时刻外,还能够调查各个寄存器、各个变量的数值改动状况。点击 View 菜单里的 Watch Windows–》Watch 1,能够翻开变量调查窗口,如图4-11所示。

C言语编程常用的4种延时办法解析

图4-11 变量调查窗口

在这个窗口内,能够经过双击或按 F2 键,然后输入咱们想调查的变量或寄存器的姓名,后边就会显现出它的数值,这个功用在咱们后边的调试程序中比较有用,咱们先了解一下。
来历;21ic

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/343876.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部