单片机中断

寄存器IE(8位):对单片机系统所有中断以及某个中断源的开放和屏蔽的控制

寄存器IE
  • EX0(IE.0),外部中断0允许位;
  • ET0(IE.1),定时/计数器T0中断允许位;
  • EX1(IE.2),外部中断0允许位;
  • ET1(IE.3),定时/计数器T1中断允许位;
  • ES(IE.4),串行口中断允许位;
  • EA (IE.7), CPU中断允许(总允许)位(是否使用cpu中断)

TCON寄存器(8位):控制外部中断的触发条件(电平触发或下降沿出发),控制定时计数器溢出中断请求标志位

TCON寄存器
  • IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。
  • IE0(TCON.1),外部中断0中断请求标志位。用于标识中断出发,或者控制中断出发(1触发 0位触发)
  • IT1(TCON.2),外部中断1触发方式控制位。
  • IE1(TCON.3),外部中断1中断请求标志位。
  • TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
  • TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
  • TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
  • TR0(TCON.4):T0运行控制位,其功能与TR1类同。

外部中断使用:

  • 1打开总中断(EA=1)
  • 2打开对应外部中断允许位(EX0=1)
  • 3设置对应外部中断触发条件(IT0=1)
//外部中断1例子
void init(){
      EA=1;//打开总中断
      EX0=1;//打开外部中断1
      IT0=1;//触发条件为下降沿
}

单片机中断_第1张图片
对应中断号
  • 4根据上表中断号书写对应中断发生时对应的函数
//interrupt 后的数据对应中断号  函数名可以自定义
void name()  interrupt   0  {
    //具体执行
}

定时计数器:独立于cpu工作:

  • 是一个加1计数器。它随着计数器的输入脉冲(机器周期)进行自加1
  • 由高8位和低8位两个寄存器THx和TLx组成(TH0)低位溢出高位加一
  • TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能
  • TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志

CPU时序的有关知识

  • 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)
  • 状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。
  • 机器周期:1个机器周期含6个状态周期,12个振荡周期。
  • 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。
例如:外接晶振为12MHz时,51单片机相关周期的具体值为(us微秒):

振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;

TMOD寄存器配置计数定时器:

单片机中断_第2张图片
TMOD寄存器
  • 低四位用于T0,高四位用于T1
  • 各个四位分别对应:
GATE是门控位:控制定时计数器是否受外部中断源影响; GATE=0只要用软件使TCON寄存器中的TR0或TR1为1,就可以启动定时/计数器工作; GATE=1 同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作
C/T :定时/计数模式选择位。C/T =0为定时模式;C/T =1为计数模式。
M1M0:工作方式设置位。定时/计数器有四种工作方式
单片机中断_第3张图片
工作方式

定时计数器中断使用:

  • 1打开总中断(EA=1)
  • 2打开对应定时计数器中断允许位(ET0=1)
  • 3对TMOD寄存器赋值,以确定T0和T1的工作方式
  • 4计算初值,并将其写入TH0、TL0或TH1、TL1。初值=2^(计时器位数)-(时间单位微秒)*(晶振频率Mzh)/12
  • 5使TR0或TR1置位,启动定时/计数器定时或计数

你可能感兴趣的:(单片机中断)