1樓:匿名使用者
51微控制器可以實現執行時間片形式的多執行緒任務,具體做法是:1、弄個表兩位元組一個單位存一下各個任務的執行地址。2、在中斷級別較高的t0定時器中斷中,把中斷壓進堆疊的那兩個位元組儲存到表裡。
3、用表裡別的執行緒的地址重壓進堆疊。4、從中斷裡退出就可以切到另一個執行緒繼續跑了。
我記得這個在早先2023年那時候的大學計算機系微控制器原理專業課裡講過,但是那科掛掉的實在太多,現在好像已經把這些獨門絕技大多給砍沒了,就剩背背彙編指令集。
2樓:匿名使用者
1、51微控制器無法實現多執行緒任務,只能實現單執行緒。這是由51微控制器的硬體決定的,否則多執行緒晶片就沒有必要設計出來了。
2、51微控制器的硬體資源,如:定時器、計數器、捕獲器、比較器、ad轉換、pwm、uart等等大部分的硬體資源,初始化以及啟動由使用者控制。開始執行後,51微控制器的相關硬體電路能自動執行,無需干預。
3、在這些硬體資源執行過程中,使用者可以進行其他操作(一般不更改正在執行的硬體資源,否則會影響初始設定)。
4、但在這些硬體資源執行結束後,大部分的情況下,對應的特殊暫存器(含中斷)會被更改,此時,需使用者進行查詢特殊暫存器或處理中斷。處理這些時,使用者需要停止正在執行的程式,不能同時進行其他工作。
例如:使用者設定定時器為週期1s;開啟定時器中斷。
啟動定時器後,使用者可以執行其他無關定時器的運算、控制。到達1s的時間時,定時器產生中斷,使用者執行的程式將被停止,儲存現場後,程式執行跳轉至定時器中斷,開始執行定時器中斷程式。在定時器中斷程式執行結束後,恢復現場,重新從使用者程式被中斷的位置開始執行。
微控制器程式可不可以同時執行兩個迴圈?
3樓:匿名使用者
不可以的,你可以迴圈巢狀,但是不能同時執行兩個迴圈,微控制器在同一時間只能執行一條語句,我看你的意思好像是要兩個迴圈同時工作,這是不可能的,你只能讓程式像近似的兩個迴圈,但不能是嚴格的兩個迴圈
4樓:繃帶達人
兩個迴圈,是肯定不能同時執行的,想想程式指標只有一個,類似的,你可以改為在一個迴圈中來執行,或者加讓出處理器的條件,讓兩個迴圈交替執行
5樓:
如果bai是兩個死迴圈,du那是絕對不可能的!
你要寫的可
zhi是多工的dao程式??一個做前臺,一回個做後臺答??一個比較簡單的方法就是上os,這個比較簡單保險;如果不上os,要自己寫,你可以寫兩個死迴圈,再通過中斷或是其他一些什麼方法將這兩個迴圈連結起來,但是你必須要保證記憶體啊、變數啊、同步啊、io啊、中斷啊等等都不會出現問題,不會死鎖、不會跑飛.....
6樓:流星雨之張翰
只要不是while(1)就可以
51微控制器如何產生8路PWM波,51微控制器是如何產生PWM波的?
我來說一下我的方案,這個我驗證過,方法如下 其實用一個定時器就夠了,外部中斷接按鍵,一個用來頻率加,一個用來頻率減,即做調節頻率用,8路頻率從p0口輸出,定時器產生中斷,比如1us,那麼我到1us時對p0.0取反,同時中斷裡在定義一個變數t1,那麼t1計中斷次數,假如計到5時我讓p1.0取反,兒至於...
51微控制器如何檢測高電平輸入,51微控制器引腳檢測高電平輸入的問題
做而論道 51微控制器,把引腳設定為輸入狀態,方法就是輸出一個1。這是微控制器的設計者 生產廠家所規定的。在這個前提下,外界,只有輸入低電平,才會改變引腳的狀態。輸入高電平,是沒有反應的。如果,外設,一定要送來高電平,那就必須加上一個反相器,再連線到微控制器的引腳。 這個電路和功能是可以實現的 c2...
51微控制器的pc值怎麼算,51微控制器中如何進行相對定址?pc值怎麼計算?rel又怎麼給
鈺瀟 a 50h sp 50h 51h 30h 52h 50h pc 5030h a 50h sp 50h 因為在程式中,sp減了兩次,後來又加了兩次,在程式最後ret有在返回的時候減了兩次,即地址出棧,故最終結果是50h。51h 30h 52h 50h 因為ret指令返回時,出棧的結果是高地址 5...