微控制器怎么處理兩個要同時進行的問題

2022-10-24 22:10:58 字數 4248 閱讀 8966

1樓:

真正的並行處理是需要多個cpu的,而一般的微控制器只有一個cpu是無法實現並行處理。

從你的問題來看,你需要的是多工處理機制,這個是用一個嵌入式作業系統就可以很容易的實現。p0和p1口分別有兩個獨立的任務來管理,這樣就實現了同時處理並行問題

在51系列裡面,有atmel公司開發了rtxy-51嵌入式作業系統,**量很小,keil編譯器就可以直接編譯,具體的資料可以查查,很容易入門的

2樓:匿名使用者

沒有真正意義上的「同時」,向我們用的計算機就是用作業系統實現的,你可以在微控制器上試下ucos才做系統,很小很好學;也可以藉助定時器,定時到了產生一箇中斷,轉而執行任務,只是所有任務要在同一個週期內完成一遍,否則就亂了。

3樓:

一般的微控制器沒有並行結構,所謂的"同時"其實都是按程式設計先後執行的,只是可能耗費的時間極短(一秒執行十幾萬甚至幾百萬條以上的指令)讓人覺得他好像在同時進行.其實讀讀程式,瞭解微控制器的硬體結構就知道的.想要真正的"同時",就必須用幾個微控制器一起工作才行.

ps:fpga易於實現真正的"並行"處理.但其實程式設計後的電路,已經是相互獨立的了,只是用一個時鐘驅動著,放在一塊密封的晶片中而已.

簡單的說,電路/計算機 是靠速度取勝的.

4樓:匿名使用者

可以用中斷做,主程式做主要的任務,中斷程式可以定時去做定時的任務,微控制器內部內有定時器,定時器不佔用cpu可以同時執行

5樓:

按時間片,來分時處理,比如任務一執行50ms,任務二執行50ms如此反覆

6樓:匿名使用者

它是有時序的,嚴格來說沒有哪句指令是同時執行的。只是間隔時間很短很短而已~~滿意嗎

51微控制器怎麼同時開啟兩個中斷的問題?

7樓:朝霞英語

高優先順序中斷執行過程中低的不能執行。

中斷使能,中斷允許即此中斷已開啟。但cpu不可以同時執行兩個中斷。所以中斷分優先順序。

要優先於高階中斷,再開低階中斷。

當系統有個定時中斷。比如定時採集溫度值,然後通過串列埠傳送到上位機。這樣程式裡要用到定時中斷和串列埠中斷。

處理了定時中斷後,再處理的串列埠中斷。

8樓:匿名使用者

中斷使能,中斷允許即此中斷已開啟。但cpu不可以同時執行兩個中斷。所以中斷分優先順序。

9樓:向廣川

一箇中斷怎麼寫,第二個中斷就怎麼寫啊!!只是要注意兩個中斷不能同時響應!!所以要注意一下就好了

微控制器程式可不可以同時執行兩個迴圈?

10樓:匿名使用者

不可以的,你可以迴圈巢狀,但是不能同時執行兩個迴圈,微控制器在同一時間只能執行一條語句,我看你的意思好像是要兩個迴圈同時工作,這是不可能的,你只能讓程式像近似的兩個迴圈,但不能是嚴格的兩個迴圈

11樓:繃帶達人

兩個迴圈,是肯定不能同時執行的,想想程式指標只有一個,類似的,你可以改為在一個迴圈中來執行,或者加讓出處理器的條件,讓兩個迴圈交替執行

12樓:

如果bai是兩個死迴圈,du那是絕對不可能的!

你要寫的可

zhi是多工的dao程式??一個做前臺,一回個做後臺答??一個比較簡單的方法就是上os,這個比較簡單保險;如果不上os,要自己寫,你可以寫兩個死迴圈,再通過中斷或是其他一些什麼方法將這兩個迴圈連結起來,但是你必須要保證記憶體啊、變數啊、同步啊、io啊、中斷啊等等都不會出現問題,不會死鎖、不會跑飛.....

13樓:流星雨之張翰

只要不是while(1)就可以

微控制器能不能同時進行兩項工作?

14樓:

呵呵,看來你沒有搞明白什麼叫「後臺」程式。

通常所謂的後臺程式就是由類似於定時器的東西支援的,定時中斷喚醒後臺程式的一次執行,然後將控制權交還給「前臺」。別忘了,任何時刻cpu只能執行1條指令。

另:定時器是獨立於處理器的硬體,會自己工作,與執行什麼程式無關的。

15樓:電子粉絲

搞反了吧?定時器就是鬧鐘.

16樓:寧靜闖關東

看它是否可以進行多執行緒工作啦,微控制器一般不可以同事完成2個工作,如果上了作業系統就可以了

17樓:柳懷沫

是這樣的,你的主程式正在工作,定時器中斷來了,主程式會暫停,去處理中斷函式,中斷函式處理完了會返回剛才主程式暫停的地方接著處理主程式。

關於51微控制器使用兩個定時器進行控制的問題

18樓:匿名使用者

//看你意思,兩個定時都是50ms中斷吧?假設d1=1為燈亮

while(1)

}//我覺得你先用一個定時做實驗,比較好。

19樓:沒事來玩幽白

d1=0,d1=1,這倆應該放到if裡面

tf0=0;//關閉定時器0

tf1=1;開啟定時器1

d1=0;//led滅

while(1)

if(bb==40)

}並且在程式開始處開啟定時器1(也就是先執行的定時器),但是要注意,你現在是兩個定時器同時工作,應該在if中關閉當前的定時器,並開啟另一個定時器

基於51微控制器的搶答器如果有兩人同時按下怎麼解決呢?

20樓:做而論道

如果真是同時按下,確實是沒有辦法區分的。

用高速的數位電路晶片,可以把先後的時間間隔,區分到納秒的量級。

用微控制器進行處理,相差1~2微秒的,都會認為是「同時按下」。

微控制器軟體,檢測各個引腳的次序,是有先後的,先檢測到的,就佔便宜了。

21樓:

可以用外圍的器件來解決,再送入微控制器

微控制器怎麼同時執行兩個程式 我想做一個時鐘 同時帶有流水燈 要求流水燈不影響時鐘的精確度 謝謝!

22樓:匿名使用者

在一個定時器的週期中斷裡面處理時鐘。

程式的其它部分做別的(可以在主程序裡面做,也可以在其他中斷裡面做)。

防止程式執行中時序交叉干擾,程式設計時需要注意,凡有干擾可能的程式段中,可以關中斷。

順便對上面「寂寞的豬豬」的主意說兩句:

「寂寞的豬豬」的主意是:在主程式中用迴圈延時來做流水燈。這可以。這也就是我上面說的「程式的其它部分做別的」。

不過「寂寞的豬豬」說「延時要小於等於定時器設定的時間」,這沒有必要。

只要你的迴圈延時程式中開著中斷,就不需要顧慮。

中斷時間到了會打斷主程式執行中斷服務中的時鐘處理,中斷返回後,原來被打斷的主程式可以正常繼續,沒有問題的。只要你分配的變數地址不要互相重用,就沒問題。

我上面說的「時序交叉干擾」,主要是指萬一有某個變數,在時鐘程式裡和流水燈程式裡都要使用,設計時不好安排無法分開,此時才需要考慮。可以在使用這個變數前先關中斷,使用後再開中斷就行了。如果不存在這種情況,就沒有什麼問題可擔心了。

不過,因為迴圈延時中被中斷程式打斷,可能造成迴圈延時不準確。一般來說,這個「不準確」誤差不大,可不考慮。假如您想避免這個誤差,也不難:

只要把延遲程式改一下,不做計數迴圈,改成查詢時鐘,即可。

23樓:匿名使用者

微控制器不能同時執行兩個程式,只能採用分時的模式完成。

首先通過定時器中斷來設定一個時標,比如設定定時器0 每1ms產生一次中斷,以這個1ms為基本時標,時鐘和流水燈分別定義相應的計數全域性變數,每次進入中斷計數加1。根據這個基礎,比如說時鐘應用,當時鍾計數值達到1000次時,說明到了1s,然後計數清零,時分秒變數增加1s。流水燈的處理也一樣。

另外中斷服務程式儘量簡潔,所以計數器+1及是否清零的判斷操作可在中斷服務程式中,計數到後置個標誌就可以退出,然後在主迴圈程式中做運算處理,這樣做比較規範,可最大程度減少誤差。

24樓:同風而起

時鐘用定時器定時,流水燈普通延時,但是流水燈的延時要小於等於定時器設定的一秒時間

怎麼控制一臺微控制器同時進行兩個超聲波測量

25樓:神話夢碎

可以連線兩個模組,

只是不要同時操作,以免相互干擾。

超聲測距操作時間很短,分時操作不會影響什麼。

用兩個51微控制器實現其中微控制器兩個兩個位元組串列埠資料傳送

單一位元組傳送接收可以,只能說明軟體 硬體,基本調通 要想傳送資料,還必須制定通訊協議。傳送方,先向對方呼叫,待收到正確的迴音後 再向對方傳送 資料的位元組數 再向對方連續傳送資料位元組串,對方收到,存放到一個快取空間 傳送方,最後向對方發出校驗位元組 一般是累加和 待收到正確的迴音後,一次資料通訊...

微控制器怎麼樣可以同時執行兩個任務?程式要怎麼寫?把兩個程式一塊寫就好了嘛

應該用作業系統,比如ucos,交給作業系統來做任務排程 改變下2個程式就好了。比如一個程式要1秒加一,另一個要2秒減一。用延時函式延時是可以但是再加一個程式就不準了。但是可以用定時器中斷定時20ms。計數100次就執行第一個程式,計數200次就執行第二個程式。不行。單執行緒只能一條一條指令的執行,中...

兩個微控制器之間串列埠通訊為什麼其中微控制器接收不到資料呢?求解

請問一下,兩個微控制器分別是什麼型號,另外你可以檢查一下,是否串列埠線有問題,還有兩個微控制器是否共地了。一個 例項,可以參考一下 通常是線路接觸不良。微控制器與dtu通訊,我在微控制器裡 了一個串列埠傳送的程式,連上dtu之後,為什麼dtu收不到資料呢?那還是時序或協議不正確,也可能是dtu沒有正...