AVR单片机毫秒和微秒延时程序为什么不同?
voiddelay_us(inttime)//延时微秒级函数{do{time--;}while(time>1);}//==========================...
void delay_us(int time) //延时微秒级函数
{
do{
time--;
}
while(time>1);
}
//==============================================================================
void delay_ms(uint time) //延时毫秒级函数
{
while(time!=0)
{
delay_us(1000); time--;
}
}
两次延迟函数中,为什么形参不是一个数据类型呢?为了扩大设定范围吗?还有个疑问就是判断跳出循环的语句为什么一个用time>1而另一个用time!=0呢。非常感谢,找了很久没有解释这个的,大家都默认了。 展开
{
do{
time--;
}
while(time>1);
}
//==============================================================================
void delay_ms(uint time) //延时毫秒级函数
{
while(time!=0)
{
delay_us(1000); time--;
}
}
两次延迟函数中,为什么形参不是一个数据类型呢?为了扩大设定范围吗?还有个疑问就是判断跳出循环的语句为什么一个用time>1而另一个用time!=0呢。非常感谢,找了很久没有解释这个的,大家都默认了。 展开
3个回答
展开全部
从时间上看,如果你要延时2毫秒,delay_ms(2),如果条件是time>1,实际延时1毫秒以后,就退出了,所以要等到0。
至于int和uint是没什么特别含义的,我一般用无符号的。
至于int和uint是没什么特别含义的,我一般用无符号的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,数据类型决定了数据取值的范围,类型不一样那当然是出于取值范围的考虑了。其次控制循环条件不同,这有什么关系呢?只要达到目的就行了,不同的人会有不同的编程方法。你把time!=0,改为time>0,结果也是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询