C51設(shè)計(jì),單片機(jī)晶振為11.0592MHz。P1.5口每1秒鐘輸出一次高電平或低電平,但高低電平時長不一樣。還請各位高手幫我改進(jìn)一下。
我也采用過for語句,但是設(shè)計(jì)不成嚴(yán)格的1s輸出一次的方式。
#include<reg52.h>
sbit D1=P1^5;
unsigned int a;
void main()
{
while(1)
{ a=46500;
D1=0;
while(a--);
a=45701;
D1=1;
while(a--);
}
}
-----------------------
版主回復(fù):
你上面這個延時是非常不精確,具體你可以看keil 里面的匯編文件就可分析出原因來,本站曾經(jīng)發(fā)表過一篇精確延時的文章,希望對你有幫助 http://www.torrancerestoration.com/mcu/696.html,另外使用定時器也是非常簡單的.
一般如果是用循環(huán)延時使用12M的晶振要方便些,如果是定時器則是用11.0592的要方便和精確一些.