打印

delayms(1)延时不对

[复制链接]
楼主: yufe
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yufe|  楼主 | 2021-8-8 21:12 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
/**********************************************************
延时函数
**********************************************************/
void delayms(unsigned int ms)
{
unsigned char k;
while(ms--)
{
for(k = 0; k < 114; k++);
}
}

请问:delayms(1)怎么是延时了1ms呢?不应该是2*114us么?

使用特权

评论回复
沙发
yufe|  楼主 | 2021-8-8 21:24 | 显示全部楼层
晶振是12M的
一条for语句执行时间是2微秒,114次不应该是228微秒么?
但实际执行后确实1000微秒
为什么呢?

使用特权

评论回复
板凳
yufe|  楼主 | 2021-8-8 21:27 | 显示全部楼层

keil软件中能看到单条语句执行的时间么?
我原来用的万利的仿真器,很方便,可以看到单条语句执行的时间
在keil中能看到单条语句的执行时间么?

使用特权

评论回复
地板
yufe|  楼主 | 2021-8-8 21:35 | 显示全部楼层
还有吗

使用特权

评论回复
5
yufe|  楼主 | 2021-8-8 21:42 | 显示全部楼层

请看一下这个小的延时函数
/*************延时函数*************/

void delay(void)
{
  unsigned char i,j,k;

  for(k=10;k>0;k--)

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

  for(i=100;i>0;i--);
}

//注:1、延时时间大约为i*j*k*2us。
//    2、i取值越大,k取值越小时间越准。
//    3、晶振为12M。

这是我当时实践过的,误差不是很大
但如果像你的公式好像就差的太大了

使用特权

评论回复
6
yufe|  楼主 | 2021-8-8 22:19 | 显示全部楼层
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

983

主题

10170

帖子

1

粉丝