单片机C语言中执行一次: i=1; while(i--); 需要几个指令周期啊?
如果是12M的晶振执行一次上述指令大约需要多长时间?把上述指令改为:for(i=1;i>O;i--);结果一样吗?谢谢了!我用的是AT89S52单片机...
如果是12M的晶振执行一次上述指令大约需要多长时间?把上述指令改为:
for(i=1;i>O;i--);
结果一样吗?谢谢了!
我用的是AT89S52单片机 展开
for(i=1;i>O;i--);
结果一样吗?谢谢了!
我用的是AT89S52单片机 展开
2015-08-07
展开全部
需要几个指令周期与i的数据类型有关;
参考如下:
int型2字节
9: while(i--);
C:0x000F EF MOV A,R7 1个指令周期
C:0x0010 1F DEC R7 1个指令周期
C:0x0011 8E83 MOV DPH(0x83),R6 2个指令周期
C:0x0013 7001 JNZ C:0016 2个指令周期
C:0x0015 1E DEC R6 1个指令周期
C:0x0016 4583 ORL A,DPH(0x83) 1个指令周期
C:0x0018 70F5 JNZ C:000F 2个指令周期
9*(r7+1)+(256*9+1)*r6+1个指令周期
char型1字节
12: while(a--);
C:0x0027 AF05 MOV R7,0x05 2个指令周期
C:0x0029 1D DEC R5 1个指令周期
C:0x002A EF MOV A,R7 1个指令周期
C:0x002B 70FA JNZ C:0027 2个指令周期
6*(r5+1)个指令周期
此应用每个指令周期1us。(1e-6s)
已上是keil C 4的编译器的结果。
参考如下:
int型2字节
9: while(i--);
C:0x000F EF MOV A,R7 1个指令周期
C:0x0010 1F DEC R7 1个指令周期
C:0x0011 8E83 MOV DPH(0x83),R6 2个指令周期
C:0x0013 7001 JNZ C:0016 2个指令周期
C:0x0015 1E DEC R6 1个指令周期
C:0x0016 4583 ORL A,DPH(0x83) 1个指令周期
C:0x0018 70F5 JNZ C:000F 2个指令周期
9*(r7+1)+(256*9+1)*r6+1个指令周期
char型1字节
12: while(a--);
C:0x0027 AF05 MOV R7,0x05 2个指令周期
C:0x0029 1D DEC R5 1个指令周期
C:0x002A EF MOV A,R7 1个指令周期
C:0x002B 70FA JNZ C:0027 2个指令周期
6*(r5+1)个指令周期
此应用每个指令周期1us。(1e-6s)
已上是keil C 4的编译器的结果。
展开全部
编译后来数数汇编代码就好
补充一下:楼主可能是在做时序要求很严的程序吧,可以考虑嵌入汇编,这样很方便就搞定了
补充一下:楼主可能是在做时序要求很严的程序吧,可以考虑嵌入汇编,这样很方便就搞定了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不同的单片机各不一样。要看你用的是什么单片机,再根据C语言变成汇编后的语句决定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不同的单片机各不一样。要看你用的是什么单片机,再根据C语言变成汇编后的语句决定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是12M的晶振执行一次上述指令大约需要多长时间?把上述指令改为:
for(i=1;i>O;i--);
for(i=1;i>O;i--);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询