liuyang21168 发表于 2023-11-21 19:23:14

while (--k)什么时候结束?

哪位高手知道:
int k = -1;

while (--k);
这个循环什么时候结束?

jwd 发表于 2023-11-21 20:47:26

直接结束吧

liuyang21168 发表于 2023-11-23 22:35:37

suncat0504 说的非常正确,看看 stc-isp-v6.92G.exe 给出的软件延时函数,犯了非常低级的错误,到了这个版本还没有改正,大家看看这个函数能延时 20ms 吗?

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

        i = 216;
        j = 37;
        do
        {
                while (--j);
        } while (--i);
}

gentleman 发表于 2023-11-24 08:33:02

liuyang21168 发表于 2023-11-23 22:35
suncat0504 说的非常正确,看看 stc-isp-v6.92G.exe 给出的软件延时函数,犯了非常低级的错误,到了这个版 ...

int 型的-1 在内存以补码形式存储   是0xffff
当它减到0循环就结束了
---------------------------------------------------------------
ISP 的延时函数没问题。
应该是你的理解存在有误的地方





stb988 发表于 2023-11-24 09:15:02

学习中

liuyang21168 发表于 2023-11-24 20:19:09

明白了,也就是说,第一次让 while(--j)循环37次,以后让 while(--j)循环255次。

hustc 发表于 2023-12-3 09:53:47

数据为正执行,为负退出

rengran 发表于 2023-12-3 12:20:06

根本一次循环都进不去,即使int k=1都进不去循环

rengran 发表于 2023-12-3 12:23:58

liuyang21168 发表于 2023-11-23 22:35
suncat0504 说的非常正确,看看 stc-isp-v6.92G.exe 给出的软件延时函数,犯了非常低级的错误,到了这个版 ...

大约2.9ms吧

zhudean11 发表于 2024-2-23 09:46:52

gentleman 发表于 2023-11-24 08:33
int 型的-1 在内存以补码形式存储   是0xffff
当它减到0循环就结束了
--------------------------- ...

{:4_250:}
页: [1] 2
查看完整版本: while (--k)什么时候结束?