第二節: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...