void delay()
{
unsigned int d=1000;
while(--d){;}
}
此函数在4M晶体下产生10003us的延时,也就是10MS。问题1:我刚算了一下他应该执行了999条指令,1条单周期的指令也才1US,那就是999us,为什么会有10ms的延时?
1:for(x=100;--x;){;} : 2: for(x=0;x<100;x++){;} 2句话相同
第一句:X的值范围是不是 1~99?为什么?这么算的。第二句:X的范围是不是0~99?为什么?这么算的。我知道符号在前在后的区别。2句话应该是不一样的才对啊!
知道了 你知道PIC Sportwatch 准不准
追答一次循环后才减一。
追问跑表准不准 我看时序大概算一下
...大哥们,别跑题啊,只要回答就可以了,详细点啊,我比较傻
问题1:“我刚算了一下他应该执行了999条指令”因为你算错了。延时时间是由产生的汇编代码所决定的,C语言语句只是个假象,千万不要以为C语言一行就是一条指令!此处由于涉及到双字节减法,因此会有额外的判断,编译结果每次循环耗费几十个周期毫不奇怪。问题2:前一句x从100开始递减,递减至1时退出循...