三个:
1.总中断使能位EA=1
2.相应中断使能 (ET0、EX0……) 打开
3.中断源:外部中断引脚的电平触发、定时器溢出……
oid PxInt0(void) interrupt 0 //定义外部中断0
void PxInt1(void) interrupt 2 //定义外部中断1
void time0_int(void) interrupt 1 //定义定时器0
void time1_int(void) interrupt 3 //定义定时器1
这里为什么是 0 1 2 3的顺序呢~?其实是单片机内部默认的,顺序依次是:
0 外部中断0
1 定时/计数器0
2 外部中断1
3 定时/计数器1
4 串行口中断
这个是没有什么理由的,记住就行,以后要定义一个中断的时候,定义的是哪一个,就在后面加上它的序号就行了,比如void PxInt0(void) interrupt 0 表示外部中断0,就在后面加上interrupt 0.
逐词解释的话。。。如:void PxInt0(void) interrupt 0
void的意思是没有返回值,Pxint0(void)是你定义的函数名,interrupt表示你定义的是中断函数,0表示你定义的是外部中断0
后面的依此类推。
另外,中断函数不需要在main函数前声明,当单片机检测到中断所需的信号时,它会自动立即停止正在进行的工作进入中断函数。
必须满足4个条件:
1:一条指令执行结束
2:CPU处于开中断状态
3:当前没有发生复位,保持和非屏蔽中断请求
4:若当前执行的指令是开中断指令和中断返回指令,则它们执行完后再执行一条指令,CPU才能响应INTR请求
三个:
1.总中断使能位EA=1
2.相应中断使能 (ET0、EX0……) 打开
3.中断源:外部中断引脚的电平触发、定时器溢出……