SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
7.12 多中断操作举例
在同一时刻,系统中可能出现多个中断请求。此时,用户必须根据系统的要求对各中断进行优先权的设置。中断请求
标志IRQ 由中断事件触发,当IRQ 处于有效值“1”时,系统并不一定会响应该中断。各中断触发事件如下表所示:
中断
有效触发
P00IRQ
P01IRQ
T0IRQ
由PEDGE 控制
由PEDGE 控制
T0C 溢出
TC0IRQ
TC1IRQ
ADCIRQ
TC0C 溢出
TC1C 溢出
AD 转换结束
多个中断同时发生时,需要注意的是:首先,必须预先设定好各中断的优先权;其次,利用IEN 和IRQ 控制系统是
否响应该中断。在程序中,必须对中断控制位和中断请求标志进行检测。
¾
例:多中断条件下检测中断请求。
ORG
JMP
8H
INT_SERVICE
INT_SERVICE:
…
; 保存ACC 和PFLAG。
INTP00CHK:
INTP01CHK:
INTT0CHK:
INTTC0CHK:
INTTC1CHK:
INTADCHK:
INT_EXIT:
; 检查是否有INT0 中断请求。
; 检查是否使能INT 中断。
; 跳到下一个中断。
; 检查是否有INT0 中断请求。
; 进入INT0 中断。
; 检查是否有INT1 中断请求。
; 检查是否使能INT1 中断。
; 跳到下一个中断。
; 检查是否有INT1 中断请求。
; 进入INT1 中断。
; 检查是否有T0 中断请求。
; 检查是否使能T0 中断。
; 跳到下一个中断。
; 检查是否有T0 中断请求。
; 进入T0 中断。
; 检查是否有TC0 中断请求。
; 检查是否使能TC0 中断。
; 跳到下一个中断。
; 检查是否有TC0 中断请求。
; 进入TC0 中断。
B0BTS1
JMP
B0BTS0
JMP
FP00IEN
INTP01CHK
FP00IRQ
INTP00
B0BTS1
JMP
B0BTS0
JMP
FP00IEN
INTT0CHK
FP01IRQ
INTP01
B0BTS1
JMP
B0BTS0
JMP
FT0IEN
INTTC0CHK
FT0IRQ
INTT0
B0BTS1
JMP
B0BTS0
JMP
FTC0IEN
INTTC1CHK
FTC0IRQ
INTTC0
; 检查是否有TC1 中断请求。
; 检查是否使能TC1 中断。
; 跳到下一个中断。
; 检查是否有TC1 中断。
; 进入TC1 中断。
B0BTS1
JMP
B0BTS0
JMP
FTC1IEN
INTADCHK
FTC1IRQ
INTT1
; 检查是否有ADC 中断请求。
; 检查是否使能ADC 中断。
B0BTS1
JMP
B0BTS0
JMP
…
FADCIEN
INT_EXIT
FADCIRQ
; 检查是否有ADC 中断请求。
; 进入ADC 中断。
INTADC
; 恢复ACC 和PFLAG。
; 退出中断。
RETI
SONiX TECHNOLOGY CO., LTD
Page 67
Version 1.1