在51单片机中共5个中断源,分别为:
总的来说分为内部中断与外部中断
先说内部中断,也就是上图的两种定时器中断(T0,T1)。它们的使用与4个寄存器有关
现在来介绍四种寄存器
中断允许寄存器
中断优先级寄存器
定时器工作方式寄存器
定时器控制寄存器
正如它们的名字一样,先允许,判断优先级,再选择工作方式,最后启动选择的定时器
**
EA:中断允许总开关。(1:所有中断请求被允许;0:所有中断请求被屏蔽)
ES:串行口中断。 (1:允许串口中断;0:禁止串口中断)
ET1:定时器/计数器T1。(1:允许T1溢出中断;0:禁止T1溢出中断)
EX1:外部中断1。(1:允许外部中断1中断;0:禁止外部中断1中断)
ET0:定时器/计数器T0。(1:允许T1溢出中断;0:禁止T1溢出中断)
EX0:外部中断0。(1:允许外部中断1中断;0:禁止外部中断1中断)
**
(一般不太用)
PS:串行口中断。 (1:高优先级;0:低优先级)
PT1:定时器/计数器T1。((1:高优先级;0:低优先级)
PX1:外部中断1。(1:高优先级;0:低优先级)
PT0:定时器/计数器T0。((1:高优先级;0:低优先级)
PX0:外部中断0。((1:高优先级;0:低优先级)
**
GATE:门控制位
(0:定时器的启动与停止仅受TCON中的 TR0 或 TR1 控制)
(1:定时器的启动与停止受TCON中的 TR0 或 TR1 共同控制)
有2个定时器
不能按位操作(位寻址)
**
TF1: 定时/计数器T1溢出中断标志位。(一般不要管)(0,1)
(当定时器达到预设数值,硬件会自动设为1,并申请中断)
TR1:定时器T1运行控制位,
(1:启动定时器1, 0:关闭定时器1)
小细节:当GATE=1时,需要外部中断1(INT1)同时为高电平才能启动定时器1,GATE=0则不需要
TF0:同上
TF1:同上
IT1:触发方式选择位。(1:低电平触发【没懂】,0:下降沿触发【高电平变为低电平的一瞬间,也就是按下】)
IE1:外部中断1溢出中断标志位。(看IT1的状态)【应该不用管】
(IT1=1时;检测到 下降沿 IE1就会致1,表示正在向CPU申请中断,转向中断程序时,由硬件清0)
(IT1=0时;检测到 低电平 IE1就会致1,表示正在向CPU申请中断,转向中断程序时,由硬件清0)
IT0:同上
IE0:同上
**
void T1_time() interrupt 序号
{
初值
中断服务程序
}
不管当前在干什么,只要触发中断(发送\接收),就执行内容