对for 循环的 编译,不同编译器的编译结果不尽 相同;对不同 单片机系列,编译结果也不尽相同。
以 标准51单片机,KEIL 为例:(已知12MHz,12T时钟模式,一个机械周期 t 则为 1us)
一条 赋值语句(count=1),2个机械周期 t;一条判断(C>0)4t;一条自减(C--) 1t;一条空语句 (nop)1t(不是空函数,是 空语句);
第一个 for 循环:
①执行 赋初值 2t,②判断 4t,③执行空语句 1t,④执行自减 1t,⑤执行判断 4t,结束。
共计 12 个机械周期,12us;
第二个for 循环:
①执行一次 赋值 2t;
②执行 30次 判断,4t×30=120t;
③执行 30次 空语句,30t;
④执行 30次 自减,30t;
⑤又执行 1次判断 4t,结束。
共计 186 机械周期 186us。
C语言的延时时间,是算不出来的。
只能自己摸索,自己记住,每个参数,代表多少时间。
C语言,给了编程者,自由发挥的空间。
每个人,都有自己的一套东西。
看别人的C程序,呵呵,都是密码。
其实,都是用来忽悠老板的。
延长多少与单片机的兆赫有关,不同的兆赫速度不同