单片机用for循环编延时程序时 uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--) 为什么j=110??求助

那如果延时1秒,xms也应该等于1000,那怎么乘啊?... 那如果延时1秒,xms也应该等于1000,那怎么乘啊? 展开
 我来答
waqhyn
推荐于2018-04-04
知道答主
回答量:8
采纳率:0%
帮助的人:9278
展开全部
这是一个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即可。
zhouloy
2010-11-21
知道答主
回答量:28
采纳率:0%
帮助的人:45.1万
展开全部
看你延时多久,知道了之后还要看你这个“xms”是赋值的多少,然后两重循环数值相乘就是你延时时间。所以“110”就是这两个乘数之一。注意时间单位换算
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kongrong_1
2010-11-25 · TA获得超过198个赞
知道答主
回答量:203
采纳率:0%
帮助的人:0
展开全部
按照时钟频率可以得出指令周期,这样再计算C编译成汇编后一个循环需要的指令周期数,来计算。一般软件定时都不精确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潇湘电子工程师
2010-11-22 · TA获得超过3703个赞
知道大有可为答主
回答量:4170
采纳率:0%
帮助的人:2354万
展开全部
其实,像这样的问题,做起来麻烦,也简单,我每次都是用示波器测试一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式