
51单片机中,我用KEIL仿真,发现用WHILE(),执行一个循环要9微秒,对吗
51单片机中,我用KEIL仿真,发现用WHILE(),执行一个循环要9微秒,对吗悬赏分:0-离问题结束还有14天23小时#include<reg52.h>voidmain...
51单片机中,我用KEIL仿真,发现用WHILE(),执行一个循环要9微秒,对吗
悬赏分:0 - 离问题结束还有 14 天 23 小时
#include<reg52.h>
void main()
{int a=1;
P1=0xfe;
while(a--);
}
就执行1个WHILE就9微秒,对吗,我用12M晶振仿真的,怎么要这么长周期??不是一个指令一般不要这么多周期的吗
有大侠帮忙仿真一下么?? 展开
悬赏分:0 - 离问题结束还有 14 天 23 小时
#include<reg52.h>
void main()
{int a=1;
P1=0xfe;
while(a--);
}
就执行1个WHILE就9微秒,对吗,我用12M晶振仿真的,怎么要这么长周期??不是一个指令一般不要这么多周期的吗
有大侠帮忙仿真一下么?? 展开
4个回答
意法半导体(中国)投资有限公司
2023-06-12
展开全部
展开全部
这个差不多的,while指令编译成机器码后是不止一条指令的,而且还不只是单周期指令,几条指令下来,12M晶振如果采用12T模式的话,这个结果差不离。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2025-08-04 广告
联系方式:13671592388上海实邦电子科技有限公司是一家专业电子产品开发与ODM/OEM/电子制造服务(EMS)企业,具有多年基于消费电子产品、工业自动化产品、机电控制产品的PCBA开发与生产经验,更有多年的单片机开发及工业控制电路设...
点击进入详情页
本回答由上海实邦电子科技提供
展开全部
应该没有这么长时间,也就2微秒左右,一个机器周期为12个晶振周期也就是1微秒,你的while循环只有2次,也就2微秒左右。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是要用延时功能吧,建议单独写一个程序,然后调用就可以了,这种方法不够精确。
给你提供一个比较精确地延时子程序,12M晶振的:
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{
for(j=0;j<115;j++)
{
;
}
}
}
给你提供一个比较精确地延时子程序,12M晶振的:
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{
for(j=0;j<115;j++)
{
;
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编程这东西电脑说了算,只能根据电脑给出的结果分析。电脑说用了9微妙,就是用了这么多。需要延时就用2楼的程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询