手册P538
中断
中断源
STC15W4K32S4 系列提供了21个中断请求源:
外部中断(5):外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)、外部中断4(INT4)
定时器中断(5):定时器0中断、定时器1中断、定时器2中断、定时器3中断、定时器4中断
串口中断(4):串口1中断、串口2中断、串口3中断、串口4中断
SPI中断(1):SPI中断
A/D转换中断
低压检测(LVD)中断
CCP/PWM/PCA中断
比较器中断
PWM中断
PWM异常检测中断
中断优先级最低为0,数字越大优先级越高。
加黑加下划线的中断,中断优先级固定为0级,其它的中断都具有2个中断优先级。
中断查询次序:
当收到多个相同优先级的中断时,按照内部的顺序响应,这个顺序也就是中断号。

中断服务函数:
interrupt 后面的数字为中断号,函数名可自定义。
void Int0_Routine(void) interrupt 0;
void Timer0_Rountine(void) interrupt 1;
void Int1_Routine(void) interrupt 2;
void Timer1_Rountine(void) interrupt 3;
void UART1_Routine(void) interrupt 4;
void ADC_Routine(void) interrupt 5;
void LVD_Routine(void) interrupt 6;
void PCA_Routine(void) interrupt 7;
void UART2_Routine(void) interrupt 8;
void SPI_Routine(void) interrupt 9;
void Int2_Routine(void) interrupt 10;
void Int3_Routine(void) interrupt 11;
void Timer2_Routine(void) interrupt 12;
void Int4_Routine(void) interrupt 16;
void S3_Routine(void) interrupt 17;
void S4_Routine(void) interrupt 18;
void Timer3_Routine(void) interrupt 19;
void Timer4_Routine(void) interrupt 20;
void Comparator_Routine(void) interrupt 21;
void PWM_Routine(void) interrupt 22;
void PWMFD_Routine(void) interrupt 23;中断规则
低优先级中断可被高优先级中断打断,反之不能。
中断响应时,不能被它的同级中断打断。
中断触发时机

中断优先级
外部中断
外部中断触发方式:
外部中断0、1:上升沿或下降沿触发、仅下降沿触发
外部中断2、3、4:仅下降沿触发
外部中断2、3、4的中断标志位被隐藏起来了,对用户不可见。
所有的外部中断在响应后,中断标志位被自动清零。
另外,关闭外部中断 EXn=0(2、3、4)时,也会自动清零。
外部中断程序:
(1)INT0、1
IE0 = 0; // INT0中断请求标志位清"0"
EX0 = 1; // 打开INT0中断
IT0 = 1; // 1 仅下降沿触发 0 上升沿或下降沿触发
EA = 1; // 打开总中断INT1就把IE0、EX0、IT0全改为1就行。
void INT0_Isr (void) interrupt 0
{
...
}(2)INT2、3、4
对于这三个外部中断,只有开、关控制。
AUXR2 |= 0x10; //使能INT2中断
AUXR2 |= 0x20; //使能INT3中断
AUXR2 |= 0x40; //使能INT4中断
EA = 1;