使用不同的芯片会用到不同的指令集,同一条指令运行所需的时钟周期也是不一样的,即便源代码完全一样生成的hex文件也一样的情况下,使用不同的单片机芯片使用完全相同的延时函数,具体的延时时间也会有差别的。以STC单片机为例,他的指令集就分Y1,Y3,Y5,Y6四种,我们常用的STC89C52RC采用的就是Y1指令集,而STC8F1K08采用的就是Y6指令集。以同样的一条指令NOP为例 STC89C52RC需要12个时钟周期 而STC8F1K08只需要1个时钟周期,这四种指令集速度是不一样的。所以楼主问的当i=1时为什麽等于10us? 真的没法说,因为不知道你指的是什么型号的单片机。你必须说出你的型号,才好针对具体问题具体分析。
以下附图说明各个指令集所需时钟周期(详情请看STC-ISP软件,截图只是其中一部分,说明相同指令在不同指令集下所需时钟周期是不一样的)
STC89C52RC采用的是Y1指令集,他的延时函数 i=1是延时7us 真找不到你说的 10us的,这里还多执行了一个i=1呢,想一想什么芯片比STC89C52RC
还慢呢?想不出来啊!
|