如何严格1秒点亮一次

单片机教程网 2009年11月26日

      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的要方便和精确一些.