c51微控制器 中斷,c51微控制器如何使用中斷

2023-02-19 14:55:13 字數 3514 閱讀 6743

1樓:匿名使用者

這個程式是有問題的,第一次中斷時,x先賦值0再加一,x為1,第二次中斷時,又給x賦值0,這樣每次中斷都為1,不可能為2,也就不可能執行到b,建議用全域性變數可以解決這個問題。

還有一個問題,一直在執行中斷程式,下一次中斷來臨時,為同級中斷,同級中斷是否能觸發,這個問題要考慮。

解決辦法:a和b放在主程式中,x為全域性變數。

2樓:紗布爽

應該可以實現。

你應該是用的外部中斷,按下按鍵後觸發中斷,然後進入中斷服務程式。

但是你的程式有問題:

1:中斷程式內你有語句 while(1),這樣你認為你第二次按鍵有意義嗎?

2:不知道你用的什麼型號的微控制器,進入中斷程式時應該暫時關閉外部中斷,防止當前中斷程式還未執行完時你再次按鍵可能帶來的問題。

你可能想解決類似這樣一個問題,用一個按鍵控制一個燈的點亮與熄滅。

按一次:亮,再按:滅,再按,亮。。。

那麼你要做的是定義一個全域性布林量,在中斷程式中改變布林量的值,布林量的高低對應燈泡的亮與滅。(這個變數對應微控制器的一個埠)

3樓:網友

x會變化,不過每次進入中斷程式,x都為0,也就是你每次都執行a部分。

另外加入while(1)程式就永遠在這執行,也就跳不出中斷了,,也不可能進入下次中斷。所以在這不要用while(1)

c51微控制器如何使用中斷

4樓:雨田丫

將按鍵接到或。

main()

}/*外部中斷0服務程式,按下接的開關k=0下面程式被執行 **

int0()interrupt 0

/**外部中斷1服務程式,按下接的開關k=0下面程式被執行 **

int1()interrupt 2

注意,上面的中斷程式,如果執行完後,按鍵k還沒有放開,則中斷程式會再次被執行。為了防止這種情況發生,有以下幾種處理辦法以:

(1)可以在中斷程式中進行判斷,只有放開了按鈕k=1了中斷函式才返回。

(2)可以在進入中斷後關閉中斷,讓ex0或ex1=0。然後在主程式中,需要的時候再開起。

5樓:匿名使用者

允許中斷,那就在這條語句中ea = 1;不允許中斷了,則ea=0;

當然前提是對應的具體的中斷使能是開啟的。

從你的描述看,可以使用外部中斷0,也就是始終令ex0=1,同時將按鍵k連線到微控制器的外部中斷0引腳上。

c51微控制器外部中斷

c51微控制器中斷程式中的interrupt1,2,3是由什麼決定的?

6樓:網友

中斷是指由於某種事件的發生(硬體或者軟體的),計算機暫停執行當前的程式,轉而執行另一程式,以處理發生的事件,處理完畢後又返回原程式繼續作業的過程。中斷是處理器一種工作狀態的描述。

1、int0——外部中斷0,由埠引入,低電平或下降沿引起。預設優先順序最高。

2、int1——外部中斷1,由埠引入,低電平或下降沿引起。預設優先順序第二。

3、t0——定時器/計數器0中斷,由t0計數器計滿回零引起。預設優先順序第三。

4、t1——定時器/計數器1中斷,由t1計數器計滿回零引起。預設優先順序第四。

5、t2——定時器/計數器2中斷,由t2計數器計滿回零引起。預設優先順序第五。

7樓:匿名使用者

由中斷號決定,一般計數器0是interrupt 0,定時器0是interrupt 1,接下來是計數器1,再是定時器1,再是串列埠,有些微控制器還會有adc,串列埠2,pci等中斷,具體看微控制器的資料。

8樓:徐志尚

0,1,2,3,4對應外部0,定時器0,外部1,定時器1,串列埠。

9樓:匿名使用者

外部中斷0,入口地址為0003h,對應的中斷標號為0外部中斷1,入口地址為0013h(十進位制為19),對應中斷標號為2定時器0中斷,入口地址為000bh(十進位制為11),對應中斷標號為1定時器1中斷,入口地址為001bh(十進位制為27),對應標號為3串列埠中斷,入口地址為0023h(十進位制為35),對應中斷標號4入口地址在資料手冊裡有。

10樓:網友

你是講彙編還是c語言程式設計 呀 中斷入口有四個 to,t1,int0,int1

前兩個是定時器\計數器中斷 只要值為0時 只要中斷允許一開啟 就會 調到中斷入口地址 執行指令。

後兩個是外部中斷,視設定方式而定 ,有電平中斷和下降沿中斷兩種方式,同樣,只要中斷允許開啟,埠為低電平\下降沿時進入中斷入口。

89c51微控制器外中斷兩種觸發方式的區別,各適用於何種情況

11樓:學雅思

外中斷兩種方式分為電平觸發方式跟跳沿觸發方式,區別如下:

一、方式不同。

1、電平觸發方式:外部中斷申請觸發器的狀態隨著cpu在每個機器週期取樣到的外部中斷輸入線的電平變化而變化。

2、跳沿觸發方式:外部中斷申請觸發器能鎖存外部中斷輸入線上的負跳變。即便是cpu暫時不能響應,中斷申請標誌也不會丟失。

二、特點不同。

1、電平觸發方式:在中斷服務程式返回之前,外部中斷請求輸入必須無效(即變為高電平),否則cpu返回主程式後會再次響應中斷。

2、跳沿觸發方式:相繼連續兩次取樣,一個機器週期取樣到外部中斷輸入為高,下一個機器週期取樣為低,則置「1」中斷申請觸發器,直到cpu響應此中斷時才清』0』。

三、適用性不同。

1、電平觸發方式:適合於外部中斷以低電平輸入而且中斷服務程式能清除外部中斷請求源(即外部中斷輸入電平又變為高電平)的情況。

2、跳沿觸發方式:適合於以負脈衝形式輸入的外部中斷請求。

12樓:匿名使用者

89c51外部中斷有兩種觸發模式:

1、是下降沿觸發,當從高至低電平轉變時,觸發產生;低電平保持多久都只產生一次。所以,邊沿觸發適合與以負脈衝形式輸入的外部中斷請求。

2、是低電平觸發,在低電平時間內中斷一直有效;因此如果在電平沒有恢復之前中斷程式就已經執行完成從而退出,那麼會在退出後又再次進入中斷;但只要中斷沒有退出是不會重複觸發的。所以,電平觸發方式適合於外部中斷以低電平輸入而且中斷服務能清除外部中斷源的情況(實際中通常採用這樣的做法:在中斷退出前關閉中斷,等後面恰當時機再開啟)。

微控制器c51的中斷是怎麼進入和退出的?

13樓:匿名使用者

只要在函式名後加上interrupt (0~4) using(0~3)即可,其它和c語言的函式設計一樣,而其中interrupt後的0~4分別對應的是外部中斷0、定時器0、外部中斷1、定時器1、串列埠中斷,using後面的0~3分別對應工作暫存器組0~3。

14樓:匿名使用者

首先要看是不是總中斷允許,要是允許,要看是不是有優先順序中斷,要是有就以優先順序為主,要是沒有就按照計算機接到的中斷命令先後進行中斷,不知道您滿意不?求分數!

51微控制器中斷有什麼作用

c51微控制器設計,c51微控制器函式宣告

我這裡有個00 99正計時的程式,你先看看。如果認為基本可以,我再幫你改成倒計時的,並且具有按鍵起動 停止的功能。c51微控制器函式宣告 主函式是起始位置,在主函式main後面的函式必須要有函式宣告另外,在main主函式之前的函式,雖然可以省略函式宣告但編寫順序是有先後的,就是你在主函式裡面呼叫函式a...

微控制器中斷系統工作原理,C51微控制器的中斷系統的結構及其工作原理是什麼

我覺得你應該看看暫存器是怎樣工作的,比如tr0 1 表示定時器中斷 et0 1 表示開啟定時器中斷 es 1 串列埠中斷 ex0 1 外部中斷 ea 1 開啟所有中斷 一般的微控制器書上都有介紹的,而且使用的時候也是比較簡單,直接在程式裡給暫存器寫值就可以了!中斷有硬中斷與軟中斷。中斷有優先度之分,...

c51微控制器中斷程式中的interrupt1,2,3是由什麼決定的

interrupt x是指用的第幾個中斷。1 2 3是由中斷向量表決定的。也就是由微控制器的中斷入口地址的順序決定的。這個是硬體決定的軟體不能改變。例如外部中斷0就是interrupt 0 定時器0 是interrupt 1 外部中斷1是interrupt 2 定時器2是interrupt 3 串列...