1. 程式人生 > >關於51微控制器外部中斷的觸發方式

關於51微控制器外部中斷的觸發方式

51微控制器有兩個外部中斷申請輸入端:INT0 和 INT1。
51微控制器的外部中斷,分為低電平觸發和下降沿觸發。在微控制器內部,分別由控制位 IT0 和 IT1 來控制。
復位時,IT0/1 都為 0,即預設為低電平觸發。

一般來說,外設第一次向微控制器申請外部中斷時,微控制器使用那種觸發方式,並無什麼差別。
但是,返回主程式後,如果外部申請訊號仍然是低電平,就有區別了。

在採用低電平觸發時,微控制器執行了一條主程式的指令後,就會又重新進入中斷程式。

而採用下降沿觸發時,即使 INT0/1 引腳仍然是低電平,微控制器也不會重新進入中斷程式。
如果外設想要申請第二次中斷,必須是先恢復高電平,重新再送來一次下降沿才行。

那麼,為了避免僅僅來了一次申請,就產生多次中斷的現象,還是應該採用下降沿觸發中斷的方式。

如果非要使用低電平觸發呢,那必須在退出前,反覆的檢測中斷輸入端的電平。
只有當外設撤消了中斷申請之後,再退出中斷程式,這才能避免多次的重新中斷。

到底應該採用那種觸發方式,這個確實是應該根據外設的特點來選取。
但是在多數場合,採用下降沿觸發方式,還是比較適用的。
即在復位後,應該先執行:

  SETB  IT0
  SETB  IT1

有人在百度知道,提出了一個問題,希望能顯示出低電平觸發和下降沿觸發的區別。

題目的基本內容如下。

;微控制器彙編程式題:要求一定是彙編

;AT89C51中P3.2接開關1,P3.3接開關2。
;當開關1, 2全都斷開時執行主程式,P1口的8個LED從P1.0~P1.7逐個點亮並反覆迴圈。
;當開關1閉合時進入中斷服務程式P2口的8個LED閃爍6次。
;開關2起到對開關1觸發方式進行選擇的作用:
;第一次閉合開關2時開關1為下降沿觸發且P0.0連線的LED點亮;
;第二次閉合開關2時開關1為低電平觸發且P0.0連線的LED熄滅。
;求一個用匯編語言編寫的完整程式。

根據上述題目要求,做而論道畫出了PROTEUS模擬實驗電路如下:

;下列程式,可以滿足要求。
        ORG   0000H
        LJMP  MAIN
        ORG   0003H
        LJMP  X0_INT
        ORG   0013H
        LJMP  X1_INT
;------------------------------------
MAIN:
        SETB  IT1
        MOV   SP, #60H
        MOV   IE, #85H
        MOV   A,  #254
M_LOOP:
        MOV   P1, A
        RL    A
        CALL  DL_500MS
        SJMP  M_LOOP
;------------------------------------
X0_INT:
        PUSH  PSW
        SETB  RS1
        MOV   R4, #12
SH_6:
        XRL   P2, #255
        CALL  DL_500MS
        DJNZ  R4, SH_6
        POP   PSW
        RETI
;------------------------------------
X1_INT:
        CPL   IT0
        CPL   P0.0
        RETI
;-------------------------------延時子程式
DL_500MS:
        MOV   R5, #9      ;1T
DL1:    MOV   R6, #128    ;1T
DL2:    MOV   R7, #215    ;1T
        NOP               ;1T
DL3:    DJNZ  R7, DL3     ;2T   2 * 215 = 430 T
        DJNZ  R6, DL2     ;2T   [1+1+430+2] * 128 = 55552 T
        DJNZ  R5, DL1     ;2T   [1+55552+2] * 9 = 499995 T
        RET               ;2T   1 + 499995 + 2 = 499998 T
;------------------------------------
END

;===============================================
原題網址:http://zhidao.baidu.com/question/270426318.html
提問者對於答案的評價:謝了,採用你的答案
;===============================================