SONIX MCU系統,硬體沒有設計中斷的優先順序。但實際應用的過程中,可能需要應用中斷優先順序,可以根據SONIX MCU的特點用軟體來實現。
對各中斷進行優先權的設置,幷根據IEN和IRQ的狀態决定系統是否回應中斷請求。用戶必須在中斷向量裏檢查中斷控制位元和中斷請求標志位元,因此可將具有高優先順序的中斷控制位元和中斷請求標志位元放在前面檢測。
舉例說明:
ISR:
;------------Save ACC--------------------------
b0xch A,AccBuf ;B0xch instruction do not change C,Z flag
b0mov A,PFLAG
B0MOV PflagBuf,A
;---------interrupt first-------------------------
INT0CHK:
B0BTS1 FT0IEN
JMP INTTC0CHK
B0BTS0 FT0IRQ
JMP INTT0
INTTC0CHK: ; Check TC0 interrupt request
B0BTS1 FTC0IEN ; Check TC0IEN
JMP ISR90 ; Jump to exit of IRQ
B0BTS0
FTC0IRQ ; Check TC0IRQ
JMP INTTC0 ; Jump to TC0 interrupt service routine
;-------------exit interrupt-------------------------
ISR90:
B0MOV
A, PflagBuf
B0MOV PFLAG,A ;Restore the PFlag
B0XCH A,AccBuf ;Restore
the Reg. A
;B0xch instruction do not change C,Z flag
RETI ;Exit
the interrupt routine
;---------------------t0-----------------------------
INTT0:
B0BCLR FT0IRQ
INTT090:
JMP ISR90
;---------------------tc0-----------------------------
INTTC0:
B0BCLR FTC0IRQ
INTTC090:
JMP ISR90