❶ 單片機中斷有什麼作用
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啊,不然它始終會中斷的,不可能去執行程序去了...)
❷ 單片機中斷是怎麼回事
中斷是指CPU在正常執行程序的過程中,由於計算機內部或外部發生了另一事件(如定時時間到,超壓報警等),請求CPU迅速去處理,CPU暫時停止當前程序的運行,而轉去處理所發生的事件,待發生的事件處理完以後,CPU再返回到原來暫停的地方,繼續執行原來程序,這樣一個過程稱為中斷。x0dx0a設置中斷的必要性 x0dx0a1.分時操作 採用中斷技術能夠使CPU與外圍設備並行工作,實現分時操作,大大提高了CPU的利用率。 x0dx0a2.實時處理 實時控制是單片機系統一個重要的應用領域,它要求CPU對工作現場的各種參數和狀態的隨機變化能夠快速響應並加以及時處理,而這些功能只有採用中斷技術才能得以實現。x0dx0a3.故障處理 計算機在運行過程中常常會突然發生故障,如電源掉電、內存出錯及程序故障等。
❸ 什麼是單片機的中斷
不同的計算機其硬體結構和軟體指令是不完全相同的,因此,中斷系統也是不相同的。
計算機的中斷系統能夠加強CPU對多任務事件的處理能力。中斷機制是現代計算機系統中的基礎設施之一,它在系統中起著通信網路作用,以協調系統對各種外部事件的響應和處理。中斷是實現多道程序設計的必要條件。 中斷是CPU對系統發生的某個事件作出的一種反應。
引起中斷的事件稱為中斷源。中斷源向CPU提出處理的請求稱為中斷請求。發生中斷時被打斷程序的暫停點稱為斷點。
CPU暫停現行程序而轉為響應中斷請求的過程稱為中斷響應。處理中斷源的程序稱為中斷處理程序。
CPU執行有關的中斷處理程序稱為中斷處理。而返回斷點的過程稱為中斷返回。中斷的實現實行軟體和硬體綜合完成,硬體部分叫做硬體裝置,軟體部分稱為軟體處理程序。
響應處理
大多數中斷系統都具有如下幾方面的操作,這些操作是按照中斷的執行先後次序排列的。
1、 接收中斷請求。
2、 查看本級中斷屏蔽位,若該位為1則本級中斷源參加優先權排隊。
3、 中斷優先權選擇。
4、 處理機執行完一條指令後或者這條指令已無法執行完,則立即中止現行程序。接著,中斷部件根據中斷級去指定相應的主存單元,並把被中斷的指令地址和處理機當前的主要狀態信息存放在此單元中。
5、 中斷部件根據中斷級又指定另外的主存單元,從這些單元中取出處理機新的狀態信息和該級中斷控製程序的起始地址。
6、 執行中斷控製程序和相應的中斷服務程序。
7、 執行完中斷服務程序後,利用專用指令使處理機返回被中斷的程序或轉向其他程序。
沖突
在一些罕見的情況下,兩個ISA設備可以共享相同的 IRQ,只要它們不同時使用即可。為了解決這個問題,後來的PCI 匯流排允許 IRQ 共享。PCI Express沒有物理中斷線,並使用消息信號中斷(MSI) 到操作系統(如果可用)。
在早期的 IBM 兼容個人計算機中,中斷曾經是一種常見的硬體錯誤,當兩個設備嘗試使用相同的中斷請求(或 中斷)向可編程中斷控制器(PIC)發出中斷信號時會收到該錯誤。
PIC 期望每條線路僅來自一個設備的中斷請求,因此沿同一條線路發送中斷信號的多個設備通常會導致 中斷 沖突,從而導致計算機死機。
例如,如果在系統中添加數據機擴展卡並分配給中斷4,傳統上分配給串列埠1,則可能會導致中斷沖突。最初,中斷 7 是使用音效卡的常見選擇,但後來發現 中斷 7 會干擾列印機埠(LPT1)時使用了中斷5。該串列埠經常禁用可以用於其他設備的中斷線。
中斷 2/9 是 MPU-401 MIDI 埠的傳統中斷線,但這與ACPI系統控制中斷(SCI 在 Intel 晶元組上硬連線到 中斷9)沖突;
這意味著 ISAMPU-401帶有硬連線中斷2/9 的卡和帶有硬編碼 中斷 2/9 的 MPU-401 設備驅動程序不能在啟用 ACPI 的系統上以中斷驅動模式使用。
以上內容參考網路-中斷
❹ 單片機編程時中斷程序如何使用
中斷程序不是使用的,是當單片機的中斷源有中斷請求時,以允許中斷的情況下,就是自動轉到中斷程序去執行了。所以,編程時,需要在中斷完成什麼任務,都要寫到中斷程序中就行了,會自己去執行的。而不需要你去使用的。
❺ 如何給這個單片機函數加一個外部中斷
這要看單片機的IO埠是否支持外部中斷,這要查晶元資料,中斷需要專門的格式,比如INT0引腳的外部中斷:
void EX_INT0() interrupt 0 // INT0外部中斷模式 0
{
//中斷代碼
}
❻ 51單片機中斷/定時器/計數器
89C51/52的中斷系統有5個中斷源 ,2個優先順序,可實現二級中斷嵌套 。
1、(P3.2)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.2引腳上出現有效的中斷信號時,中斷標志IE0(TCON.1)置1,向CPU申請中斷。
2、(P3.3)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.3引腳上出現有效的中斷信號時,中斷標志IE1(TCON.3)置1,向CPU申請中斷。
3、TF0(TCON.5),片內定時/計數器T0溢出中斷請求標志。當定時/計數器T0發生溢出時,置位TF0,並向CPU申請中斷。
4、TF1(TCON.7),片內定時/計數器T1溢出中斷請求標志。當定時/計數器T1發生溢出時,置位TF1,並向CPU申請中斷。
5、RI(SCON.0)或TI(SCON.1),串列口中斷請求標志。當串列口接收完一幀串列數據時置位RI或當串列口發送完一幀串列數據時置位TI,向CPU申請中斷。
IE寄存器:
中斷允許控制寄存器分為兩層結構,第一級結構為中斷允許總控制EA,只有當EA處於中斷允許狀態,中斷源中斷請求才能夠得到允許;當EA處於不允許狀態時,無論IE寄存器中其他位處於什麼狀態,中斷源中斷請求都不會得到允許。第二級結構為5個中斷允許控制位,分別對應5個中斷源的中斷請求,當對應中斷允許控制位為1時,中斷源中斷請求得到允許。
EX0:外部中斷0允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。當EX0=1( SETB EX0 )時,同時單片機P3.2引腳上出現中斷信號時,單片機中斷主程序的執行而「飛」往中斷服務子程序,執行完後通過中斷返回指令RET 動返回主程序。當EX0=0( CLR EX0)時,即使單片機P3.2引腳上出現中斷信程序也不會從主程序「飛」 出去執行,因為此時單片機的CPU相當於被「堵上了耳朵」,根本接收不到P3.2引腳上的中斷信號,但是這並不表示這個信號不存在。如果單片機的CPU有空查一下TCON中的IE0位,若為1就說明有中斷信號出現過。
ET0:T0溢出中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。
EX1:外部中斷1允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。當EX1=1( SETB EX1)時,並且外部P3.3引腳上出現中斷信號時,單片機CPU會中斷主程序而去執行相應的中斷服務子程序;當EX1=0( CLR EX1)時使外部P3.3引腳上即使出現中斷信號,單片機的CPU也不能中斷主程序轉而去行中斷服務子程序。 [3] 因此,可以這樣認為,EX0和EX1是決定CPU能否感覺到外部引腳P3.2P3.3上的中斷信號的控制位。
ET1:T1溢出中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。
ES:串列中斷允許位。ES=1,允許串列口中斷;ES=0,禁止串列口中斷。
EA:中斷總允許位。EA=1,CPU開放中斷;EA=0,CPU禁止所有的中斷請求。總允許EA好比一個總開關。EA就相當於每家水管的總閘,如果總閘不開,各個龍頭即使開了也不會有水;反過來,如果總閘開了而各個分閘沒開也不會有水,所當我們想讓P3.2和P3.3引腳上的信號能夠中斷主程序則必須將EA位設置為0(CLR EA)。
TCON寄存器:
各位的標識如下:
TF1:定時器1溢出標志位。當定時器1計滿溢出時,由硬體使TF1置1,並且申請中斷,進入中斷服務程序,有硬體自動清0 ,在查詢方式下用軟體清0.
TR1:定時器運行控制位,TR1置1是開啟定時器1,TR1置0時關閉定時器1.
TF0:定時器0溢出標志位。當定時器0計滿溢出時,由硬體使TF0置1,並且申請中斷,進入中斷服務程序,有硬體自動清0 ,在查詢方式下用軟體清0.
TR0:定時器運行控制位,TR0置1是開啟定時器0,TR0置0時關閉定時器0.
IE1:外部中斷1請求標志位。
IT1:外部中斷1觸發方式選擇位。當IT1置0時,為低電平觸發;當IT1置1時,為下降沿觸發。
IE0:外部中斷0請求標志位。
IT0:外部中斷0觸發方式選擇位。當IT0置0時,為低電平觸發;當IT0置1時,為下降沿觸發。
51單片機外部中斷響應條件:
1、中斷源有中斷請求;
2、中斷源的中斷允許位為1(設置IE寄存器相關位);
3、CPU開中斷(設置IE寄存器開中斷,即EA=1)
CPU時序的有關知識:
振盪周期:為單片機提供定時信號的振盪源的周期(晶振周期或外加振盪周期)
狀態周期:2個振盪周期為1個狀態周期,用S表示。
機器周期:1個機器周期含6個狀態周期,12個振盪周期。
指令周期:完成1條指令所佔用的全部時間,它以機器周期為單位。
定時器的其他知識點:
1、51單片機有兩組定時器/計數器,因為既可以定時,又可以計數,故稱之為定時器/計數器。
2、定時器/計數器和單片機的CPU是相互獨立的。定時器/計數器工作的過程是自動完成的,不需要CPU的參與。
3、51單片機中的定時器/計數器是根據機器內部的時鍾或者是外部的脈沖信號對寄存器中的數據加1。
4、有了定時器/計數器之後,可以增加單片機的效率,一些簡單的重復加1的工作可以交給定時器/計數器處理。CPU轉而處理一些復雜的事情。同時可以實現精確定時作用。
與定時器/計數器有關的寄存器:
1、TMOD寄存器
2、TCON寄存器
3、IE寄存器
4、THx/TL寄存器
工作方式寄存器TMOD:
工作方式寄存器TMOD用於設置定時/計數器的工作方式,低四位用於T0,高四位用於T1。其格式如下:
M1M0:工作方式設置位。定時/計數器有四種工作方式。一般我們廳方式1和方式2:
控制寄存器TCON:
TCON的低4位用於控制外部中斷,已在前面介紹。TCON的高4位用於控制定時/計數器的啟動和中斷申請。其格式如下:
TF1(TCON.7):T1溢出中斷請求標志位。T1計數溢出時由硬體自動置TF1為1。CPU響應中斷後TF1由硬體自動清0。T1工作時,CPU可隨時查詢TF1的狀態。所以,TF1可用作查詢測試的標志。TF1也可以用軟體置1或清0,同硬體置1或清0的效果一樣。
TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置0時,T1停止工作。TR1由軟體置1或清0。所以,用軟體可控制定時/計數器的啟動與停止。
TF0(TCON.5):T0溢出中斷請求標志位,其功能與TF1類同。
TR0(TCON.4):T0運行控制位,其功能與TR1類同。
IE中斷開關寄存器:
用於開啟cpu中斷和對應的中斷位。
THx和TL定時/計數存儲寄存器:
THx存儲高8位數據,TLx存儲低8位數據。
定時器/計算器初值計數公式:
計數個數與計數初值的關系為:X=2^n-N
N是需要計數的值;n與設置定時器/計數器的工作方式有關(可能為8、13、16);X是需要設置在THx和TLx的初值。
使用定時器/計算器的初始化流程:
1、對TMOD賦值,以確定T0和T1的工作方式。
2、計算初值,並將其寫入TH0、TL0或TH1、TL1。
3、中斷方式選擇,則對EA賦值,開放定時器中斷。
4、使TR0或TR1置位,啟動定時/計數器定時或計數。
❼ 單片機的中斷
你是想問什麼是中斷嗎?
單片機中斷分外部中斷、定時器中斷。外部中斷即通過設置相應寄存器,可以使單片機的相應引腳有高信號時,暫時放棄執行主程序,轉而去執行中斷程序,中斷程序執行完後,繼續執行主程序;定時器中斷也是通過設置相應寄存器,使單片機內部的累加器運行(不會影響單片機執行主程序),當累加器溢出時(即累加器的所有二進制位都加到了1)會產生中斷信號,此時,單片機暫時放棄執行主程序,轉而去執行中斷程序,中斷程序執行完後,繼續執行主程序。
相關資料書上介紹的很詳細,仔細看看就行。
❽ 單片機中什麼叫中斷
單片機中的中斷是指在中斷源信號觸發條件滿足的時候,觸發中斷機制,PC跳轉到中斷向量,原有上下文入棧的行為,是一種工作機制。在中斷向量中,PC跳轉到指定的ISR(中斷服務程序)執行完成後退出中斷,上下文出棧回到原來進入中斷時的位置繼續執行原有程序的工作機制。