⑴ 51單片機如何實現多線程多任務有哪些程序可以在「後台」自己運行
51單片機可以實現執行時間片形式的多線程任務,具體做法是:1、弄個表兩位元組一個單位存一下各個任務的執行地址。2、在中斷級別較高的T0定時器中斷中,把中斷壓進堆棧的那兩個位元組保存到表裡。3、用表裡別的線程的地址重壓進堆棧。4、從中斷里退出就可以切到另一個線程繼續跑了。
我記得這個在早先2000年那時候的大學計算機系單片機原理專業課里講過,但是那科掛掉的實在太多,現在好像已經把這些獨門絕技大多給砍沒了,就剩背背匯編指令集。
⑵ 單片機 同時處理多件事
單片機是不能同時處理多件事情。如果要想同步處理多件事情,只能是先中斷正在做的事情,轉移到其它需要做的事情上,等事情處理完畢,或者還是處理到一定程度,再轉回之前正在做的事情。
一、關於單片機:
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
二、單片機的應用分類:
單片機(Microcontrollers)作為計算機發展的一個重要分支領域,根據發展情況,從不同角度,單片機大致可以分為通用型/專用型、匯流排型/非匯流排型及工控型/家電型。
1、通用型
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
2、匯流排型
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
3、控制型
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
⑶ STM32在這種情況下是不是需要使用實時操作系統
不一定,可以不使用。
uCOSII、RTX之類的操作系統,主要是通過定時器切換實現了多線程功能。
裸機編程時,常常需要調用延時函數來進行等待。此時的CPU多處於閑置狀態(例如執行for循環延時)。加入了實時操作系統後,RTOS會利用定時器進行任務切換。在調用系統的延時函數時並非讓CPU循環,而是判斷是否有其他任務需要執行。從而提高CPU執行效率。但RTOS需要佔用定時器。且會造成RAM消耗嚴重、實時性降低等問題。
用不用RTOS見仁見智。但是從學習的角度,了解一點RTOS對於提高代碼水平很有幫助
⑷ 單片機有線程嗎
大部分單片機可以移植嵌入式實時操作系統的,操作系統內核會分配CPU給各個任務工作,也就是平時說的多線程,或者多任務
⑸ 怎麼樣讓51單片機實現偽多線程工作(軟體上實現)簡單的論述一下,有程序實例更好.
你也知道,51單片機沒辦法實現多線程操作,所以你已經指明了條件,實現偽多線程工作(軟體上實現),也就是軟體模擬多線程。
我想你也沒指望這個多線程多優秀,只是實驗性質,鍛煉鍛煉編程技巧。這個還是可以實現的,雖然我也沒走過。
沒查資料,不知道有沒有這方面的介紹和可移植的操作系統,僅憑自己想像與你探討。
其實早期的WINDOWS操作系統,由於CPU 是單核,本質上就是偽多線程,包括現在的ARM 單片機可以實現的UCOSII。
51單片機實現偽多線程要解決兩個問題,一個是速度,一個是內存規模。實現方法不過是利用定時中斷把CPU的工作分割成時間片,分配給不同的任務。這有點像數碼管的動態掃描,只要速度夠快,感覺上各個任務的運行就是流暢的。問題的關鍵在於現場保護和緊急任務的處理,這兩項調度好,編制一個偽多線程程序並不難。
但由於51資源有限,真的只能是試驗一下。