单片机使用延时程序的缺点是什么?

单片机使用延时程序的缺点是什么?,第1张

-

个人觉得,缺点是工作效率低,浪费资源!

-

举例,你早上7点半起床,你自己都调好闹钟了!还有必要自己亲自去一秒一秒的数吗!

假设现在离你起床还有10小时,折算下来是36000秒-

你觉得用钟表定时闹钟好呢?还是自己一秒一秒的数,一直数够36000秒?

-

答案 当然是用钟表定时闹钟好咯,没必要自己那么累一秒一秒的去数,而且自己还要睡觉,吃夜宵,冲凉等等,哪里有空去专门数那36000秒哦!

-

延时程序就是让CPU单片机的大脑专门去傻傻的数!而定时器就是帮你定时闹钟的一个表!

-

在单片机里,CPU是有很多重要的事等它去做的,比如(洗澡,吃宵夜,约会,睡觉等等),而你却让CPU专门为你数时间,所以浪费大脑资源咯!

-

Python中的sleep函数可以传小数进去,然后就可以进行毫秒级的延时了。

代码如下:

import time

i = 1

while i = 3:

print(i) # 输出i

i += 1

time.sleep(1) # 休眠1秒

例1:循环输出休眠100毫秒

import time

i = 1

while i = 3:

print(i) # 输出i

i += 1

time.sleep(0.1) # 休眠0.1秒

扩展资料

python中 time.sleep()用法:

sleep() 方法暂停给定秒数后执行程序。该参数可以是一个浮点数来表示一个更精确的睡眠时间。

实际中止时间可能不到所请求的,因为任何捕获信号将终止 sleep()接下来执行该信号捕捉的程序。

以下是sleep()方法的语法:

time.sleep(t)

参数 t – 这是要暂停执行的秒数。 返回值:此方法不返回任何值。

你的意思是说为什么delay的时间并不是你传进去的mis。原因应该是如下:

你循环体本身执行的时候就是要时间的。比如

mis 传进来是 2000

忽略到GetCurrentTime等的执行时间

COleDateTime start_time = COleDateTime::GetCurrentTime()

COleDateTimeSpan end_time = COleDateTime::GetCurrentTime() - start_time

while(end_time.GetTotalSeconds() <= (mis/1000)) end_time为0

{

MSG msg

GetMessage(&msg,NULL,0,0) 假设执行时间 100ms

TranslateMessage(&msg) 假设执行时间100ms

DispatchMessage(&msg) 假设执行时间是3000ms

end_time = COleDateTime::GetCurrentTime() - start_time此时end_time就为3200ms

}

所以此时就是一个等待时间久违3200ms,四舍五入的话3seconds

这样就跟你传入的参数2秒不对了。。

关键你是要考虑一些函数的执行时间,同时DispatchMessage是一个同步函数。当前GetMessage得到一个WM_TIMER消息,而窗口处理函数在处理onTimer的时候sleep了5秒,那么这个函数要等5秒才返回。所以你这个delay函数时间肯定是不精确的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7972795.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存