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

用查詢(xún)定時(shí)器0溢出標(biāo)志位的方式實(shí)現(xiàn)LED燈閃爍

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2009年06月21日   【字體:

接下來(lái)幾篇文章,我來(lái)給大家一些單片機(jī)控制led燈的程序,都有詳細(xì)的注釋?zhuān)绣e(cuò)誤的話請(qǐng)大家指點(diǎn)。
用查詢(xún)定時(shí)器0溢出標(biāo)志位的方式實(shí)現(xiàn)LED燈閃爍。
用定時(shí)器0實(shí)現(xiàn)P2_0所接LED燈每60ms亮或滅一次,設(shè)系統(tǒng)晶振為12MHz。該例子中采用查詢(xún)定時(shí)器0溢出標(biāo)志位的方法,若是溢出標(biāo)志位為1,則執(zhí)行P2_0引腳取反的語(yǔ)句,使LED燈閃爍。源程序如下:
//程序出自51hei單片機(jī)
#include "reg51.h"  //頭文件
sbit P2_0=P2^0;    //定義P2_0為P2口的0引腳
void main()  //主函數(shù)
{P2=0xff;   //熄滅所有LED燈
TMOD=0x01;  //定時(shí)器模式1,16位計(jì)數(shù)
TH0=0x15;   //設(shè)置計(jì)數(shù)初值5536,則計(jì)數(shù)值為60000,對(duì)于12M時(shí)鐘,相當(dāng)于60ms
TL0=0xa0;   //設(shè)置定時(shí)器低8位
TR0=1;    //啟動(dòng)定時(shí)器0
for(;;)   //無(wú)限循環(huán)
{if(TF0)  //查詢(xún)定時(shí)器0溢出標(biāo)志位,如果溢出標(biāo)志位為1,則執(zhí)行如下語(yǔ)句
{TF0=0;   //清零標(biāo)志位
TH0=0x15; //重置定時(shí)器高8位
TL0=0xa0; //重置定時(shí)器低8位
P2_0=!P2_0;  //將P2_0引腳取反,LED燈閃爍
}}}

--
P3.4~7引腳相連的按鍵控制P2.0~3連接的LED燈。
#include <AT89X51.H>
unsigned char temp;   //定義變量temp
void main(void)      //主函數(shù)
{
while(1)    //無(wú)限循環(huán)
{temp=P3>>4;  //將P3口右移4位
temp=temp | 0xf0;  //將P3口的低4位送temp
P2=temp;           //將P3口的低4位送P2口
} }

關(guān)閉窗口

相關(guān)文章