举例:(单片机:老板;外设:员工;)
老板让员工去买东西:买东西是需要时间,
假设只要1min,但是这1min做不了
其他事,只能干等着!
假设需要30min,可以趁着30min开个会,也可以干等着!
所以,单片机可以按需延时。
延时的作用就是让数据正确处理。CPU速度来能多快取得I0口状态就多快取,而是CPU程序按指定时间间隔取值。比如CPU速度为1微妙可以处理一条语句,你刚取完当前10口状态,如果没有延时处理,在循环处理过程中立即又去取当前10口状态作为下一个Bit位的数据。
两者之间才间隔CPU的1微妙,这样不就出错了吗?因为协议约定为104.166...微妙,所以要得到正确的数据需要让取下一个10状态的处理过程等待104.166...微妙后再开始取值才正确,这时用延时就合适了。
扩展资料:延时函数编写分析
clock()函数返回程序从开始执行到函数执行时所经过的时间,一般经过
1ms / CLOCK_PER_SEC ,clock()函数的返回值会增加1 。。
CLOCK_PER_SEC 为time.h文件中定义的宏,每个编译器都不一样。。
TC中这样定义: #define CLOCKS_PER_SEC 18.2
VC/BCC中这样定义: #define CLOCKS_PER_SEC 1000.0
现在分析函数的执行过程,函数传过来的是秒数,但是函数需要clock函数来延时,所以需要把秒数转化成 sec*CLOCL_PER_SEC,才能和clock函数返回值作比较。。
延时函数是所有单片机程序中不可缺少的,单片机的速度相对很多器件来说已经很高了,必须加延时才能匹配,如液晶屏1602,送一个字符或命令后,必须有ms级延时,才能送下一个字符数码管扫描显示,每点亮一个数码管也要延时保持一会儿,还有一些短的延时,如模拟SPIJ时钟,只用2 个空 *** 作语句就解决了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)