微處理器 - STCmicro STC15W104 - Assembly - INT1



參考資訊:
http://plit.de/asem-51/
http://www.stcisp.com/stcisp620_off.html
https://sourceforge.net/projects/mcu8051ide/

I/O的Input中斷可以使用輪詢(Poll)或者中斷向量(Vector)兩種處理方式,輪詢的方式就是一直檢查中斷旗標,藉此得知Input是否有中斷發生,當然這種方式比較耗CPU資源,因為CPU無法在此期間去做其它事情,另一種方式則是在中斷向量表設定要處理的副程式,當Input中斷發生時,因為Input中斷具有高優先權,CPU會優先跳轉到設定的副程式處理Input中斷

設定步驟如下:

1. 開啟中斷功能(EA)
2. 開啟INT1中斷功能(EX1)
3. 設定觸發方式(IT1)
4. 設定中斷向量表(.org 13h)
5. 撰寫中斷副程式(硬體會自動清除中斷旗標)

IE


TCON


main.s

    btn .equ p3.3
    led .equ p3.2

    .org 0h
    jmp _start

    .org 13h
    jmp int1_handle
    
    .org 100h
_start:
    setb ea
    setb ex1
    setb it1
    setb led
    clr c
    jmp $

int1_handle:
    jc i0
    setb c
    clr led
    reti
i0:
    clr c
    setb led
    reti
    .end

P.S. 程式利用C旗標當作LED設定判斷,ON、OFF交互設定

編譯

$ mcu8051ide --compile main.s

完成