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