<menuitem id="t17lb"><menuitem id="t17lb"><ruby id="t17lb"></ruby></menuitem></menuitem><ins id="t17lb"></ins>
<ins id="t17lb"><i id="t17lb"><progress id="t17lb"></progress></i></ins>
<cite id="t17lb"><i id="t17lb"></i></cite>
<ins id="t17lb"></ins>
<address id="t17lb"><i id="t17lb"></i></address>
<address id="t17lb"><i id="t17lb"></i></address>
<ins id="t17lb"></ins>
<ins id="t17lb"></ins><var id="t17lb"><i id="t17lb"><th id="t17lb"></th></i></var><listing id="t17lb"><i id="t17lb"></i></listing>
<th id="t17lb"><i id="t17lb"><th id="t17lb"></th></i></th>
<del id="t17lb"><i id="t17lb"><listing id="t17lb"></listing></i></del>
<var id="t17lb"><span id="t17lb"><th id="t17lb"></th></span></var><th id="t17lb"><del id="t17lb"></del></th>
(玩電子) 電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

如何嚴格1秒點亮一次

作者:逍遙王   來源:原創   點擊數:x  更新時間: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.ga818.com/mcu/696.html,另外使用定時器也是非常簡單的.

一般如果是用循環延時使用12M的晶振要方便些,如果是定時器則是用11.0592的要方便和精確一些.

發表評論】【告訴好友】【收藏此文】【關閉窗口

文章評論

相關文章

jijzzizz中国版