51单片机的中断
总序
51中断源分为两种类型,一类是外部中断源,其中包括INT0和INT1;另一类是内部终端源,包括两个定时器/计数器(T0和T1)的溢出中断(TF0和TF1)和串行口的发送/接收中断(TI/RI)。
特殊功能寄存器
51单片机有4个专用寄存器用于中断的控制,这四个寄存器分别为定时器/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)、中断允许控制寄存器(IE)、中断优先级控制寄存器(IP)。
- 定时器/计数器控制寄存器
TR0和TR1用于定时器/计数器启动控制,
IT0与IT1为外部中断请求信号方式控制位,IT=1为脉冲触发(下降沿),IT=0为低有效电平触发
IT0=0 //外部中断0的中断触发信号方式为脉冲方式
IT1=1 //外部中断1的中断触发信号方式为电平方式
IE0(IE1)为外部中断的请求标志位,当CPU检测到P3.2(P3.3)端有中断信号时,由硬件置位,使IE=1,请求中断中断程序响应后,根据不同中断触发方式,有不同的清除方式。
TF0(TF1)为定时器/计数器溢出标志位,中断程序执行后,由硬件自动清0。如果使用查询方式,此位作为状态位供查询,查询后需软件清0;
while(TF0==1)
{
TF0=0;
//
}
TR0(TR1)定时器/计数器运行控制位;
TR0(TR1)=0 时停止定时器/计数器工作
TR0(TR1)=1 时启动定时器/计数器工作。
该为需要用软件使其置1或清0
- 中断允许控制寄存器(IE)
EA 中断允许控制寄存器
ES 串口中断允许位
ET1(ET0) 定时器/计数器1(0)中断允许位
EX1(EX0) 外部中断1(0)中断允许位
3.中断优先控制寄存器(IP)
单片机由两个中断优先级:高级中断和低级中断
PS 串口中断
PT1(PT0) 定时器/计数器1(0)中断
PT1(PT0) 外部中断1(0)中断
PT1=1; //设置定时器/计数器1中断位高级中断
PS=0; //设置串口中断位低级中断
- 串口控制寄存器(SCON)
其中高6位位串口控制,将在串口部分介绍。
TI 串口发送中断标志位,发送完一帧串行数据后,由硬件置1,其清0必须有软件完成
RI 串口接收中断标志位,接收完一帧串行数据后,由硬件置1,其清0必须有软件完成
RI与TI二者任一置1都可以产生串口中断请求
中断优先级与中断函数
- 中断优先级
(1).中断优先级高的能够中断优先级低的中断服务;
(2).相同优先级的中断源之间不能相互中断对方的中断服务; - 中断函数结构
函数类型 函数名()interrupt n [using n]
n为中断号
0 外部中断0
1 定时器/计数器溢出中断0
2 外部中断1
3 定时器/计数器1溢出中断
4 串行口发送/接收中断
外部中断0函数示例
void InitialInt0(void) //外部中断0初始化函数
{
EA=1; //使能总中断
IT0=1; //触发方式为下降沿触发
EX0=1; //使能外部中断0
}
void Int0(void) interrupt 0
{
//此处填写中断执行程序
}
第一次写博客,如有什么错误或建议,还望大佬指出