延时本是一简略的事。在上学时也学过,上班后也见人家用。便是一简略的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级人眼才干辨认。