【經(jīng)典51懶人5步速成法-05】應用程序設計入門再高級的單片機也是解決問題的一個工具,如何靈活運用已掌握的外設模塊來滿足功能需求以解決實際問題,是我們學習單片機開發(fā)的目標。你的程序?qū)懙煤芸?,每個外設用得很溜,并不能代表你解決問題的能力就很好。這需要通過實際開發(fā)的磨練與經(jīng)驗的積累。
實際上每個工程師在不斷的開發(fā)過程中,多多少少都會形成自己的思維模式和開發(fā)習慣。因此,在這一節(jié)我們所闡述的也只是本人的思維模式與設計習慣,可以拋磚引玉,作為參考。1、題目需求

2、基本思路
我的設計模式是自上而下,從整體到局部。所以,在編寫代碼之前,我的腦子里面基本上已經(jīng)有了比較完整的輪廓,包括應該定義那些變量,應該安排那些函數(shù),程序框架大致如何。
從本題的需求分析中,我們可以獲得以下的信息:
<1>秒閃功能,需要使用定時器0,得安排一個初始化函數(shù)Init_Timer0()和一個中斷服務函數(shù)SeviceTimer0()。
<2> 定時器0使用16位模式,在12MHz晶振情況下,最大的定時值也只有65.535ms,因此要定時500ms不能夠直接實現(xiàn),那么就需要多次定時進行累加。把定時器0的間隔定時確定為50ms比較方便,累計10次就是500ms了,那么就需要一個定時累計變量t_count。
<3> 按鍵功能,首先要定義一個按鍵掃描函數(shù)ScanKeys(),在掃描過程中需要做去抖動處理,那么就要安排一個簡易的延時函數(shù)Delay()。
<4> 再檢查思考一下,還有什么嗎?沒有了。3、程序框架
嚴格來說,在開始編寫代碼之前,應該將程序的流程圖和數(shù)據(jù)定義表做出來。
不過,對于簡單的功能,可以通過編寫代碼搭建整體框架的方式來體現(xiàn)。這就跟建設框架結(jié)構(gòu)的房子一樣,先把毛坯建好,再去做個單元進行裝修。我比較喜歡這做。
本題在基本思路分析指導下,可以搭建出程序框架結(jié)構(gòu)。

4、逐個填充
<1> 定時器初始化函數(shù):這個代碼是可以重用的,直接拷貝過來就行了。

<2> 定時器中斷服務函數(shù)。

<3> 按鍵掃描函數(shù)。

就這樣,一個簡單的51單片機應用程序開發(fā)就完成了。
5、小結(jié)
作為入門學習,本系列教材到這里就結(jié)束了。實際上51單片機的內(nèi)容也差不多就這么多了。至于那些上千頁的書在講述51單片機開發(fā)的,里面很多內(nèi)容都是各種功能外設,與51內(nèi)核無關(guān),只是用51單片機操作那些外設而已。對于這部分的內(nèi)容,你學習的不是51單片機了,而是那么功能外設。在實際的應用中,更多的是要應用各種外設來解決各種問題。所以,一個單片機的高手并不是把51單片機本身玩得有多溜,而是他心中掌握了多少功能模塊的應用,設計了多少應用的代碼,積累了多少項目的經(jīng)驗。
入門教程結(jié)束了,而你們的征途才剛剛開始,加油?。?!
-
單片機
+關(guān)注
關(guān)注
6076文章
45498瀏覽量
670596 -
定時器
+關(guān)注
關(guān)注
23文章
3368瀏覽量
123699
原文標題:【經(jīng)典51懶人5步速成法-05】應用程序設計入門一例通
文章出處:【微信號:weixin21ic,微信公眾號:21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
《LabVIEW 8.20程序設計從入門到精通》程序 (各種經(jīng)典和實用程序)
LabVIEW8.2程序設計入門到精通課后實驗報告
Verilog HDL相關(guān)應用程序設計實例精講和經(jīng)典黑金資料(入門教程+實例精講+百例設計)
Altium Designer PCB設計入門 經(jīng)典教程
[Java程序設計入門教程].(.杜邦杰).(掃描版)
《Visual C# 2008程序設計經(jīng)典案例設計與實現(xiàn)》---
小白系列之51單片機的入門速成法
應用程序設計入門:經(jīng)典51懶人5步速成法
評論