專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實(shí)例 >> 瀏覽文章

用定時器方式控制LED燈,亮1秒滅1秒

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2012年02月15日   【字體:
//*f=6MHZ,定時器0以工作方式2(自動重裝8位定時器模式)、查詢方式產(chǎn)生100us定時,
//并在P0.0輸出周期為2s的連續(xù)方波r控制LED燈,即亮1s滅1s*//
 
#include<reg52.h> 
sbit d1=P0^0;
void timer();
unsigned int num,tt;
void main()
{
    TMOD=0X02;  //調(diào)置工作方式//
    TH0= 0Xce; //設(shè)初值
    TL0=0Xce;
    IE=0X00;  //關(guān)中斷
    TR0=1;  //定時器啟動     
    
   while(1) //大循環(huán)
  {
  
    if(num==10000) //必須加此大循環(huán),否則程序從頭開始,所有變量均復(fù)位,
                      //d1的值保持不變,因?yàn)槭冀Knum到此都為0 //
     d1=!d1;    // 也可將此三句放到定時程序后,這樣,定時程序過后,num值為10000,
		//即達(dá)到要求定時時,(并沒有復(fù)位,因?yàn)槌绦驔]執(zhí)行完)//
  num=0;    //  之后再輸出d1就會按要求變化//
   
   while(num<10000)//100us定時程序
     {
       if(TF0)//查詢100us定時是否到?//
    timer();
    
      }
    }
 
}
 void timer()
  { 
      TF0=0; //查詢方式必須軟件清零,否則TF一直溢出為1,計時只在第一次準(zhǔn)確//
   num++;
  }
關(guān)閉窗口

相關(guān)文章