延时函数提问(非常新的入门人)

img


请问一下为什么这个STC-ISP生成的代码可以达到12MHz延时500ms,具体过程是什么

这是个软件延时程序,首先是k自减为零退出后开始j自减,最后i自减程序计算出程序总共执行次数,与系统主时钟12M进行运算约等于500ms,软件延时有时候还是不准确的,如果要精确延时建议用定时器计数功能

你这外层是不是还有代码或循环啊。
这个do循环有问题吧,j,k循环前没有复位为0,那就是会从负数再开始啊。i,j,k都是什么变量类型啊?

img


void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;

_nop_();
i = 4;
j = 205;
k = 187;
do
{
    do
    {
        while (--k);
    } while (--j);
} while (--i);

}