打印

请教下关于keil仿真器的一个问题

[复制链接]
882|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzcook|  楼主 | 2019-5-13 20:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

我在keil这样写验证这个延迟函数的时间
设置好这三个


请教下各位在仿真器中,这样测试出来的时间是否准确

TIM截图20190513200308.png (11.78 KB )

TIM截图20190513200308.png

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2019-5-14 08:35 | 只看该作者
标准的51(12周期的)是准确的,其它的不好说,有些准,有些不准

使用特权

评论回复
板凳
datouyuan| | 2019-5-14 11:52 | 只看该作者
标准的51(12周期的)是准确的.
你用的芯片可能是1T的,应该是仿真的1/12,约0.5ms。

另外这种延时会由于中断处理,会有很大的误差。

使用特权

评论回复
地板
yzcook|  楼主 | 2019-5-14 16:07 | 只看该作者
datouyuan 发表于 2019-5-14 11:52
标准的51(12周期的)是准确的.
你用的芯片可能是1T的,应该是仿真的1/12,约0.5ms。

好的 谢谢 麻烦再问下
void        delay(uint x)
{
        uint i;
        for(i=0;i<x;i++)
        ;
}
这个延迟函数  如果是delay(6000)
怎么能直接算出是延迟了多久呢
晶振是18.432 。单片机是1T。

使用特权

评论回复
5
ayb_ice| | 2019-5-14 16:45 | 只看该作者
yzcook 发表于 2019-5-14 16:07
好的 谢谢 麻烦再问下
void        delay(uint x)
{

看反汇编,计算指令执行次数

还有一个简单的方法,将定时器设置为16位模式,
关中断
调用前开定时器(并清零)
调用后关定时器,相减。。。

使用特权

评论回复
6
datouyuan| | 2019-5-17 12:01 | 只看该作者
yzcook 发表于 2019-5-14 16:07
好的 谢谢 麻烦再问下
void        delay(uint x)
{

可以直接算。
你参考下我的帖子。
给大家提供一个51的软延时例程. - 侃单片机论坛,人气火爆单片机论坛 - 中国电子网技术论坛  https://bbs.21ic.com/icview-1610434-1-1.html

使用特权

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

本版积分规则

28

主题

84

帖子

0

粉丝