導航:首頁 > 操作系統 > 51單片機現場保護

51單片機現場保護

發布時間:2023-09-30 13:03:49

單片機中斷有什麼作用

51單片機中的外部中斷有什麼作用?
可以打個比方,每天上班你都隨時需要知道你同事的工作進度情況,你是希望你不停地打個電話去問「你做完了嗎」,還是希望他做完了主動打個電話給你講「我做完了,我們談談吧」。這就是中斷的意義,在不需要的時候不影響處理 器做其它的事情,提高效率,增強程序的實時性。
51單片機中什麼是中斷?其作用是什麼?怎麼用?用自己的理解回答把
中斷就是中途打斷。

通俗解釋:

你在看影碟,有人敲門(中斷源),中斷了你看影碟,觀看暫停。處理敲門的事宜(中斷目的),處理完成(中斷結束),繼續看影碟(繼續執行原來的任務)。

再比如:你在看電視,水開了(中斷源),把水灌到暖瓶里(中斷目的),再燒上一壺(繼續開中斷),回去看電視。水又開了。。。。。。。。(循環中斷)

以51單片機16位定時計數器0(T0)來講,

計數是T1是一個能盛65536(十六位時)滴水的水盆,在水龍頭下水一滴滴地滴入盆中。如果盆是空的那水在滴完65536滴水時盆子的水就滿了再滴一滴的時候就溢出了。這時就會產生中斷。

如果盆裡面已經裝入65500滴水(即初裝值),那麼只需要36滴水後就溢出了。

每一個水滴計數時即一個脈沖(高低電平變換一次)。

定時時每一個水滴即一個機器周期,水滴的速度即機器周期,等於12個振盪周期(晶振的振盪頻率除以12),直接影響到溢出的時間。
51單片機中斷系統的作用?
如果沒有中斷系統,就只能由 CPU 按照程序編寫的先後次序,對各個外設,進行巡迴檢查與處理。

這就是查詢式工作方式。

貌似公平,實際效率卻不高。

如果有了中斷系統,整個計算機系統,就具有了應付突發事件的處理能力。

這就是中斷式工作方式。
單片機的中斷標志位是有什麼作用?
四個問號分為四點一一解答:

1、一般來說單片機的中斷發生有兩個條件,一是中斷標志位置位,二是中斷允許,如果這兩個條件都滿足則進入中斷,因為正常情況下中斷一直是允許的,那麼只能通過標志位來區分是否有中斷掛起,

2、如果進入中斷不清除標志位,那麼這一中斷服務程序結束後由於標志位還是置位的並且中斷是允許的,那麼還會再次進入該中斷,就會發生一直在執行中斷程序的情況

3、周期性中斷是由定時器輔助完成的,只要定時時間到,硬體就會自動置位標志位,這時中斷發生,定時器還在運行,與中斷處理是並行的沒有沖突,因此周期性的中斷不是從中斷標志位清零開始的。

4、如果中斷程序沒有執行完並且一下個中斷又來了,那麼硬體還是會自動置位標志位的,如果在這之前已經清零標志位那麼中斷結束後會再進入一次該中斷,如果這時還沒有清除中斷標志位,則第二個1毫秒中斷無效。
單片機全局中斷有什麼用
本人覺得是因為現在有中斷正在執行,為了不讓高優先順序的中斷使現在的中斷發生中斷,而採取的保護程序
51單片機中斷有什麼作用
打個比方,你在房間看書,看書這個事是持久性的,拖延幾分鍾也沒事。突然淘寶買的衣服送到了,鏢局的人敲門,你用書簽做好標記去開門。拿回衣服,回去繼續看書。這個事的發生過程很正常。

同樣的,看書就像單片機的一般事務處理,收快遞就像中斷。主要是應對緊急的,有時效要求的事件的發生。書簽就是進出中斷相關的現場保護。

具體點,主程序中有LED不停的閃爍,由於外部按鍵的觸發,告訴你該發個位元組出去。這時,可以產生個按鍵相關的中斷(引腳電平中斷),去中斷發個位元組,然後趕緊回來繼續閃爍LED。

重要總結:就這么回事!
單片機程序什麼作用啊 尤其是X++作用 定時器中斷作用是什麼呢?
x應該是一個全局變數,每次中斷函數都會將x加1,程序的其餘函數會掃描x的值來做出相應的動作,

interrupt 1 是計時器中斷,這里應該是用一個全局變數計時,main函數或者其他中斷函數檢查x的數值做到定時的響應,如閃燈或者屏幕刷新又或者PWM輸出 ,

定時器中斷的作用是在CPU運行期間 ,定時器在不幹擾CPU正常運行的情況下不停地將自身寄存器(從你的函數初始化看是TH0和TL0並起來的一個16位值)減一,當寄存器值為0時候發起中斷(從1減去1開始到寄存器值為0之間發起的),這樣可以做到CPU不用一直等待一個時間的到來而空轉,或者運行一個程序的過程中計算運行的時間並定時插入一個額外的工作,

C51的計時器有4個工作模式(對於At89S51或者STC89C52及以上型號來說)不同的模式有不同的功能,這個網路文庫能看到的,另外TMOD寄存器和其他寄存器還設定了計時器是外部的跳變信號或者單片機內部時鍾來引起計時器的一次減1動作(計時動作)。

另外計時器可以設置為外部輸入模式,這樣就能作為計數器,比如說一個外接的按鍵,按10次後才觸發中斷,如果用外中斷處理,那麼整個主函數會被中斷九次做無效中斷才能等到第十次按鍵執行需要的中斷處理動作。

這一點在操作系統中也用到了,比如我們的PC的多任務操作系統,就是用時鍾中斷來把一個程序中斷執行另一個程序(比如操作系統和應用程序間)實現了時間片輪轉,不過PC的操作系統把所有的中斷處理函數都包含進去了,所以我們基本不用去管硬體中斷就能編程。 反觀單片機,因為資源有限,想要做到多任務(主函數與各個中斷函數及其子函數)必須用定時器(也可以通過外部信號做計數器)以及外中斷作為契機來切換多個任務。

如果需要解答整個中斷函數的功能,最好把全部的程序都帖出來,因為x這個全局變數的作用沒有在中斷函數中體現

有問題可以繼續跟我交流,我現在是大學本科生,學過C51單片機,正在學STM32
單片機中斷寄存器的作用是什麼?
中斷寄存器就是用於存貯中斷狀態的 包含是否啟用中斷 或者是 是否發生中斷

#include void InitUART(void){ TMOD = 0x20; 計時器類型 SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; 中斷寄存器的操作 ES = 1; TR1 = 1; 計時器1的中斷}void SendOneByte(unsigned char c){ SBUF = c; while(!TI); TI = 0;}void main(void){ InitUART();}void UARTInterrupt(void) interrupt 4{ if(RI) { RI = 0; add your code here! } else TI = 0;}
單片機中斷 的interrupt 0 using 1中的using有什麼作用
看到樓上二位說的有誤,特糾正。

void INT0()interrupt 0 using 1

{....

棱....

}

interrupt 0 指明是外部中斷0;

interrupt 1 指明是定時器中斷0;

interrupt 2 指明是外部中斷1;

interrupt 3 指明是定時器中斷1;

interrupt 4 指明是串列口中斷;

using 0 是第0組寄存器;

using 1 是第1組寄存器;

using 2 是第2組寄存器;

using 3 是第3組寄存器;

51單片機內的寄存器是R0--R7(不是R0-R3)

R0-R7在數據存儲器里的實際地址是由特殊功能寄存器PSW里的RS1、RS0位決定的。

using 0時設置 RS1=0,RS0 =0,用第0組寄存器,R0--R7的在數據存儲區里的實際地址是00H-07H。R0(00H)....R7(07H)

using 1時設置 RS1=0,RS0 =1,用第1組寄存器,R0--R7的在數據存儲區里的實際地址是00H-07H。R0(08H)....R7(0FH)

using 2時設置 RS1=1,RS0 =0,用第2組寄存器,R0--R7的在數據存儲區里的實際地址是08H-0FH。R0(10H)....R7(17H)

using 3時設置 RS1=1,RS0 =1,用第3組寄存器,R0--R7的在數據存儲區里的實際地址是00H-07H。R0(18H)....R7(1FH)
單片機為什麼使用中斷
中斷保護現場,是為了你中斷子程序執行完以後能夠返回到你程序中中斷點,即產生中斷的地方,使程序能夠繼續向下執行!!!!

如過你說的不用保護現場的話,那麼程序執行完以後就不能夠回到現場,那麼你的程序將不知道要跳轉到那裡去了,也就是飛鳥,呵呵……

你說的中斷嵌套,也是一樣的,兩者都要保護現場,不然你也不能夠回到現場,程序也會飛的!!!!

而我們保護現場的數據都是放在堆棧中的,因此,你的中斷次數也不能夠超過堆棧的級數,那樣數據也會丟失!!!!

說白了,中斷它不同於子程序,子程序是固定好了的,返回的位置也固定了;而中斷我們不能夠預知它在那裡發生中斷,因此要保護現場,使中斷子程序執行完後返回到中斷的地方!!!

呵呵……說的太多了!!!

我知道你說的意思了,但是你要知道,中斷現場保護是在中斷子程序中進行的,因此當你高一級的中斷發生的時候(他們不可能共用一個中斷子程序,如果是同一中斷,那也不可能,因為51中斷中你進入中斷子程序後要將禁止該中斷再次中斷,好象似的,嘿嘿……你可以試試),在高一級的中斷子程序中也有現場保護,你的問題就是沒有把現場保護放對地方!!!!!

============================================================

它們是把現場保護在同一堆棧中,我跟你打個比方吧,假如說堆棧的地址是80H,低一級的中斷要保護的是1,2,3;高一級要保護的現場是4,5,6,那麼在低一級的中斷發生的時候,現場保護1,2,3將壓如堆棧,(順序書上應該有,這里是個比喻),那我先壓入1,堆棧閥址加1,壓入2,堆棧地址再加1,如果這個時候高一級的中斷發生,那麼現在就應該跳到高一級中斷的子程序,堆棧地址就是82H了,在將4,5,6分別壓入堆棧,這樣堆棧的地址就是85H,當高一級的中斷子程序結束後,返回現場,堆棧的數據要從85H開始彈出,這樣現場返回的就是6,5,4,這個時候程序就會跳到中斷之前的地方,即底一級的中斷那裡,將要繼續將3保護到堆棧中,在執行低一級的中斷子程序.(其中,你要在中斷保護現場完了後將中斷標志清0啊,不然它始終會中斷的,不可能去執行程序去了...)

Ⅱ 以51單片機為例,在響應某一個中斷後進行保護現場的工作時,為什麼不能被更高級的中斷所中斷

對書上這句話的理解應該是,中斷服務程序中,在保護現場時,應盡量避免被高優先順序的中斷所中斷,而並不是說這時候單片機不能響應高優先順序的中斷。所謂保護現場一般就是保護一些共用的寄存器,由於這些寄存器是共用的,所以可能會被其它的程序修改,因此需要保存起來,返回的時候再恢復回來,從而保護了程序運行的狀態。一般可在進入中斷服務程序保護現場的時候關掉中斷,保護完現場後再開中斷。
引起混亂的意思是,如果沒有保護現場或者保護現場的時候被高優先順序的中斷所中斷,這時候當前程序裡面的有些寄存器沒有被保護下來,而高優先順序的中斷運行的過程中可能會改寫這些寄存器,這樣再返回低優級中斷的時候,不可能恢復這些器存器的值,低優先順序的程序運行的時候會因為錯誤的寄存器值造成不可預料的結果。比如,在中斷1中有一個判斷的語句JB A.3,L1,如果你在中斷1中沒有保存A,這時被高優先順序的中斷2所中斷,而高優先順序的中斷運行後,A的值被改變了,由於你沒有保存A,所以無法恢復,這樣再返回中斷1執行的時候就可能產生錯誤的執行結果。

Ⅲ 51單片機的硬體結構

本文主要講解51單片機的硬體結構,而且只介紹重點知識。

由上圖可以看出,51單片機組成結構包括以下幾個部分:

時序信號:一類用於片內各功能的部件的控制,另一類用於片外存儲器或IO埠的控制(這個對用戶來說是比較重要的,在定時器部分會講)

通過修改PSW中的RS1、RS0兩位的狀態,就能任選一個工作寄存器區。這個特點提高了MCS-51現場保護和現場恢復的速度。對於提高CPU的工作效率和響應中斷的速度是很有利的。若在一個實際的應用系統中,不需要四組工作寄存器,那麼這個區域中多餘單元可以作為一般的數據緩沖器使用。

按存儲結構可分為二類:一類是哈佛結構,另一類是普林斯頓結構。
①哈佛結構
哈佛結構是程序存儲器地址空間與數據存儲器地址空間分開的單片機結構,如80C51單片機採用哈佛結構,所以80C51單片機的程序存儲器地址空間與數據存儲器地址空間是分開的,各有64K存儲空間。

②普林斯頓結構
普林斯頓結構是程序存儲器地址空間與數據存儲器地址空間合並的單片機結構,如MCS-96單片機採用普林斯頓結構,所以MCS-96單片機的程序存儲器地址空間與數據存儲器地址空間是合並的,共有64K存儲空間。

P3口還有第二功能,表如下:

若TI 或 RI 被置位,必須用軟體清零,硬體不能將其清零。

在不設置IP優先順序寄存器的話,單片機內部會按這個默認順序優先順序去響應各個中斷。

上電復位後除埠鎖存器,堆棧指針,SBUF外,單片機內部的復位電路向所有的特殊功能寄存器寫入00H。SBUF的值是不能確定的。
復位還使ALE和PSEN信號變為無效(高電平),而內部RAM不受影響。但由於VCC上電復位後,RAM內容不定,除非是退回低功耗方式的復位。

閱讀全文

與51單片機現場保護相關的資料

熱點內容
復盛製冷壓縮機 瀏覽:979
雲伺服器共享手機流量 瀏覽:833
星界邊境像素壓縮 瀏覽:454
演算法分析與設計二手 瀏覽:981
學編程如何配電腦 瀏覽:968
怎麼看特徵找卡密的加密方式 瀏覽:524
方舟非官方伺服器怎麼賺錢 瀏覽:514
明日之後伺服器無效是怎麼回事 瀏覽:270
蛋殼公寓app如何查水電表 瀏覽:718
ad20庫中的51單片機怎麼找 瀏覽:624
阿里雲伺服器有點卡嗎 瀏覽:215
蘋果7如何讓app後台運行 瀏覽:170
耐克app預售產品哪裡看 瀏覽:209
補全演算法一年級 瀏覽:131
evd數據調校軟體加密 瀏覽:442
app聽課與微信如何設置分屏 瀏覽:911
加密的excel怎麼撤銷 瀏覽:43
java動態數組初始化 瀏覽:978
編譯後程序塊過大不適合 瀏覽:675
李煜pdf 瀏覽:848