51中断:5个 ES串口,ET1定时器1,ET0定时器0,EX1外部中断1,EX0外部中断0
首先要了解相关的与中断有关的寄存器:
IE寄存器:中断控制的寄存器,要实现中断就要配置该寄存器。
EA为总开关,只有先打开EA才能对相应的寄存器进行操作
TCON寄存器:用来控制中断的触发方式,是低电平触发还是下降沿触发,
由图知道:首先相应触发方式,然后看是低电平还是下降沿触发(给0或1,1下降沿触发)然后对应的IE寄存器相当于开关的作用,然后是IP寄存器控制中断的优先级
要是用中断 得记住:这个就是对应中断的对应触发方式的入口
外部中断0:INT0 中断的优先级 0
定时计数器中断0:TF0 1
外部中断1:INT1 2
定时器中断1:TF1 3
串口中断:R1/T1 4
中断函数写的时候,首先要初始化,就是打开相应的中断请求,如打开外部中断0首先定义一个初始化的函数INT0,然后打开触发方式IT0=1,然后打开总开关EA=1;然后打开定时器0的开关EX0=1;然后定义中断0的服务函数,中断号是0,如果打开外部中断1 那么定义一个初始化的函数INT1,然后打开触发方式IT1=1,然后打开总开关EA=1,打开中断的开关EX1=1;注意中断服务函数的入口是2
也可以采用看图配置寄存器来使用,按照16进制看图来配置,如何让产生中断后进行相关操作,可以定义一个状态变量,当产生中断时,状态变量翻转,然后根据相关的状态来进行相关的操作
总结:中断函数首先进行初始化的定义,看是使用外部中断(0,1)0的话先打开下降沿的触发信号IT0,然后再打开总开关EA=1,然后大开外部中断0(INT0)的开关EX0=1,然后定义相关的中断服务函数 中断号为0,中断服务函数中尽量少些程序,可以用状态值来调用中段函数,例如我可以先定义一个状态变量为0,进入中断函数后状态变量为1,然后在定义一个相关的函数进行操作,让状态变量函数成为判断条件,进行完相关的操作后,将状态变量的值该变为原来的状态 值得注意的是在定义相关开关的时候,可以直接对寄存器进行相关的操作,就是直接给0或者1让其打开相关的寄存器,然后写成16进制