• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于延时的一些问题

瞎折腾 2016-09-09 浏览量:770
本帖最后由 瞎折腾 于 2016-9-9 16:44 编辑

延时程序相信都不陌生,但是stc的单片机的在不是1T的情况下它的延时是不能通过keil观察的。现在官方的软件里有一个延时计算器,但是为什么它的延时出来是下面这样的呢?

void Delay10000us() //@11.0592MHz
{
unsigned char i, j;

i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
有的都是while,但是一般的都是用for如下面这样的,

Void delay500ms()
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
两种函数都是延时的,只是用的语句不一样,在keil中验证过for的延时感觉不能确定,是不是while这种函数还好计算时间啊?问什么官方要用人们不经常用的函数呢?

1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 要看反汇编的,看看汇编,是不是生成 的不同呢?
    • 发布于 2016-09-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7

  • 我真心测过的,你不信试一下延时在keil上显示的延时,到芯片里就不行了!提别是iic这种需要时序的程序
    • 发布于2016-09-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 确定好机器周期,用for、while延时没啥差别吧,不用管Keil中显示的,那个跟设置有关,不确定Keil中是按照1T还是12T来计算的,自己实际计算对了就行。
    • 发布于2016-09-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 软件延时这种事情,还是要借助示波器看才准。并且是要在无OS、优化等级不变的情况下。
    • 发布于2016-09-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于延时的一些问题