微控制器中必須先開全域性中斷EA才能在後面開啟定時器中斷嗎

時間 2021-09-01 18:49:17

1樓:匿名使用者

你仔細看中斷系統的示意圖,ea的作用相當於一個」總閘「,而定時器的et0只是支線上的一個開關。哪個先哪個後沒有關係的,取決於程式設計的習慣。不過一般的程式設計都是先把定時器初始化完成之後,直到真正執行主程式前才讓ea=1,這樣避免其他外設因為產生中斷而可能造成的誤操作。

2樓:達晟鮮芳洲

是回到main裡,但不是從頭開始。是**進入中斷,返回時就到進中斷前那裡。

你程式while(1)等待中斷,一般就回到這裡。

3樓:匿名使用者

可以先開區域性中斷再開全域性中斷的。你可以理解這些中斷開關在程式的角度來看只是操作兩個變數(實際上是兩個暫存器的值,誰先誰後沒有關係),當微控制器判斷 if (ea==1 && et0==1) 條件成立的時候才響應t0時鐘計數器溢位這個事件,呼叫該中斷函式。

4樓:匿名使用者

et0和ea兩者是邏輯與的關係,誰前誰後都能開啟中斷。重要的是兩者在程式中先後開放的時機合不合適。如彙編中et0 = 1接著下一句就是ea = 1,或者兩者倒過來,對程式根本沒什麼影響,但如果ea早就置位了,到了該讓t0發生中斷的時候,et0還不置位,那麼中斷照樣不會發生。

5樓:

應該問題不大,這就像是電路中2開關,哪個先開不是問題。

6樓:匿名使用者

不對啊 先開 的定時器

51微控制器,只寫開定時器中斷,沒寫啟動定時器和兩個都開時有啥區別?一: ea=1 et0=1

7樓:匿名使用者

只寫前兩行證明你將定時器的中斷開啟了,也就是說如果有溢位的話,就可以進入中斷服務了,但是你tr0沒有置1的話,定時器就不會工作,也就是說始終不會有溢位的事件發生。

在用51程式設計時,可不可以在中斷函式裡關掉當前中斷並且開啟或關上定時器。比如:

8樓:y穎哥哥

1、在中斷服務程bai

序裡,關閉中du

斷允許標誌當然zhi可以(只是這個中斷暫時dao被關閉了,如內果在其他程式中沒有開啟容中斷,則這個中斷服務程式不會再被執行),同樣也可以啟停定時器。

看了你的追問,我覺得你的要求完全可以實現,只是在程式設計的時候,要細緻一些,把邏輯理清楚就可以了。

我以前做過一個計程車計價器,里程資料也是從外部中斷進來,但在空車(也就是沒有乘客的時候),我就把這個中斷給關了,雖然里程資料通過感測器還在不斷到達中斷口,系統不會做任何反應。

9樓:

怎麼可能在當前中斷裡關閉當前中斷呢?開啟或關上定時器是可以的。中斷是應該先退出的,再對定時器進行操作。

51微控制器中的定時器中斷是怎麼用的 ?

10樓:娛樂小八卦啊

**如下:

//實現led燈一秒亮滅閃爍

void main()

tmod=0x01;//設定定時器0為工作方式1(m1 m0為01)

th0=(65536-45872)/256;//裝初值11.0582晶振定時50ms數為45872

tl0=(65536-45872)%256;

ea=1;//開總中斷

et0=1;//開定時器0中斷

tr0=1;//啟動定時器0

while(1);//程式停止在這裡等待中斷髮生

void t0_time() interrupt 1

tmod=0x01;//重灌初值

th0=(65536-45872)/256;

num++;//num每加一次判斷一次是否到20次

if(num==20)//如果到了20次,說明1秒時間到

num=0;//num清0重新計數

led=~led1;

擴充套件資料

定時器有兩種工作模式,分別為計數模式和定時模式。對px,y的輸入脈衝進行計數為計數模式。定時模式,則是對mcu的主時鐘經過12分頻後計數。

因為主時鐘是相對穩定的,所以可以通過計數值推算出計數所經過的時間。

51微控制器計數器的脈衝輸入腳。主要的脈衝輸入腳有px,y, 也指對應t0的p3.4和對應t1的p3.

5,主要用來檢測片外來的脈衝。而引腳18和19則對應著晶振的輸入脈衝,脈衝的頻率和週期為

f = f/12 = 11.0592m/12 = 0.9216mhz      t = 1/f = 1.085us

51計數器的計數值存放於特殊功能暫存器中。t0(tl0-0x8a, th0-0x8c), t1(tl1-0x8b, th1-0x8d)

定時器常用作定時時鐘,以實現定時檢測,定時響應、定時控制,並且可以產生ms寬的脈衝訊號,驅動步進電機。定時和計數的最終功能都是通過計數實現,若計數的事件源是週期固定的脈衝則可實現定時功能,否則只能實現計數功能。因此可以將定時和計數功能全由一個部件實現。

11樓:匿名使用者

所以中斷的使用:

1.開全域性中斷 51是 ea = 1

2.對應中斷使能 比如定時器1 et1 = 1、定時器0 et0 = 1

3.定時器工作方式配置: 有三種方式 雙8位定時 16位定時 還有捕捉方式 定時器2有4種 ,具體不介紹了 tmod 是定時器0和定時器1方式配置的暫存器 tmod = 0x01,定時器0工作在方式1(16位計數)

4.開啟定時器 tr0 = 1;定時器1開啟是 tr1 = 1;

5.中斷服務程式:就是定時時間到,你要處理的事務。

例子://50ms定時

void main(void)

void timer0_isr(void) intterupt 1 //中斷服務程式

微控制器串列埠和定時器中斷同時開啟 50

12樓:匿名使用者

如果串列埠也是用的t1,就不行。

如果不是,就可以。

利用51微控制器的定時器1的溢位率產生波特率,並不需要開啟 t1 的中斷。

如果開啟了,你就應該編寫相應的中斷程式。

如果,你沒有寫中斷程式,那麼,它中斷後,自然就會給你添亂。

13樓:匿名使用者

無圖無真相。89不離10是程式問題。

微控制器中查詢和中斷的本質區別,微控制器中查詢和中斷的本質區別?

說一下個人的理解,什麼時候用中斷,一般的微控制器中斷響應時間也就是一個或兩個機器週期這樣,所以如果我們要處理的東西要求時間很嚴格,那就要在中斷服務程式裡來出來,比如常用的傳送或接收非同步通訊資料,傳送接收遙控訊號,等等.這個時候就要用中斷來做.什麼時候用查詢 一般一些處理事件要求時間不是很嚴格的情況...

51微控制器中斷處理程式中關中斷的問題

中斷保護現場,是為了你中斷子程式執行完以後能夠返回到你程式中中斷點,即產生中斷的地方,使程式能夠繼續向下執行!如過你說的不用保護現場的話,那麼程式執行完以後就不能夠回到現場,那麼你的程式將不知道要跳轉到那裡去了,也就是飛鳥,呵呵 你說的中斷巢狀,也是一樣的,兩者都要保護現場,不然你也不能夠回到現場,...

微控制器中IE 0x82代表什麼,微控制器中斷程式中,「IE 0X82 」與「EA 1 ET0 1 」效果一樣是吧

楊子電影 e是中斷允許暫存器,其值為82時,二進位制為1000 0011,ie.7位為1表示cpu開放中斷,ie.1位也為1,表示允許定時器t0溢位中斷 ie.0位為1,表示允許外部中斷0中斷。mcs 51微控制器的邏輯部件,包括一個8位cpu及片內振盪器 80514b掩膜rom 87514kbep...