1樓:匿名使用者
您說的這個問題,就是作業系統的理論中所說的「程序互斥」的問題。
兩個可能互相打斷的程序,如果都訪問(讀寫)同一個資料結構(或其它型別的資源),有些時候就有出錯的可能。
解決的辦法,對於不分優先順序的兩個程序,稍微複雜些,對於有優先順序的情況就簡單了:在較低優先順序程序的程式中,在「怕打斷」的部分臨時性的「關中斷」即可。
這裡需要確定「怕打斷」的範圍,即所謂「臨界段」。在臨界段之前加入「關中斷」的操作,之後加入「開中斷」的操作。
臨界段」應該儘量選的短一些。因為關中斷時間長了,會影響高優先順序程序操作的「準時性」,在許多實際應用中,這是不好的。
在組合語言程式中,容易做到儘量短。高階語言如c語言就不如組合語言那樣容易做到儘量短了。但也可以適當注意。
例如,假如x2是兩個程序都要訪問的變數,而在較低優先順序的程序中有:
x2 = 一個很複雜的表示式 */
如果在這個賦值語句的前後「關中斷——開中斷」,自然關的時間就嫌長了。
而引入一個變數x1來做中**
x1 = 一個很複雜的表示式 */
關中斷;x2 = x1; 開中斷;
這樣關的時間就可以短一些。
也有的時候,高優先順序的程序有很多個不同的中斷,而我們只需要防止其中的某一箇中斷來打斷,也可以採取某種措施,並不去總的「關中斷」,而是有選擇性的只關某一箇中斷。
2樓:匿名使用者
這個問題是共享資料完整性的問題,確實需要慎重對待,一般的解決方法是,求出運算結果x1以後,禁止中斷,執行 x2=x1 後再允許中斷。只要賦值不是一條指令能完成的,都應該這樣處理。
微控制器賦值問題?
3樓:無畏無知者
從電路看,要想點亮led,qn得為低電平(n=0,1,2...7),那麼其對應的輸入訊號 dn為低電平,也即 p1對應輸出端為低電平;
所以有這樣說你明白了麼。
請教微控制器邏輯電路題目,謝謝,請教一個微控制器邏輯電路題目,謝謝。
做而論道 先把邏輯圖寫成表示式,再應用摩根定理化簡,最後寫成 p3.0 p1.0 p1,1 p1.4 p1.5 p1.6 這就簡單多了,四個取反的步驟,都化沒了。程式如下 c sbit a p1 0 sbit b p1 1 sbit c p1 4 sbit d p1 5 sbit e p1 6 sb...
微控制器問題,微控制器問題
船長 12mhz 12 1s 1ms 1000065536 10000 55536 d8f0mov tmod,01h t0工作方式1mov tl0,0f0h t0初值mov th0,0d8 h t0初值setb tr0 啟動t0 setb et0 允許t0中斷 setb ea 開總中斷 龍宇防盜監控...
微控制器的問題,微控制器的問題有哪些?
org 0000h 是巨集指令,本身不形成 只是指定彙編程式將其後的程式彙編後的 存入後面的地址中。因此 start ljmp main 指令ljmp main 的 存放在程式儲存器中0000h單元開始的幾個單元內。其標號start被賦予值0000h在程式中使用,在標號處是不佔用儲存單元的。org ...