单片机用for循环编延时程序时 uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--) 为什么j=110??求助
4个回答
展开全部
这是一个for的嵌套语句,你注意到没有,因为两个语句之间没有分号,所以编译器默认第二个for语句是第一个for语句的内部语句,怎么理解呢?就是说你第一个for中的 i 减1一次,那第二个for中的语句将会执行110次,那么这个110从哪里来呢?其实是根据你所用单片机的晶振频率来计算的,在这个程序当中,单片机的晶振频率应该是11.0592兆Hz,所以第二个for语句执行110次的时间大概就是1ms,(这里涉及到晶振频率和机器周期之间的那几个公式你自己翻翻课本看)乘上第一个for中的 i 的初值就得到你要延时的时间了,如果你要延时1秒,那么你就重新定义 i 的数据类型为unsigned int i,然后j的数据类型不变,给 i 赋值1000即可。
展开全部
看你延时多久,知道了之后还要看你这个“xms”是赋值的多少,然后两重循环数值相乘就是你延时时间。所以“110”就是这两个乘数之一。注意时间单位换算
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照时钟频率可以得出指令周期,这样再计算C编译成汇编后一个循环需要的指令周期数,来计算。一般软件定时都不精确。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实,像这样的问题,做起来麻烦,也简单,我每次都是用示波器测试一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询