标题:
这个延时怎样理解?大神们。
[打印本页]
作者:
李仲豪
时间:
2017-8-16 15:28
标题:
这个延时怎样理解?大神们。
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
作者:
Lemon_He
时间:
2017-8-16 16:33
这种延时就是通过大量的自减操作来占用MCU的时钟周期,从而延迟后面程序的执行,在不需要精确延时的时候可以使用,另外这种办法和主频有关,比如36MHz、72MHz的单片机时钟周期是不同的,所以同一条指令运行花的时间也不一样,在其他主频的板子上延时,参数要重新测。
作者:
我爱面包
时间:
2017-8-16 16:50
t自减,t--为真时都执行while循环,知道t--小于0
作者:
sgq657785
时间:
2017-8-16 18:32
--t是t先减一再判断T是不是1,t--是先判断再减一
作者:
i123
时间:
2017-8-16 20:08
谁便一本单片机入门书籍都有讲吧,还需要发帖吗?世上有百度和谷歌....
作者:
宏图物业2011
时间:
2017-8-17 21:36
这是两个延时函数,其中第1个延时函数的参数是t,而第2个演示函数的变量t是指while(t--),只有当t--不为0时才调用第一个延时函数。
作者:
951014035
时间:
2017-8-18 08:38
通过循环自减来占用cpu工作。从而来实现延时。根据指令执行的周期有关
作者:
伟大的科长
时间:
2017-8-18 09:15
其实用定时器T0产生标志位,主函数根据时间标志位做相应的动作,单片机不用为延时停在哪里,响应更快,根本不用delay这种写法。
void main()
{init();
while(1)
{if(time_flag==10)
{time_flag=0;
key_scan();
i++;
}
}
}
void T0_time() interrupt 1
{ TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
time_flag++;
}
作者:
garonleo
时间:
2017-8-18 10:25
相当于编写了一个递减计数器,每递减一次耗时一个指令周期,通过设置递减数值来实现不同的延迟时间!
作者:
趣多多
时间:
2017-8-18 22:24
软件延时不够准确,而且可移植性太差,具体延时多久要看你的时钟频率
作者:
转换zai
时间:
2017-8-18 22:46
这个简单啊,应该是51单片机的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1