資料介紹
經(jīng)過(guò)這幾天做的程序,和以前做電子鐘時(shí)的感悟,現(xiàn)在對(duì)單片機(jī)的整個(gè)程序結(jié)構(gòu)做一下總結(jié)。相信這個(gè)總結(jié)是很有必要的,在組織大型復(fù)雜程序結(jié)構(gòu)時(shí)需要有一個(gè)正確的理論指導(dǎo)。
感覺(jué)這種程序結(jié)構(gòu)的很多想法和操作系統(tǒng)非常像,但是畢竟沒(méi)學(xué)過(guò)操作系統(tǒng),有些表述可能不準(zhǔn)確,歡迎批評(píng)指正。首先介紹一下任務(wù)的概念,main函數(shù)最后是一個(gè)死循環(huán),它就是一個(gè)任務(wù),是整個(gè)系統(tǒng)最基礎(chǔ)的任務(wù)。除main函數(shù)的主循環(huán)無(wú)條件執(zhí)行外,其實(shí)每一個(gè)進(jìn)程和任務(wù)都是一個(gè)有條件跳出的循環(huán),當(dāng)這個(gè)任務(wù)沒(méi)有完成時(shí)就會(huì)一直在這個(gè)循環(huán)里,當(dāng)任務(wù)完成了就會(huì)從循環(huán)跳出,結(jié)束這個(gè)任務(wù)。當(dāng)然也有一些簡(jiǎn)單的任務(wù)沒(méi)有循環(huán),就是一些順序代碼執(zhí)行完了就結(jié)束,也可以認(rèn)為它是一個(gè)簡(jiǎn)單的任務(wù)。
其實(shí)所謂的任務(wù)在單片機(jī)里本質(zhì)上也就是一個(gè)函數(shù),只不過(guò)這個(gè)函數(shù)可能“沒(méi)那么容易結(jié)束”,需要達(dá)到一定的目的才會(huì)結(jié)束,把這樣的函數(shù)稱作“任務(wù)”。如果要完成的是一個(gè)很簡(jiǎn)單的功能,我們可以把這個(gè)功能的一小段代碼直接放到主循環(huán)里,單片機(jī)所有的精力都會(huì)放在這段代碼上(暫不考慮中斷)。但是如果程序結(jié)構(gòu)比較復(fù)雜,有多種任務(wù)可能會(huì)處理,主循環(huán)可以調(diào)用其它的任務(wù)函數(shù)而轉(zhuǎn)到其它任務(wù),但是一旦跳轉(zhuǎn)到其它任務(wù)里,主循環(huán)和其它任務(wù)都不會(huì)得到執(zhí)行。所以有這么一個(gè)特點(diǎn):由主循環(huán)調(diào)用的任務(wù)都只能單獨(dú)地運(yùn)行,進(jìn)入一個(gè)任務(wù),就不能處理其它任務(wù)。對(duì)于比較大型復(fù)雜的系統(tǒng),main函數(shù)的主循環(huán)里根本不放要實(shí)際處理的代碼,而是把所有任務(wù)函數(shù)歸到一起,根據(jù)選擇進(jìn)入相應(yīng)的任務(wù)函數(shù),當(dāng)處理完該任務(wù)之后又會(huì)回到主循環(huán),由主循環(huán)再次分配任務(wù)。此時(shí)主循環(huán)的作用就是調(diào)配任務(wù)(當(dāng)然用來(lái)調(diào)配任務(wù)的主循環(huán)本身也是一個(gè) 最基本的任務(wù)),而在被調(diào)配的任務(wù)里面可能還會(huì)再次被該任務(wù)調(diào)配的子任務(wù)。既然主循環(huán)用來(lái)調(diào)配任務(wù),那什么時(shí)候該進(jìn)入什么任務(wù)呢?
1、 順序調(diào)用。這是最簡(jiǎn)單的了,幾個(gè)任務(wù)按順序進(jìn)行。像飛思卡爾智能車的程序就是這種結(jié)構(gòu),先進(jìn)行傳感器掃描 - 再進(jìn)行轉(zhuǎn)向角計(jì)算 - 再進(jìn)行最大速度計(jì)算 - 再進(jìn)行速度控制,就這幾個(gè)任務(wù)不斷重復(fù)。雖然在主循環(huán)里只是簡(jiǎn)單調(diào)用一下函數(shù),而被調(diào)用的任務(wù)函數(shù)可能很復(fù)雜,比如轉(zhuǎn)向角計(jì)算這個(gè)函數(shù),對(duì)它支持函數(shù)專門(mén)寫(xiě)出一個(gè)c文件,而這個(gè)文件的代碼量甚至比main函數(shù)所在文件的代碼量都要大。
2、 可能各個(gè)任務(wù)之間存在邏輯關(guān)系,在各個(gè)任務(wù)里面直接指定下一個(gè)要進(jìn)入的任務(wù)。比如電子鐘里面的模式切換,1602從一個(gè)界面進(jìn)入到另一個(gè)界面都是由按鍵控制的。如:在時(shí)間界面按下設(shè)置鍵進(jìn)入到設(shè)置界面,按下返回鍵就進(jìn)入到logo界面。這一個(gè)個(gè)界面也就是任務(wù)函數(shù),只不過(guò)這個(gè)任務(wù)函數(shù)不會(huì)自動(dòng)跳出,而是根據(jù)按鍵情況決定是否跳出、并通知主循環(huán)要跳到哪。(每個(gè)界面里也會(huì)有選擇地對(duì)其它進(jìn)程提供的信息進(jìn)行處理,比如時(shí)間界面就會(huì)對(duì)時(shí)間累加進(jìn)程所提供的時(shí)間信息進(jìn)行顯示,同時(shí)也會(huì)對(duì)按鍵掃描進(jìn)程提供的按鍵序號(hào)進(jìn)行處理;而logo界面只會(huì)對(duì)按鍵信息進(jìn)行響應(yīng),忽略時(shí)間進(jìn)程提供的時(shí)間,但是時(shí)間進(jìn)程仍然在運(yùn)行,不然時(shí)間豈不是不準(zhǔn)了。 這些進(jìn)程都是由定時(shí)器進(jìn)行的,在后面會(huì)說(shuō)。)
再如紅外遙控的小車,在執(zhí)行完一個(gè)動(dòng)作之后都會(huì)回到ActionNum=0(不執(zhí)行任何動(dòng)作)的狀態(tài),把主進(jìn)程釋放,可以執(zhí)行其它類的任務(wù)或者進(jìn)入空閑狀態(tài)。
3、 由定時(shí)器分配,整個(gè)系統(tǒng)按定時(shí)器的節(jié)拍運(yùn)行。
電子鐘就是這種結(jié)構(gòu)非常典型的例子。由于沒(méi)用時(shí)鐘芯片,采用的是8位自動(dòng)填裝定時(shí)器每隔200us一次中斷來(lái)計(jì)時(shí)的(很準(zhǔn)哦),除計(jì)時(shí)和日期計(jì)算以外,要處理的任務(wù)還有:1602顯示、按鍵掃描、溫度采集和后來(lái)添加的電源管理(控制電池充放電)。下面就來(lái)討論一下在時(shí)間顯示界面里需要做的這么幾個(gè)任務(wù)(時(shí)間顯示界面本身就是由main函數(shù)的主循環(huán)調(diào)配的一個(gè)子任務(wù)):
- 基于89C51單片機(jī)的定時(shí)器源程序 8次下載
- 51單片機(jī)定時(shí)器問(wèn)題總結(jié)
- STC15單片機(jī)實(shí)戰(zhàn)項(xiàng)目軟件開(kāi)發(fā)第二講 - LED閃爍(定時(shí)器,面向?qū)ο?b class="flag-6" style="color: red">程序結(jié)構(gòu))
- 51單片機(jī)——定時(shí)器
- 使用用單片機(jī)定時(shí)器設(shè)計(jì)門(mén)鈴的程序和工程文件免費(fèi)下載 4次下載
- 使用單片機(jī)實(shí)現(xiàn)定時(shí)器的程序免費(fèi)下載 6次下載
- 使用單片機(jī)實(shí)現(xiàn)定時(shí)器的程序代碼免費(fèi)下載
- 51單片機(jī)的定時(shí)器C語(yǔ)言程序免費(fèi)下載 7次下載
- 使用51單片機(jī)定時(shí)器控制LED閃爍的程序免費(fèi)下載
- 單片機(jī)定時(shí)器的程序免費(fèi)下載 29次下載
- 使用單片機(jī)的定時(shí)器設(shè)計(jì)60S秒表的實(shí)驗(yàn)資料電路圖和程序免費(fèi)下載 12次下載
- 使用51單片機(jī)的定時(shí)器進(jìn)行計(jì)數(shù)實(shí)例的程序免費(fèi)下載
- PIC單片機(jī)定時(shí)器的外設(shè)中斷的使用程序免費(fèi)下載
- 51單片機(jī)定時(shí)器掃描按鍵實(shí)驗(yàn)的程序免費(fèi)下載
- 使用51單片機(jī)定時(shí)器做時(shí)鐘的程序免費(fèi)下載
- 單片機(jī)定時(shí)器的用法 1473次閱讀
- 51單片機(jī)定時(shí)器和中斷的介紹 2893次閱讀
- 基于單片機(jī)的定時(shí)器的設(shè)計(jì)方法 1w次閱讀
- 單片機(jī)的程序結(jié)構(gòu)設(shè)計(jì) 6761次閱讀
- 單片機(jī)定時(shí)器賦初值的方法解析 7596次閱讀
- 單片機(jī)定時(shí)器和計(jì)數(shù)器的基本結(jié)構(gòu)以及用法介紹 4611次閱讀
- 51單片機(jī)計(jì)數(shù)器和定時(shí)器的本質(zhì)區(qū)別及應(yīng)用方法 1.4w次閱讀
- 單片機(jī)學(xué)習(xí)心得1:89c51單片機(jī)定時(shí)器應(yīng)用! 9968次閱讀
- 單片機(jī)C語(yǔ)言編程中定時(shí)器初值計(jì)算的兩種方法 1w次閱讀
- MSP430單片機(jī)定時(shí)器A結(jié)構(gòu)及其應(yīng)用范例 4079次閱讀
- 51單片機(jī)定時(shí)器工作原理 9.6w次閱讀
- 詳細(xì)剖析單片機(jī)定時(shí)器的寄存器 1w次閱讀
- 單片機(jī)中各種周期的關(guān)系與定時(shí)器原理 1w次閱讀
- 單片機(jī)C語(yǔ)言程序設(shè)計(jì)之定時(shí)器控制單只LED 4006次閱讀
- 單片機(jī)必須了解的外設(shè)功能——定時(shí)器/中斷功能 7399次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開(kāi)發(fā)包
- 19.47 MB | 5次下載 | 1 積分
- 4蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 4次下載 | 2 積分
- 5基礎(chǔ)模擬電子電路
- 3.80 MB | 4次下載 | 1 積分
- 6STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊(cè)
- 3.32 MB | 4次下載 | 免費(fèi)
- 7蘋(píng)果ipad5電路原理圖
- 1.23 MB | 1次下載 | 2 積分
- 8PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 1次下載 | 1 積分
本月
- 1AI智能眼鏡產(chǎn)業(yè)鏈分析
- 4.43 MB | 383次下載 | 免費(fèi)
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說(shuō)明
- 0.50 MB | 94次下載 | 1 積分
- 4長(zhǎng)虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強(qiáng)型場(chǎng)效應(yīng)晶體管的數(shù)據(jù)手冊(cè)
- 0.11 MB | 28次下載 | 2 積分
- 8長(zhǎng)虹液晶彩電LS29機(jī)芯的技術(shù)資料說(shuō)明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191388次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論