在单片机c语言中执行一个 i++;语句需要多少时间?和执行一个空语句 ;是不是一样的?

我在18B20程序中写时序时用 ;代替了i++;语句后发现18B20不能正常运行(其他没变),我知道i++;是起到廷时的作用,但不知道它是延时多少的,为什么用 ;代替了就不行了。执行 ;与执行i++;用的时间是不是不一样的?他们之间有什么区别?哪位大哥可否告知一下,非常感激,谢谢了!

执行i++;用的时间比执行;的时间长很多,应为执行;不要时间,或者说;这行语句在转成会汇编是会被省略掉,而执行i++需要好几个单片机时钟周期,具体要多少个跟编译器和i的大小和精度有关。其实比较保险的方法是在单片机c语言中镶嵌汇编程序段进行延迟,这样比较简单,而且准确。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-25
用 ;代替了i++; 相当删除这条指令.

你的 i 在那个程序中应当是有用的.如果它的值不增加, 程序就一直没法运行结束.相当于死循环了.

可以把那个子程序发我email cj800525@sina.com
帮修改好发回你.
第2个回答  2008-11-25
如果我记得没错,不加i++是死循环;i在范围之内(如1000000)加上i++ 才是延时作用。

...i++;语句需要多少时间?和执行一个空语句 ;是不是一样的?
执行i++;用的时间比执行;的时间长很多,应为执行;不要时间,或者说;这行语句在转成会汇编是会被省略掉,而执行i++需要好几个单片机时钟周期,具体要多少个跟编译器和i的大小和精度有关。其实比较保险的方法是在单片机c语言中镶嵌汇编程序段进行延迟,这样比较简单,而且准确。

单片机c语言程序中 一个语句占用多少机器周期?
那个声明,要看在什么地方,是全局声明,还是局部声明,是不一样的。如果是局部变量赋值语句,1个时钟周期就够了(偶数地址的,如果是奇数地址好像是3个的)。整数加减法占3个时钟周期,乘法有120多个时钟周期,除法一般是160多个时钟周期。(我说的不一定很准,不过不会差多少)while循环我不知道。

请问单片机c语言编程里的nop()含义是什么?
执行一条空指令,占执行一条指令的执行时间,一般用来精确延时.不同的nop时间是不一样的,和晶振有关.不同的单片机是时间是不一样的,需要用公式计算,有专门的软件。。。

我在学单片机C语言,其中有延时语句,请问for(i=0;i<120;i++);这个语...
用12MHz的晶振的话,其延时大概是1ms。其实for (i=0;i<124;i++);更接近1ms。

C语言的for循环中执行一次需多少机器周期?
机器循环,当然只是在单片机中,不同的单片机使用不同的编译软件,最终都转换成汇编,把机器代码烧录成单片机。不同的编译软件可以用不同的方式编译语句。以keil为例。(我= 0;我< 1;N + +我+ +);(I, n是char或unsigned char)赋值语句(I=0)有两个机械循环,一个判断语句(I <1) 4个机械...

在C\/C++中,一般for循环中执行一次需要多少时间?
执行的速度是和平台有关的,没有一个确切的规定,就如同同一个引用程序在P4的电脑上和P2的电脑上运行所需要的时间是不同的一样。你需要了解很多方面的只是,首先,你得知道目标平台处理器的确切主频,即多少MHZ。还要了解编译器会将这些代码编译成多少条机器指令,并了解这些机器指令的执行周期。例如12M...

c语言的问题
for (i=0;i<10000;i++);这里的for(;;)后边是个分号,是它后边第一条语句结束的标志。分号前没有内容,代表一个空语句。所以这句话的意思也就是将空语句执行10000次。不做实际事情,就只是循环而已。如果自己写程序的时候要注意,不要多加分号,免得程序出错,编译还能通过。难以发现。

c语言中的空语句
所谓的空语句就是说没有执行代码,只有一个语句结束的标志:分号 例如:int a = 1;1 while(1)2 { 3 ;4 a++;5 6 if(a == 10)7 break;8} 第三行就是空语句,当程序执行到第三行的时候,什么都不做,继续往下执行第四行,空语句不会影响程序的功能和执行顺序,第五...

单片机执行一条for语句的时间
你理解错汇编语言 和 C 语言 一条语句执行时间的意思。汇编语言一部分指令,执行一次确实是1US,但C语言不是,C语言的语句不是等价于汇编语言的,C语言的每条语句可能等价于汇编语言的好几句。换算关系不是简单的看有几条语句。精确的C延时都是汇编写个小延时,用C在外面嵌套即可。1MS 是因为你把...

在C\/C++中,一般for循环中执行一次需要多少时间?
而且for循环的运行时间还需要看你的for循环中包含的语句数。一般来说,12M晶振的计算机每执行一个基本语句所花的时间大致是10^(-8)s,也就是1亿次执行约需1秒的时间。所以对于12M晶振的计算机,一次for循环执行的时间约等于:(循环包含语句执行时间单位+8)除以1亿(秒)。

相似回答