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

C語言使用定時器的方法控制LED燈以1S的速度閃亮

作者:李俊軒   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年07月18日   【字體:

   最近因為趕不上提高班的進度,老師給的教程總是斷斷續(xù)續(xù)的,所以我打算跟11月1號通過考試的網(wǎng)友們一起學習,呵呵,這也是我一教訓來著,在三維里學習要堅持一步一個腳印,堅持必有奇跡,但也要跟得上大家,以后再忙也要努力實現(xiàn)計劃了,不能再像這次一樣,因為所謂的考試落下了好幾堂課,不過也沒有關(guān)系,能夠吸取點教訓總是好的。我可以先給自己點時間多學些其它的基礎(chǔ)知識。

今天開始學單片機的計數(shù)器了,呵呵,可能是一直因為用C語言編程序我定時老是定不準的原因,當?shù)弥獙W會定時/計數(shù)器后可以讓單片機C語言定時準確后,我感覺學它真的很有動力,雖然編一個簡單的程序也花了我好長時間,但編出來的感覺卻是那么的爽快,我覺得要學會定時/計數(shù)器,關(guān)鍵是要學會編程控制 TCOM,TMOD,及TH和TL吧。主要是TH和TL的準確運算。還有就是完時以后怎么樣讓其跟循環(huán)語句配合使用。

今天所編的程序是利用單片機定時器控制LED燈以1S的速度閃爍,我的晶振是12MHZ的,首先是讓計時器0.02S進行一次溢出,使TF1=1,其次是利用I++循環(huán)50次,加起來為1S。程序如下:

#include<reg52.h>
sbit LED = P1^2;
void main()
{ unsigned char i;
 TMOD |= 0x10;
 TMOD &= 0xdf;
 TH1 = 0xb1;
 TL1 = 0xdf;
 TCON |= 0x40;
 while(1)
 {
  if(TF1==1)
  {
   TF1 = 0;
   TH1 = 0xb1;
   TL1 = 0xdf;
   i++;
    if(i==50)
    {
     i=0;
     LED=~LED;
    }
   }
 }
}

關(guān)閉窗口

相關(guān)文章