單片機讓LED燈閃爍的程式怎么寫
uj5u.com熱心網友回復:
設定一個定時器,在中斷處理函式里改變LED燈的狀態就行了。uj5u.com熱心網友回復:
如果你的是交作業的,那就按教科書做,兩種方法,1是用個回圈來延時,時間到了就讓LED埠翻轉一下,再回去繼續下一個延時;2是用中斷,先設定好定時器中斷,時間是“亮”“滅”的時間,中斷服務里給LED埠翻轉,事實上你還可以分別定義“亮”的時間和“滅”的時間的。如果是在實際應用里作為作業狀態燈(俗稱“呼吸燈”),那就稍微巧妙一點,因為呼吸燈的閃爍是表示機器(程式)在正確(或說預知范圍內)運行,一般就尋找一個可用的定時周期源(不用單獨的定時器,節省點資源嘛),掛在那個中斷上,中斷服務里設定一個標志(不要直接翻轉輸出),主程式中查詢這個標志,檢測到后(可以附加一個計數令時間長一些)翻轉埠。這樣的好處是如果程式錯誤地屏蔽了中斷,呼吸燈也會停止閃爍(這時候主程式還在跑的),而如果主程式陷入了某個死回圈(中斷還在),呼吸燈也會停,這樣就更能標定程式的運行狀態了。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
學習了
uj5u.com熱心網友回復:
寫一個while()里面加延時或用定時器uj5u.com熱心網友回復:
/*****************************************************************
LED閃爍的簡單試驗 *****************************************************************/
include <reg51.h> //此檔案中定義了51的一些特殊功能暫存器
/*******延時函式**************************************/
// 定義一個演示函式,定時時間大概為一個ms。
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 100; j > 0; j--);
}
/**************************************************************************/
main()
{
while(1)
{
P2 = 0x00; //置P2口為低電平 led燈點滅
delay(1000); //呼叫延時程式 led持續滅,保持
P2 = 0xff; //置P2口為高電平 led燈熄亮
delay(1000); // 呼叫延時程式 led持續亮,保持
//重復以上陳述句, led燈點亮,保持亮的狀態,熄滅,保持熄//滅狀態 回圈這個4個程序。
}
uj5u.com熱心網友回復:
這個是51的程式,其他單片機邏輯是類似的。uj5u.com熱心網友回復:
學習了
uj5u.com熱心網友回復:
網上例程很多你可以看看uj5u.com熱心網友回復:
贊一個,很實用的轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/143252.html
標籤:單片機/工控
下一篇:BLE中的廣播與掃描狀態
