C51设计,单片机晶振为11.0592MHz。P1.5口每1秒钟输出一次高电平或低电平,但高低电平时长不一样。还请各位高手帮我改进一下。
我也采用过for语句,但是设计不成严格的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--);
}
}
-----------------------
版主回复:
你上面这个延时是非常不精确,具体你可以看keil 里面的汇编文件就可分析出原因来,本站曾经发表过一篇精确延时的文章,希望对你有帮助 http://www.51hei.com/mcu/696.html,另外使用定时器也是非常简单的.
一般如果是用循环延时使用12M的晶振要方便些,如果是定时器则是用11.0592的要方便和精确一些.