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,跪求大神解答 展开
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,跪求大神解答 展开
3个回答
展开全部
你觉得一个for循环所有部分是一个指令周期吗,里面有个三个指令
追问
每次循环j<1140和j++各执行一次,那就是每次循环执行2次,也不应该是1140啊,,,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机的精确延时不是应该用中断吗?
更多追问追答
追问
这是用于流水灯的粗略延时
追答
C语言是通过编译链接才能执行的,中间有很多复杂的步骤,和单片机的频率没有明确的关系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询