avr单片机delay延时函数问题 100

avr单片机delay延时函数问题8MHz晶振,延时函数如下:voiddelay_ms(uintxms){inti,j;for(i=0;i<xms;i++)for(j=0... avr单片机delay延时函数问题8MHz晶振,延时函数如下:
void delay_ms(uint xms)
{
int i, j;
for(i=0; i<xms; i++)
for(j=0; j<1140; j++);
}
众所周知,8MHz晶振一个时钟周期为1/8us,机器周期为时钟周期12倍,为1.5us,那么运行1ms的时间不是应该为1000/1.5=667吗,为什么这里不是667而是1140,跪求大神解答
展开
 我来答
士温位赋
2020-04-26 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:27%
帮助的人:650万
展开全部
仿真不能当真.你知道是在延时就行了。管它几秒。但是在实际中,最好不要使用delay-ms来延时,这样占用cpu资源太厉害,什么都干不了。特别对时钟要求苛刻的情况下.对这个问题,没有必要扣.在不同的电脑上,不同cpu.你的这个delay时间还不一样呢。不奇怪。因为在调用函数运行比之间循环调用占的时间多.
81...1@qq.com
2017-03-08 · 超过24用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:60.8万
展开全部
你觉得一个for循环所有部分是一个指令周期吗,里面有个三个指令
追问
每次循环j<1140和j++各执行一次,那就是每次循环执行2次,也不应该是1140啊,,,
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_耀哥_
2017-03-08 · TA获得超过453个赞
知道小有建树答主
回答量:1491
采纳率:42%
帮助的人:451万
展开全部
单片机的精确延时不是应该用中断吗?
更多追问追答
追问
这是用于流水灯的粗略延时
追答
C语言是通过编译链接才能执行的,中间有很多复杂的步骤,和单片机的频率没有明确的关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式