51微控制器如何實現多執行緒多工 有哪些程式可以在「後臺」自己執行

時間 2021-09-06 09:13:32

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微控制器的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...

微控制器引腳如何實現高阻輸入,微控制器IO口設定為高阻輸入時能讀埠值嗎

amd百夫長 一 通過加驅動器實現了。二 如果是傳統的51微控制器 例如at89s52 p0口可以實現高阻。p0口內部和p1 p3口的內部結構不同,它的內部上拉fet只有在它作為外部儲存器匯流排的時候才能開啟,如果做普通io口,那麼讓p0口輸出1,外部又沒有接上拉電阻的話,那麼p0口就是高阻 懸空 ...

微控制器頻率計如何計算更精確,用51微控制器做的頻率計為什麼會有誤差?

1全部100ms,測量一次,顯示一次,顯示數值跳動,是正常的。可以把四次的數值,取平均值,每隔400ms,顯示一次 這樣,跳動的現象就會明顯減小。如果把八次的數值,取平均值,每隔800ms,顯示一次 這時,顯示的就會很穩定了,但是,也顯得 遲鈍 和 冷漠 多了。每隔400ms,顯示一次平均值,效果最...