第二節 delay 延時實現LED燈的閃爍。

2021-07-25 18:49:04 字數 1961 閱讀 1003

第二節:delay()延時實現led燈的閃爍。

開場白:

上一節鴻哥列出了初學者七大誤區,到底什麼才是初學者關注的核心?那就是裸機奔跑的程式結構。乙個好的程式結構,本身就是乙個微型的多工作業系統。鴻哥教給大家的就是如何編寫這個簡單的作業系統。在main函式迴圈中用switch語句實現多工並行處理的任務切換,再外加乙個定時器中斷,這兩者的結合就是鴻哥多年來所有實戰專案的核心。鴻哥的程式結構看似簡單,實際上就是那麼簡單。大家不用著急,本篇**文章現在才正式開始,這一節我要教會大家兩個知識點:

第一點:鴻哥首次提出的「三區一線」理論。此理論把程式**分成三個區,乙個延時分割線。

第二點:delay()延時的用途。

(1)硬體平台:基於朱兆祺51微控制器學習板。

(2)實現功能:讓乙個led閃爍。

(3)源**講解如下:

#include "reg52.h"

void initial_myself();    

void initial_peripheral();

void delay_short(unsigned int uidelayshort);

void delay_long(unsigned int uidelaylong);

void led_flicker();

/* 注釋一:

* 吳堅鴻個人的命名風格:凡是輸出字尾都是_dr,凡是輸入字尾都是_sr。

* dr代表drive驅動,sr代表sensor感應器

*/sbit led_dr=p3^5;  

void main()  //學習要點:深刻理解鴻哥首次提出的三區一線理論

主函式迴圈區屬於鴻哥三區一線理論的第三區,

* 專門用來編寫被迴圈掃瞄到的非中斷應用程式

*/while(1)

}void led_flicker() //led閃爍應用程式

/* 注釋七:

* delay_short(unsigned int uidelayshort)是小延時函式,

* 專門用在時序驅動的小延時,一般uidelayshort的數值取10左右,

* 最大一般也不超過100.本例為了解釋此函式的特點,取值範圍超過100。

* 此函式的特點是時間的細分度高,延時時間不宜過長。uidelayshort數值

* 的大小就代表裡面執行了多少條空指令的時間。數值越大,延時越長。

* 時間精度不要刻意去計算,感覺差不多就行。

*/void delay_short(unsigned int uidelayshort) 

}/* 注釋八:

* delay_long(unsigned int uidelaylong)是大延時函式,

* 專門用在上電初始化的大延時,

* 此函式的特點是能實現比較長時間的延時,細分度取決於內嵌for迴圈的次數,

* uidelaylong的數值的大小就代表裡面執行了多少次500條空指令的時間。

* 數值越大,延時越長。時間精度不要刻意去計算,感覺差不多就行。

*/void delay_long(unsigned int uidelaylong)}}

void initial_myself()  //初始化微控制器

void initial_peripheral() //初始化外圍

總結陳詞:

鴻哥首次提出的「三區一線」理論概況了各種專案程式的基本分割槽。我後續的程式就按此分割槽編寫。

delay()函式的長延時適用在上電初始化。

delay()函式的短延時適用在驅動時序的脈衝延時,此時的時間不能太長,本例中暫時沒有列出這方面的例子,在後面的章節中會提到。

在本例源**中,在led_flicker()閃爍應用程式裡用到的兩個延時delay,它們的延時時間都太長了,在實戰專案中肯定不能用這種延時,因為消耗的時間太長了,其它任務根本沒有機會執行。那怎麼辦呢?我們應該如何改善?欲知詳情,請聽下回分解-----累計主迴圈次數使led燈閃爍。

(未完待續,下節更精彩,不要走開哦)

彙編 第二節

第二節 cpu主要有有運算器,控制器,暫存器,三部分組成 8086 cpu有14個暫存器,如ax,bx,cx,dx,si。8086所有暫存器都是16位的,可以存放2個byte即位元組,16位二進位制數 所能存放的最大數值是 11111111111 2 16 1 從0開始,所以 1嘛 通用暫存器為4個...

函式第二節

coding utf 8 1.定義乙個方法get num num num引數是列表型別,判斷列表裡面的元素為數字型別。其他型別則報錯,並且返回乙個偶數列表 注 列表裡面的元素為偶數 def get num l l for i in l 判斷列表l的元素是否都為整形 if not isinstance...

第二節練習

a b 2 鏈式賦值 print a print b c id a 位址print c c type a 型別 print c a,b 2,3 系列解包賦值 a,b b,a print a print b 基本運算 print 3 2 print 30 5 print 30 5 print 30 5...