微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51学习之延时程序

51学习之延时程序

时间:11-23 来源:互联网 点击:
延时本是一简单的事。在上学时也学过,上班后也见人家用。就是一简单的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级人眼才能识别。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top