打印
[技术问答]

51单片机学习笔记(10)——Keil延时软件仿真

[复制链接]
593|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZZY001|  楼主 | 2022-3-23 16:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
C语言编程常用的有4种延时方法:


在某些时候,我们想要知道程序里面的延时函数到底延时多长时间,这时候就可以用Keil软件仿真来实现。

①在keil中编写一个简单的延时应用程序:
#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

void delay(u16 time)
{
        while(time--);
}

void main()
{
        delay(1);
        delay(1);
        delay(1);
}


②点击程序编译按键,编译程序,保证程序能够正常运行,没有报错。

③进入【Options for Target…】,设置【Target】选项中的【Xtal】,根据实际使用的开发板的晶振频率修改该数值,若单片机晶振为11.0592M,则将数字修改为11.0592。我使用的是12M,因此将数值设为12。

④选中【Debug】选项中的【Use Simulator】,即用软件仿真,点击【OK】,完成软件仿真设置。

⑤选择菜单项【 Debug–>Start/Stop Debug Session】,或者点击下图中标注的按钮,就会进入软件仿真窗口。




仿真界面中黄色箭头表示程序当前的位置
⑥我们想要观察C语言代码延时函数的运行时间,在最左侧的那个Registers 的框内有一个【sec】选项,这个就是程序运行的时间。我们单击【RST】复位按键,程序复位,黄色箭头指向程序第一行,sec参数值变为0。

⑦为了观察程序运行的时间,我们对程序中的延时函数设置断点(当程序运行到断点的时候就会停下来),通过观察sec的值来计算得到延时函数的运行时间。(设置断点的方式:移动鼠标在程序左边灰色部分单击)

⑧点击全速运行按键,程序执行到13行,sec参数值变为0.00038900,再点击全速运行按键,程序运行到14行,sec参数值变为0.00041400,再点击全速运行按键,程序运行到15行,sec参数值变为0.000439。(sec单位为秒s)。






分析:程序从13行运行到14行花费的时间是25us,从14行运行到15行花费的时间也是25us,因此,通过软件仿真我们可以知道,延时函数delay(1)运行的时间大致为25us。


使用特权

评论回复
沙发
小灵通2018| | 2022-3-23 20:21 | 只看该作者
看延时的长短了,如果超过10个周期,那就用定时器稳妥。

使用特权

评论回复
板凳
小灵通2018| | 2022-3-23 20:22 | 只看该作者
延时的时间越长用定时器越靠谱,特别短的延时,就是直接跑个空指令。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

60

帖子

0

粉丝