美文网首页
单片机中断

单片机中断

作者: 又是那一片天 | 来源:发表于2017-11-07 17:23 被阅读0次

    寄存器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;//触发条件为下降沿
    }
    
    
    对应中断号
    • 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寄存器配置计数定时器:

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

    定时计数器中断使用:

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

    相关文章

      网友评论

          本文标题:单片机中断

          本文链接:https://www.haomeiwen.com/subject/egdjmxtx.html