(MCU 8051) STC15W104 >> Assembly
INT1
I/O的Input中斷可以使用輪詢(Poll)或者中斷向量(Vector)兩種處理方式,輪詢的方式就是一直檢查中斷旗標,藉此得知Input是否有中斷發生,當然這種方式比較耗CPU資源,因為CPU無法在此期間去做其它事情,另一種方式則是在中斷向量表設定要處理的副程式,當Input中斷發生時,因為Input中斷具有高優先權,CPU會優先跳轉到設定的副程式處理Input中斷。
設定步驟如下:
1. 開啟中斷功能(EA)
2. 開啟INT1中斷功能(EX1)
3. 設定觸發方式(IT1)
4. 設定中斷向量表(.org 13h)
5. 撰寫中斷副程式(硬體會自動清除中斷旗標)
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
完成