第四節 累計定時中斷次數使LED燈閃爍。

2021-07-25 18:49:04 字數 1836 閱讀 4723

第四節:累計定時中斷次數使led燈閃爍。

開場白:

上一節提到在累計主迴圈次數來實現計時,隨著主函式裡任務量的增加,為了保證延時時間的準確性,要不斷修正設定上限閥值const_time_level 。我們該怎麼解決這個問題呢?本節教大家利用累計定時中斷次數的方法來解決這個問題。這一節要教會大家四個知識點:

第一點:利用累計定時中斷次數的方法實現時間延時

第二點:展現鴻哥最完整的實戰程式框架。在主函式迴圈裡用switch語句實現狀態機的切換,在定時中斷裡累計中斷次數,這兩個的結合就是我寫**最本質的框架思想。 

第三點:提醒大家c語言中的int ,long變數是由幾個位元組構成的資料,凡是在main函式和中斷函式裡有可能同時改變的變數,這個變數應該在主函式中被更改之前,先關閉相應的中斷,更改完了此變數,再開啟中斷,否則會留下不宜察覺的漏洞。當然在大部分的專案中可以不用這麼操作,但是在一些要求非常高的專案中,有一些核心變數必須這麼做。

第四點:定時中斷的初始值該怎麼設定。不用嚴格按公式來計算時間,一般取個經驗值是最大初始值減去1000就可以了。

具體內容,請看源**講解。

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

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

(3)源**講解如下:

#include "reg52.h"

#define const_time_level 200  

void initial_myself();    

void initial_peripheral();

void delay_long(unsigned int uidelaylong);

void led_flicker();

void t0_time();  //定時中斷函式

sbit led_dr=p3^5;  

unsigned char ucledstep=0; //步驟變數

unsigned int  uitimecnt=0; //統計定時中斷次數的延時計數器

void main() 

}void led_flicker() 第三區 led閃爍應用程式

break;

case 1:

if(uitimecnt>=const_time_level) //時間到

break;}}

/* 注釋三:

* c51的中斷函式格式如下:

* void 函式名() interrupt 中斷號

* * 函式名可以隨便取,只要不是編譯器已經徵用的關鍵字。

* 這裡最關鍵的是中斷號,不同的中斷號代表不同型別的中斷。

* 定時中斷的中斷號是 1.至於其它中斷的中斷號,大家可以查詢

* 相關書籍和資料。大家進入中斷時,必須先清除中斷標誌,並且

* 關閉中斷,然後再寫**,最後出來時,記得重灌初始值,並且

* 開啟中斷。

*/void t0_time() interrupt 1

th0=0xf8;   //重灌初始值(65535-2000)=63535=0xf82f

tl0=0x2f;

tr0=1;  //開中斷

}void delay_long(unsigned int uidelaylong)}}

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

void initial_peripheral() //第二區 初始化外圍

總結陳詞:

本節程式麻雀雖小五臟俱全。在本節中已經展示了我最完整的實戰程式框架。

本節程式只有乙個led燈閃爍的單任務,如果要多增加乙個任務來並行處理,該怎麼辦?

欲知詳情,請聽下回分解-----蜂鳴器的驅動程式。

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

ObjC第四節 繼承

繼 承 1 繼承 1.1 nsobject,根類,oc建立的類都繼承自根類,位於類層次結構的頂層,沒有父類 1.2 父類的例項變數和方法都可以被隱式的繼承過來成為子類的一部分,子類就可以直接訪問這些例項變數和方法 1.3 alloc和init是繼承自nsobject的方法 1.4 繼承的概念呈單鏈繼...

第四節 條件語句

if語句 if v 100else if v 50elseif語句不需要括號 用法高階 const filename abc.txt if contents,error ioutil.readfile filename error nilelse注意 contents和error變數都是在if 塊中...

Python基礎第四節

字典是 鍵值對 的無序可變序列,其中每個元素都是乙個 鍵值對 包含 鍵物件 和 值物件 就像可通過列表元素索引值獲取對應物件,我們可通過 鍵物件 獲取 刪除 更新其對應的值物件。鍵必須是不可變資料,如整數 浮點數 字串 元組,不能是字典 列表 集合等可變物件,鍵不可重複。若重複出現鍵,則後面的覆蓋前...