資料介紹
經過這幾天做的程序,和以前做電子鐘時的感悟,現在對單片機的整個程序結構做一下總結。相信這個總結是很有必要的,在組織大型復雜程序結構時需要有一個正確的理論指導。
感覺這種程序結構的很多想法和操作系統非常像,但是畢竟沒學過操作系統,有些表述可能不準確,歡迎批評指正。首先介紹一下任務的概念,main函數最后是一個死循環,它就是一個任務,是整個系統最基礎的任務。除main函數的主循環無條件執行外,其實每一個進程和任務都是一個有條件跳出的循環,當這個任務沒有完成時就會一直在這個循環里,當任務完成了就會從循環跳出,結束這個任務。當然也有一些簡單的任務沒有循環,就是一些順序代碼執行完了就結束,也可以認為它是一個簡單的任務。
其實所謂的任務在單片機里本質上也就是一個函數,只不過這個函數可能“沒那么容易結束”,需要達到一定的目的才會結束,把這樣的函數稱作“任務”。如果要完成的是一個很簡單的功能,我們可以把這個功能的一小段代碼直接放到主循環里,單片機所有的精力都會放在這段代碼上(暫不考慮中斷)。但是如果程序結構比較復雜,有多種任務可能會處理,主循環可以調用其它的任務函數而轉到其它任務,但是一旦跳轉到其它任務里,主循環和其它任務都不會得到執行。所以有這么一個特點:由主循環調用的任務都只能單獨地運行,進入一個任務,就不能處理其它任務。對于比較大型復雜的系統,main函數的主循環里根本不放要實際處理的代碼,而是把所有任務函數歸到一起,根據選擇進入相應的任務函數,當處理完該任務之后又會回到主循環,由主循環再次分配任務。此時主循環的作用就是調配任務(當然用來調配任務的主循環本身也是一個 最基本的任務),而在被調配的任務里面可能還會再次被該任務調配的子任務。既然主循環用來調配任務,那什么時候該進入什么任務呢?
1、 順序調用。這是最簡單的了,幾個任務按順序進行。像飛思卡爾智能車的程序就是這種結構,先進行傳感器掃描 - 再進行轉向角計算 - 再進行最大速度計算 - 再進行速度控制,就這幾個任務不斷重復。雖然在主循環里只是簡單調用一下函數,而被調用的任務函數可能很復雜,比如轉向角計算這個函數,對它支持函數專門寫出一個c文件,而這個文件的代碼量甚至比main函數所在文件的代碼量都要大。
2、 可能各個任務之間存在邏輯關系,在各個任務里面直接指定下一個要進入的任務。比如電子鐘里面的模式切換,1602從一個界面進入到另一個界面都是由按鍵控制的。如:在時間界面按下設置鍵進入到設置界面,按下返回鍵就進入到logo界面。這一個個界面也就是任務函數,只不過這個任務函數不會自動跳出,而是根據按鍵情況決定是否跳出、并通知主循環要跳到哪。(每個界面里也會有選擇地對其它進程提供的信息進行處理,比如時間界面就會對時間累加進程所提供的時間信息進行顯示,同時也會對按鍵掃描進程提供的按鍵序號進行處理;而logo界面只會對按鍵信息進行響應,忽略時間進程提供的時間,但是時間進程仍然在運行,不然時間豈不是不準了。 這些進程都是由定時器進行的,在后面會說。)
再如紅外遙控的小車,在執行完一個動作之后都會回到ActionNum=0(不執行任何動作)的狀態,把主進程釋放,可以執行其它類的任務或者進入空閑狀態。
3、 由定時器分配,整個系統按定時器的節拍運行。
電子鐘就是這種結構非常典型的例子。由于沒用時鐘芯片,采用的是8位自動填裝定時器每隔200us一次中斷來計時的(很準哦),除計時和日期計算以外,要處理的任務還有:1602顯示、按鍵掃描、溫度采集和后來添加的電源管理(控制電池充放電)。下面就來討論一下在時間顯示界面里需要做的這么幾個任務(時間顯示界面本身就是由main函數的主循環調配的一個子任務):
- 基于89C51單片機的定時器源程序 7次下載
- STC15單片機實戰項目軟件開發第二講 - LED閃爍(定時器,面向對象程序結構)
- 51單片機——定時器
- 使用用單片機定時器設計門鈴的程序和工程文件免費下載 4次下載
- 使用單片機實現定時器的程序免費下載 6次下載
- 使用單片機實現定時器的程序代碼免費下載
- 51單片機的定時器C語言程序免費下載 6次下載
- 使用51單片機定時器控制LED閃爍的程序免費下載
- 單片機定時器的程序免費下載 28次下載
- 使用單片機的定時器設計60S秒表的實驗資料電路圖和程序免費下載 12次下載
- 使用51單片機的定時器進行計數實例的程序免費下載
- PIC單片機定時器的外設中斷的使用程序免費下載
- 51單片機定時器掃描按鍵實驗的程序免費下載
- 使用51單片機定時器做時鐘的程序免費下載
- 使用51單片機進行定時器計數示例的程序免費下載
- 單片機定時器的用法 1147次閱讀
- 51單片機定時器和中斷的介紹 2024次閱讀
- 基于單片機的定時器的設計方法 1w次閱讀
- 單片機的程序結構設計 6475次閱讀
- 單片機定時器賦初值的方法解析 7248次閱讀
- 單片機定時器和計數器的基本結構以及用法介紹 4422次閱讀
- 51單片機計數器和定時器的本質區別及應用方法 1.4w次閱讀
- 單片機學習心得1:89c51單片機定時器應用! 9516次閱讀
- 單片機C語言編程中定時器初值計算的兩種方法 1w次閱讀
- MSP430單片機定時器A結構及其應用范例 3924次閱讀
- 51單片機定時器工作原理 9.3w次閱讀
- 詳細剖析單片機定時器的寄存器 1w次閱讀
- 單片機中各種周期的關系與定時器原理 1w次閱讀
- 單片機C語言程序設計之定時器控制單只LED 3826次閱讀
- 單片機必須了解的外設功能——定時器/中斷功能 7178次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多