×
单片机 > 单片机程序设计 > 详情

51学习之延时程序

发布时间:2020-09-01 发布时间:
|
延时本是一简单的事。在上学时也学过,上班后也见人家用。就是一简单的for循环啊!
可是我同样写了。可是不能延时啊。有这样的么?
上网小查了下说是:你定义参数是char型,就只能到256;是int 型,就取到65535.
问题出来了,我想延时长点,定义的int,直接填了150000.无知是可怕的啊!吸取教训,改到了50000行了吧?
一运行,还是不行!
没办法,只好调人家原程序了。人用的是两级for循环,50000*3 。一试成了。
再看自己的,还是不行。
照人家的改自己的程序,不行,不行,还是不行。
一个字一个字对,发现问题了,人家定义uint ,我的是int ,就这吗?可是,可是,没多大差别吧?算了,改改试试。一改unit ,成了。
看来问题就是这了,仔细想,终于想明白了这里头的玄机。
uint  0-65535  int -32767-32768  我用的int ,我给人填数50000,人都不知这是啥,还能延时才奇怪了!改成unit,自然成了。
 
程序如下:
Delay()
{int i,j; 
for(i=0;i<32000;i++);
}
 
从网上看的:一般延时us,只用单个for,一般ms级的都用两个for就OK了。要是精确定时,就要用定时器了。我自己总结了下:单for,写到5000,还能看到灯闪;最在写到32000,灯闪,能知道,但是看不到灭的状态。双for,写到7000*3,差不多就可看到灭的状态。如果,执行一句要1us,大概就是20ms.至少要到ms级人眼才能识别。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法